当前位置: 首页 > news >正文

国家电力安全网站两学一做上海seo优化公司

国家电力安全网站两学一做,上海seo优化公司,岳阳新闻网,武汉企业招聘信息最新招聘1、Telnetlib模块: 支持telnet/ssh远程访问的模块很多,常见的有telnetlib、ciscolib、paramiko、netmiko、pexpect,其中telnetlib和ciscolib对应telnet协议,后面3个对应SSH协议。 ①-通过ENSP环境搭建实验环境 ②-基础语法-telnetlib案例1&…

1、Telnetlib模块:

支持telnet/ssh远程访问的模块很多,常见的有telnetlib、ciscolib、paramiko、netmiko、pexpect,其中telnetlib和ciscolib对应telnet协议,后面3个对应SSH协议。

①-通过ENSP环境搭建实验环境

②-基础语法-telnetlib案例1:

注意:python3中,telnetlib模块下所有的返回值都是字节流,而默认输入的都是普通字符串str,因此在python3中使用tlenetlib需要注意:

①在字符串的前面需要加上一个b; 转换成字节流

②在变量和tlentlib函数后面需要加上.encode('ascii')函数 进行解码

③在read_all()函数后面需要加上decode('ascii')函数

import telnetlib
import timehost = '192.168.2.11'
user = '111'
password = '111'
#执行telnet 并输入用户名和密码
tn = telnetlib.Telnet(host,port=23,timeout=1)  #tn实例化函数   telnet设备ip地址,(端口号,超时时间也可以不写,默认即可)
tn.read_until(b"Username",timeout=1)           #read函数  读取设备返回的Username字符串
tn.write(user.encode('ascii') + b'\n')         #将用户名转为ascii编码方式将字符串转换为bytes  \n回车
tn.read_until(b"Password:",timeout=1)
tn.write(password.encode('ascii') + b'\n')
print('已登录进设备'+ host)tn.write(b"sys\n")  #写入命令
tn.write(b"int loopback 1\n")
tn.write(b"ip address 1.1.1.1 32\n")
tn.write(b"quit\n")
tn.write(b"quit\n")
tn.write(b"save\n")
tn.write(b"y\n")time.sleep(2)   #时间模块,暂停2s  等待设备响应
output = (tn.read_very_eager().decode("ascii"))   #输出结果区域
print(output)
tn.close()

③-登录多台设备(for 循环)-telnetlib案例2:

通过列表添加设备ip,然后for循环调用执行

import telnetlib
import timehosts =['192.168.2.11','192.168.2.12','192.168.2.13','192.168.2.14','192.168.2.15','192.168.2.16']
user = '111'
password = '111'for ip in hosts:                    #循环执行hosts列表tn = telnetlib.Telnet(ip)      #tn实例化函数   telnet设备ip地址,(端口号,超时时间也可以不写,默认即可)tn.read_until(b"Username:")      #read函数  读取设备返回的Username字符串tn.write(user.encode('ascii') + b'\n')          #将用户名转为ascii编码方式将字符串转换为bytes  \n回车tn.read_until(b"Password:",timeout=1)tn.write(password.encode('ascii') + b'\n')print('已登录进设备'+ ip)tn.write(b"sys\n")  #写入命令tn.write(b"int loopback 1\n")tn.write(b"ip address 1.1.1.1 32\n")tn.write(b"quit\n")tn.write(b"quit\n")tn.write(b"save\n")tn.write(b"y\n")time.sleep(2)   #时间模块,暂停2s  等待设备响应output = (tn.read_very_eager().decode("ascii"))   #输出结果区域   转为ascii编码方式将字符串转换为bytesprint(output)tn.close()

④-循环执行多条命令-telnetlib案例3:

定义主机ip列表

定义命令字符串列表

然后for循环执行以上列表

import telnetlib
import timehosts =['192.168.2.11','192.168.2.12','192.168.2.13','192.168.2.14','192.168.2.15','192.168.2.16']  #s表示列表
user = '111'
password = '111'
commands = ['sys','int loopback 1','ip address 1.1.1.1 32','quit','quit','save','y']   #相当于把命令刷到文档里,s表示列表for ip in hosts:tn = telnetlib.Telnet(ip)                #tn实例化函数   telnet设备ip地址,(端口号,超时时间也可以不写,默认即可)tn.read_until(b"Username:")              #read函数  读取设备返回的Username字符串tn.write(user.encode('ascii') + b'\n')   #将用户名转为ascii编码方式将字符串转换为bytes  \n回车tn.read_until(b"Password:",timeout=1)tn.write(password.encode('ascii') + b'\n')print('已登录进设备'+ ip)for command in commands:tn.write(command.encode('ascii')+b'\n')   #循环调用commands内的命令time.sleep(2)   #时间模块,暂停2s  等待设备响应output = (tn.read_very_eager().decode("ascii"))   #输出结果区域print(output)tn.close()

⑤-异常处理-telnetlib案例:

增加异常处理,防止某台交换机登录失败,导致程序中断

import telnetlib
import timehosts =['192.168.2.11','192.168.2.12','192.168.2.13','192.168.2.14','192.168.2.15','192.168.2.16']  #s表示列表
user = '111'
password = '111'
commands = ['sys','int loopback 1','ip address 1.1.1.1 32','quit','quit','save','y']   #相当于把命令刷到文档里,s表示列表
Error= []                          #创建Error队列
for ip in hosts:                   #循环登录iptry:tn = telnetlib.Telnet(ip)       #tn实例化函数   telnet设备ip地址tn.read_until(b"Username:",timeout=1)     #read函数  读取设备返回的Username字符串tn.write(user.encode('ascii') + b'\n')    #将用户名转为ascii编码方式将字符串转换为bytes  \n回车tn.read_until(b"Password:",timeout=1)tn.write(password.encode('ascii') + b'\n')print('已登录进设备'+ ip)for command in commands:tn.write(command.encode('ascii')+b'\n')  #循环调用commands内的命令time.sleep(2)   #时间模块,暂停2s  等待设备响应output = (tn.read_very_eager().decode("ascii"))   #输出结果区域print(output)tn.close()except:    #只要登录错误都按如下打印
#   except TimeoutError:  # 只会处理timeoutError的错误print("登录失败,登录超时的设备IP:"+ip )Error.append(ip)       #append添加,附加,将失败的ip添加到Error的列表
print(Error)           #打印失败的设备ip

连接异常和密码错误异常 处理判断

⑥-通过文本读取IP和命令-telnetlib案例:

将ip地址或者命令放在txt文本文件中,通过脚本读取文本文件

import telnetlib
import timehosts = open('hosts.txt','r')  #使用open函数  打开文本,并read 读取
user = '111'
password = '111'
commands = open('commands.txt','r')
ConnectionError= []    #连接失败的列表for ip in hosts.readlines():                   #readline 逐行读取文本文件try:ip =ip.strip()       #strip函数可以去除文本中的回车和空格tn = telnetlib.Telnet(ip)       #tn实例化函数   telnet设备ip地址tn.read_until(b"Username:")     #read函数  读取设备返回的Username字符串tn.write(user.encode('ascii') + b'\n')    #将用户名转为ascii编码方式将字符串转换为bytes  \n回车tn.read_until(b"Password:")tn.write(password.encode('ascii') + b'\n')print('已登录进设备'+ ip)#print(f'已登录进设备:{ip}')commands.seek(0)           #光标每次读取完都会在最后,需要用seek函数将光标置于最前面for command in commands.readlines():tn.write(command.encode('ascii')+b'\n')       #循环调用commands内的命令time.sleep(2)output = (tn.read_very_eager()).decode("ascii")   #输出结果区域print(output)tn.close()except:                           #只要登录错误都按如下打印print("##########登录失败,登录超时的设备IP:"+ip+'##########' )ConnectionError.append(ip)    #append添加,附加,将失败的ip添加到ConnectionError的列表
print(ConnectionError)     

⑦-封装成函数解决问题-telnetlib案例:

将telnetlib封装成函数,方便小规模灵活应用,便于调用,同时增加input输入用户名和密码。允许部分交换机用户名和密码不同。

import telnetlib
import timecommands = open('commands.txt','r')
ConnectionError= []
AuthenFaill= []def Telnet (host,username=input('请输入用户名:'),password=input('请输入密码:'),port=23):    #封装定义函数,定义host  username passwordtry:tn = telnetlib.Telnet(host)       #tn实例化函数   telnet设备ip地址tn.read_until(b"Username:")     #read函数  读取设备返回的Username字符串tn.write(username.encode('ascii') + b'\n')    #将用户名转为ascii编码方式将字符串转换为bytes  \n回车tn.read_until(b"Password:")tn.write(password.encode('ascii') + b'\n')index,obj,oup=tn.expect([b'Info',b'Error'],timeout=1)if index ==0:print('已经成功登录设备'+host)elif index == 1:print('设备用户或密码错误'+host)AuthenFaill.append(host)commands.seek(0)           #光标每次读取完都会在最后,需要用seek函数将光标置于最前面for command in commands.readlines():tn.write(command.encode('ascii')+b'\n')       #循环调用commands内的命令time.sleep(2)output = (tn.read_very_eager()).decode("ascii")   #输出结果区域print(output)tn.close()except :print("连接异常失败IP:"+host)ConnectionError.append(host)    #append添加,附加,将失败的ip添加到ConnectionError的列表Telnet('192.168.2.11')
Telnet('192.168.2.12')
Telnet('192.168.2.13',username='root',password='roo111')    #如果此台主机密码不同于其他,可以直接赋予正确的密码
Telnet('192.168.2.14')
Telnet('192.168.2.15')
Telnet('192.168.2.16')print('-'*100)
print('认证失败的设备如下:')
print(AuthenFaill)
print('-'*100)
print('连接异常的设备如下:')
print(ConnectionError)

⑧-ping案例:

可以使用os.system或者subprocess模块实现ping检测 


import os
ip ='192.168.1.1'
response =os.system('ping -n 1 '+ip)   #发1包if response ==0:print(ip,'is up!')
else:print(ip,'is down!')

或者

import os
host = ['192.168.1.1']
for ip in host:try:ping_result = os.system(f"ping -n 1 {ip}")if ping_result == 0:print(f"{ip} 连通性正常")else:print(f"{ip} 连通性异常")except Exception as e:print("检查 {ip} 连通性时出现异常:{e}")

或者

import subprocess   #subprocess模块执行ping命令(只返回结果不返回打印)
host = ['192.168.1.1']
for ip in host:try:command = ['ping', '-n', str(1), ip]result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)#朱提部分subprocess.run执行命令,捕获输出但不打印if result.returncode == 0:  #检查是否执行成功print('ok')else:print('pok')#print('pok',result.stderr) 如果需要可以打印错误信息except Exception as e:print("检查 {ip} 连通性时出现异常:{e}")

http://www.hrbkazy.com/news/21633.html

相关文章:

  • 盘锦做网站价格学营销app哪个更好
  • 国内十大网站建设品牌南昌网站设计
  • H5响应式网站数据百度投诉中心电话24个小时
  • 做音乐网站代码如何在百度发布文章
  • 有人做网站推广吗网站内容优化方法
  • 政府网站建设领导讲话稿百度平台我的订单查询在哪里
  • 长沙做网站最好的公司有哪些军事新闻
  • 常熟网站开发网站免费推广的方法
  • 滨州正规网站建设公司深圳网站seo推广
  • 丽水企业网站建设企业网络营销方案设计
  • 备案个人网站国际新闻最新消息今天军事新闻
  • 一键生成论文的网站seo3的空间构型
  • 南宁网站建设公司哪个好网站软文推广范文
  • php在动态网站开发企业推广托管
  • 安防 光速东莞网站建设百度云搜索引擎入口官网
  • 桂林网站推广互联网营销方法有哪些
  • 足球直播网站开发定制河南网站优化
  • 广州南沙建设和交通局网站做seo推广一年大概的费用
  • 做网站泉州中国新闻社
  • 自己搭建网站怎么搭建seo指的是搜索引擎营销
  • 廊坊企业网站服务互联网品牌营销公司
  • 汕头代理注册公司seo搜索引擎排名优化
  • 南昌哪里做网站好百度网址安全中心
  • 简洁企业网站坚持
  • 做调查赚钱靠谱的网站预防电信网络诈骗
  • 网站建设费一般多少友情链接的英文
  • java做网站例子seo应该如何做
  • 企业中英文网站开发seo优化方案案例
  • 深圳公明网站建设公司企业网站推广技巧
  • 排版设计网站有哪些360推广客服电话是多少