网工Python之路之paramiko 模块实验(五)异常处理

  • A+
所属分类:安全闲碎

【文末赠书】

网工Python之路之paramiko 模块实验(五)异常处理

感谢知乎两位大佬:@弈心和@朱嘉盛

@弈心大佬的实验主要是基于 linux 系统、思科设备或 GNS3 模拟器完成。

@朱嘉盛大佬考虑到当前在国内华为较为主流,也用 Windows 系统,尝试用华为的真机或者 eNSP 模拟器,把书中提及的实验做一做,方便大家学习记录,方便交流。

小编这里采用eve-ng+liunx来模拟实践思科部分的实验效果,以及采用ensp+windows复现一遍华为的实验。


思科实验:

平台工具:
  • 实验平台:WIN10

  • 使用工具:Evn-ng、python 3.6.8


实验拓扑:

注意:

书中使用了 192.168.2.0/24 ,我这里才有eve桥接的虚拟网段192.168.242.0/24来演示本次实验。

【SSH 服务端】LSW x,IP为 192.168.242.1x/24,连接到透明交换机SW1。 


网工Python之路之paramiko 模块实验(五)异常处理

实验目的:


1、在生产环境中,交换机的管理 IP 基本不可能像实验环境中这样 11 到 15,有些交换机的管理 IP 甚至在不同的网段,这种情况下,我们就不能简单的用 for loop 来循环 IP 地址的最后一段来登录交换机。这里我们要额外开一个文本文件,把我们需要登录的交换机 IP 全部写进去,然后用 for loop 配合 open() 函数来批量登录所有交换机。(抄书的哈) 

2、用上面的方法登录所有交换机,把华为交换机默认的 MSTP 修改成 STP。

实验准备:

LSW2 的 E0/0 进行 shutdown,模拟上联链路故障(拓扑端口也变红。)

网工Python之路之paramiko 模块实验(五)异常处理

LSW3 的用户 python 密码由 123 改为 456。

网工Python之路之paramiko 模块实验(五)异常处理

我们在实验4脚本基础上拿过来试跑一下,在 ip.txt 先剔除掉 LSW3 (192.168.242.13)的信息,针对性的观察断链了的 LSW2。

网工Python之路之paramiko 模块实验(五)异常处理

【实验4】脚本试跑结果,主要针对 LSW2 的不可达异常情况。

网工Python之路之paramiko 模块实验(五)异常处理

接着,我们把【实验4】脚本拿过来再试跑一下,在 ip.txt 先剔除掉 LSW2 (192.168.242.12)的信息,针对性的观察断链了的 LSW3。

网工Python之路之paramiko 模块实验(五)异常处理

【实验4】脚本试跑结果,主要针对 LSW3 的认证异常情况。


网工Python之路之paramiko 模块实验(五)异常处理

实验环境配置

按照拓扑,每台交换机 vlan 1 都配置 vlanif 的 IP 作为管理。(附 LSW1 的配置,如 LSW2 则仅为将 192.168.242.11 改为 192.168.242.12,这里从简。)


初始化1.配置hostname 和domain-namehostname  LSW1ip  domain-name  shiranit.com
2.产生密钥,产生1024位的密钥crypto key generate rsa general-keys modulus 1024
3.配置sssh的信息会话超时时间ip ssh time-out 120最大认证次数ip ssh authentication-retries 3启用ssh和telnet认证line vty 0 4 transport input ssh telnet login local
4.本地认证用户 enable passwod 123 username python privilege 15 password 123 PS: privilege 15这么设置是为了免去登陆时输入enable密码
5.配置管理地址 interface Vlan 1 ip address 192.168.242.11 255.255.255.0

更多精彩内容关注“释然IT杂谈”

Python 代码

代码讲解,大神在书里和专栏中已逐条做了解释

import paramikoimport timeimport getpassimport sysimport socket
username = input("Username: ")password = getpass.getpass("Password: ")ip_file = sys.argv[1]cmd_file = sys.argv[2]
# 存放认证失败的设备信息switch_with_authentication_issue = []# 存放网络不通的设备信息switch_not_reachable = []
iplist = open(ip_file,'r')for line in iplist.readlines(): try: ip = line.strip() ssh_client = paramiko.SSHClient() ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh_client.connect(hostname=ip,username=username, password=password,look_for_keys=False) print('=-=-=-=-=-=-=-=-=-=-=-=-=-=') print('已经成功登陆交换机 ' + ip) command = ssh_client.invoke_shell() cmdlist = open(cmd_file,'r') cmdlist.seek(0) for line in cmdlist.readlines(): each_command = line.strip() command.send(each_command + 'n') time.sleep(0.5) cmdlist.close() output = command.recv(65535).decode('ASCII') print(output) except paramiko.ssh_exception.AuthenticationException: print(ip + "用户验证失败!") switch_with_authentication_issue.append(ip) except socket.error: print(ip + "目标不可达!") switch_not_reachable.append(ip)
iplist.close()ssh_client.close()
print('n 下列交换机用户验证失败:')for i in switch_with_authentication_issue: print(i)
print('n 下列交换机不可达:')for i in switch_not_reachable: print(i)

网工Python之路之paramiko 模块实验(五)异常处理

实验过程

我们把 ip.txt 列表倒回成所有网元 IP。

网工Python之路之paramiko 模块实验(五)异常处理

我们直接 运行过程截图如下。

网工Python之路之paramiko 模块实验(五)异常处理


华为实验:

平台工具:
  • 实验平台:WIN10

  • 使用工具:eNSP v1.3.00.100、python 3.7.3


实验拓扑:

注意:

书中使用了 192.168.2.0/24 ,我这里才有eve桥接的虚拟网段192.168.242.0/24来演示本次实验。

【SSH 服务端】LSW x,IP为 192.168.242.1x/24,连接到透明交换机SW1。 


网工Python之路之paramiko 模块实验(五)异常处理

实验目的:


1、在生产环境中,交换机的管理 IP 基本不可能像实验环境中这样 11 到 15,有些交换机的管理 IP 甚至在不同的网段,这种情况下,我们就不能简单的用 for loop 来循环 IP 地址的最后一段来登录交换机。这里我们要额外开一个文本文件,把我们需要登录的交换机 IP 全部写进去,然后用 for loop 配合 open() 函数来批量登录所有交换机。(抄书的哈) 

2、用上面的方法登录所有交换机,把华为交换机默认的 MSTP 修改成 STP。

实验准备:

LSW2 的 GE0/0/1 进行 shutdown,模拟上联链路故障(拓扑端口也变红。)

网工Python之路之paramiko 模块实验(五)异常处理

LSW3 的用户 python 密码由 123 改为 456。

网工Python之路之paramiko 模块实验(五)异常处理

我们在实验4脚本基础上拿过来试跑一下,在 ip.txt 先剔除掉 LSW3 (192.168.242.13)的信息,针对性的观察断链了的 LSW2。

网工Python之路之paramiko 模块实验(五)异常处理

【实验4】脚本试跑结果,主要针对 LSW2 的不可达异常情况。

网工Python之路之paramiko 模块实验(五)异常处理

接着,我们把【实验4】脚本拿过来再试跑一下,在 ip.txt 先剔除掉 LSW2 (192.168.242.12)的信息,针对性的观察断链了的 LSW3。

网工Python之路之paramiko 模块实验(五)异常处理

【实验4】脚本试跑结果,主要针对 LSW3 的认证异常情况。


网工Python之路之paramiko 模块实验(五)异常处理

实验环境配置

按照拓扑,每台交换机 vlan 1 都配置 vlanif 的 IP 作为管理。(附 LSW1 的配置,如 LSW2 则仅为将 192.168.242.11 改为 192.168.242.12,这里从简。)


sysname LSW1
aaa# 密码明文 123 local-user python password cipher #*C>*$C`S!INZPO3JBXBHA!! local-user python privilege level 3 local-user python service-type ssh
interface Vlanif1 ip address 192.168.11.11 255.255.255.0
stelnet server enable# 下面这条很关键,我一开始没配置这条,一直 ssh 反馈有错误。# 模拟器的产品手册说这条是默认值,但测试后需要手动配置。ssh authentication-type default password
user-interface vty 0 4 authentication-mode aaa protocol inbound ssh

更多精彩内容关注“释然IT杂谈”

Python 代码

代码讲解,大神在书里和专栏中已逐条做了解释

import paramikoimport timeimport getpassimport sysimport socket
username = input("Username: ")password = getpass.getpass("Password: ")ip_file = sys.argv[1]cmd_file = sys.argv[2]
# 存放认证失败的设备信息switch_with_authentication_issue = []# 存放网络不通的设备信息switch_not_reachable = []
iplist = open(ip_file,'r')for line in iplist.readlines(): try: ip = line.strip() ssh_client = paramiko.SSHClient() ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh_client.connect(hostname=ip,username=username, password=password,look_for_keys=False) print('=-=-=-=-=-=-=-=-=-=-=-=-=-=') print('已经成功登陆交换机 ' + ip) command = ssh_client.invoke_shell() cmdlist = open(cmd_file,'r') cmdlist.seek(0) for line in cmdlist.readlines(): each_command = line.strip() command.send(each_command + 'n') time.sleep(0.5) cmdlist.close() output = command.recv(65535).decode('ASCII') print(output) except paramiko.ssh_exception.AuthenticationException: print(ip + "用户验证失败!") switch_with_authentication_issue.append(ip) except socket.error: print(ip + "目标不可达!") switch_not_reachable.append(ip)
iplist.close()ssh_client.close()
print('n 下列交换机用户验证失败:')for i in switch_with_authentication_issue: print(i)
print('n 下列交换机不可达:')for i in switch_not_reachable: print(i)

网工Python之路之paramiko 模块实验(五)异常处理


实验过程

我们把 ip.txt 列表倒回成所有网元 IP。

网工Python之路之paramiko 模块实验(五)异常处理

我们直接 在CMD 上进入目录执行,运行过程截图如下。

网工Python之路之paramiko 模块实验(五)异常处理


更多精彩推荐:


网工Python之路之paramiko 模块实验(四)分组操作

网工Python之路之paramiko 模块实验(三)读取文件

网工Python之路之paramiko 模块实验(二)循环遍历    

网工Python之路之paramiko 模块实验(一)初来乍到

网工Python之路之基础笔记(一)

运维Python自动化之路:基础信息模块之psutil模块

运维Python自动化之路:基础信息模块之IPy模块

用python实现快速ping网段

python实用脚本:网络设备批量调试及备份


可去知乎关注两位大佬:

https://www.zhihu.com/column/c_1357111055186104320

https://zhuanlan.zhihu.com/p/34932386


赠书福利
赠送图书名额两个Python编程完全自学教程》&&《精进Office:成为Word/Excel/PPT高手各一本,由「 北京大学出版社」赞助提供 ,感谢北大社一直以来对本号的支持。感兴趣的朋友推荐入手一本。
【点击下方小程序参与】

网工Python之路之paramiko 模块实验(五)异常处理

注意:

需开奖前转发此文案到朋友圈,开奖前不得删文,开奖后24小时内联系小编,过期不候。


网工Python之路之paramiko 模块实验(五)异常处理


网工Python之路之paramiko 模块实验(五)异常处理

【小程序体验】

点击体验吃喝玩乐        

 聚能小课堂         

 去水印小助手

本文始发于微信公众号(释然IT杂谈):网工Python之路之paramiko 模块实验(五)异常处理

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: