Telnet登陆网络设备执行命令脚本
# !/usr//bin/python3
# -*- coding:UTF-8 -*- from telnetlib import Telnet
import time, os, datetime, json
import logging class TelnetClient(): def __init__(self):
self.tn = Telnet() def __login_host(self, ip, username, password, enable=None, verbose=True):
try:
self.tn.open(ip, port=23)
except:
logging.warning('%s网络连接失败' % ip)
return False
self.tn.read_until(b'Username:', timeout=1)
self.tn.write(b'\n')
self.tn.write(username.encode() + b'\n')
rely = self.tn.expect([], timeout=1)[2].decode().strip() # 读显
if verbose:
print(rely)
self.tn.read_until(b'Password:', timeout=1)
self.tn.write(password.encode() + b'\n')
rely = self.tn.expect([], timeout=1)[2].decode().strip()
if verbose:
print(rely)
if enable is not None:
self.tn.write(b'enable\n')
self.tn.write(enable.encode() + b'\n')
if verbose:
rely = self.tn.expect([], timeout=1)[2].decode().strip()
print(rely)
time.sleep(1)
time.sleep(2)
rely = self.tn.read_very_eager().decode()
if 'Login invalid' not in rely:
logging.warning('%s登陆成功' % ip)
return True
else:
logging.warning('%s登陆失败,用户名或密码错误' % ip)
return False def __do_cmd(self, cmd, location=None):
if location:
os.system('mkdir backup\\{}'.format(location))
with open('backup/{}/configuration_{}.txt'.format(location, datetime.date.today()), 'w') as f:
self.tn.write(cmd.encode().strip() + b'\n')
time.sleep(3)
rescmd = self.tn.read_very_eager().decode()
f.write(rescmd)
logging.warning('命令执行结果:\n %s' % rescmd)
return True
else:
os.system('mkdir backup')
with open('backup/configuration_{}.txt'.format(location, datetime.date.today()), 'w') as f:
self.tn.write(cmd.encode().strip() + b'\n')
time.sleep(3)
rescmd = self.tn.read_very_eager().decode()
f.write(rescmd)
logging.warning('命令执行结果:\n %s' % rescmd)
return True def telnet_login(self, ip, user, pwd, enable=None, cmd=None, location=None):
res1 = self.__login_host(ip, user, pwd, enable)
if res1:
for i in cmd.split(';'):
self.__do_cmd(i, location)
self.__logout_host()
return True
else:
self.__logout_host()
return False def __logout_host(self):
self.tn.close() if __name__ == '__main__':
username = 'cisco' # 用户名
password = 'cisco' # 密码
# 存放设备登陆信息和要执行的命令(多条命令用;隔开),示例:["ip", "username", "password", "enable_password", "terminal length 0;show run", "backup_path"]
lists = 'list.text'
with open('test.txt', 'rt', encoding='utf-8') as list_obj:
# textline = list_obj.readline()
# while textline != '':
# print(json.loads(textline))
# textline = list_obj.readline()
telnet_client = TelnetClient()
for line in list_obj:
hostmsg = json.loads(line)
telnet_client.telnet_login(hostmsg[0], hostmsg[1], hostmsg[2], hostmsg[3], hostmsg[4])
常见网络设备命令结果全部显示
<H3C> screen-length disable # no screen-length disable (华三)
Cisco# terminal length 0 # terminal no length (思科)
MaiPu# more off # more on (迈普)
<HuaWei> screen-length 0 temporary # undo screen-length temporary (华为)
RuiJie# terminal length 0 # terminal no length (锐捷)
ZTE# terminal length 0 # no terminal length (中兴)
常见网络设备巡检命令
https://blog.csdn.net/qq_46417230/article/details/122336116
Telnet登陆网络设备执行命令脚本的更多相关文章
- expect实现远程主机自动执行命令脚本
2014年第一个脚本,哈哈!!! expect实现远程主机自动执行命令脚本: #!/usr/bin/expect -- if { [llength $argv] < 4 } { puts &qu ...
- Python-SSH批量登陆并执行命令
Python-SSH批量登陆并执行命令 #!/usr/bin/env python #-*- coding:utf-8 -*- import paramiko from time import cti ...
- Shell下通过echo+telnet在远端执行命令
创建脚本cmd.sh,用于输入telnet的用户与密码,以及生成远端需要执行的命令 执行命令 MY_SIGN=/tmp/sign; (sh cmd.sh ) | (telnet localhost ...
- webshell下执行命令脚本汇集
cmd1.asp <object runat=server id=shell scope=page classid="clsid:72C24DD5-D70A-438B-8A42-984 ...
- shell中使用expect命令进行远程执行命令脚本
expect是用来实现自动交互功能的工具之一,使用expect-send来实现交互过程. 注意: 1.脚本的执行方法与bash shell不一样,比如:expect example.sh 2.向一个脚 ...
- ssh登陆并执行命令不退出
如果希望SSH登陆后先执行shell命令,可以这样: ssh user@ip -t "cd /data ; /bin/bash"
- Mysq登陆后执行命令提示You must SET PASSWORD before executing this statement
mysql 安装完成后,在输入命令行时,提示:You must SET PASSWORD before executing this statement 提示必须设置密码,我想不是已经设置了密码吗? ...
- ssh 免交互登录 ,远程执行命令脚本。
##免交互SSH登录auto_login_ssh () { expect -c "set timeout -1; spawn -noecho ssh -o ...
- linux关机时候执行命令脚本或程序
Write a service file and place it in /etc/systemd/system/beforeshuttingdown.service code: [Unit] Des ...
- 使用paramiko远程登录并执行命令脚本
#!/usr/bin/env python #coding=utf-8 import paramiko, getpass,sys,traceback class ssh_utils(): def lo ...
随机推荐
- python编写程序练习-车牌摇号程序
import random import string count = 0 #设定计数器 car_numbers = [] # 创建一个列表,用来接收生产的车牌号池 while coun ...
- 一个厂区宿舍管理后台密码爆破 - selenium版
title: 某厂区宿舍管理后台密码爆破-selenium测试 author: 杨晓东 permalink: 某厂区宿舍管理后台密码爆破-selenium测试 date: 2021-10-02 11: ...
- Java内存分析利器——Eclipse Memory Analyzer工具的使用
一.如何下载Java程序的dump内存文件并离线导入到MemoryAnalyser工具进行分析 1.jps查看Java应用的pid jps 11584216168084 Launcher24792 ...
- LinuxK8S集群搭建三(部署dashboard)
系统环境: CentOS 7 64位 准备工作: 通过虚拟机创建三台CentOS服务器,可参照之前的文章192.168.28.128 --master192.168.28.130 --node0119 ...
- python 操作配置文件(configparser模块)
用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser 配置文件信息: [DEFAULT] ServerAliveInterval = 45 Com ...
- macOS 系统安装提示应用程序副本已损坏的解决方法
错误预览: 操作方法,关闭Wi-Fi,网线(以修改时间为 2020 为例): 再次尝试安装吧...
- nuxt 服务端渲染注意事项
1.路由 nuxt按照 pages 文件夹的目录结构自动生成路由 http://localhost:3000/user/reg 相当于 去访问 pages文件夹 下的 user文件夹 下的 reg.v ...
- js 监听 变量变化
var o = {};setTimeout(function () { o.abb = '2';}, 4000);Object.defineProperties(o, { abb: { configu ...
- ubantu下的java的发布
1.先检查是否安装过 java version 2.卸载的命令 sudo apt-get remove openjdk* 3.创建存放jdk的目录 sudo mkdir /usr/lib/jvm 4. ...
- PHP_工厂模式
实例化类,先需要引入类文件,但是有时候我们并不知道可能要用到那些类,如果将所有类文件全部引入,会造成资源浪费,这时候可以采用工厂模式,专门用于 自动加载.实例化 类. 实例代码: 注:案例中假设有一个 ...