python语言中导入模块的方法(网工Python之路之paramiko模块实验)(1)

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

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

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

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

首先咱们看下思科的实验:平台工具:实验拓扑:

注意:

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

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

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(2)

实验目的:

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

2、用上面的方法登录所有交换机,开启 EIGRP,然后查看状态。

准备条件:

1、实验拓扑中,LSW5 的管理地址从 192.168.242.15 改成 192.168.242.55(见实验拓扑图)。

2、创建一个名为 ip_list.txt 的文件,把 LSW1 到 LSW5 交换机的管理 IP 地址放进去。

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(3)

实验环境配置

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

初始化 1.配置hostname 和domain-name hostname LSW1 ip 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

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(4)

实验前检查

1、按之前实验套路,对 LSW1 到 LSW5 逐一检查 PC 到 LSW1 至 LSW5 的网络连通性,如不通需要排网络,本文此处描述从简。

2、检查 LSW1 至 LSW5 当前是否开启EIGRP,命令如下, inc 后为关键字匹配,其实也可以匹配 -------,这个大家随意发挥,能找出来"EIGRP"就好。

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(5)

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

Python 代码

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

import paramiko import time import getpass username = input("Username: ") password = getpass.getpass("Password: ") # 此时 ip_list.txt 需要与 lab3.py 在相同的文件夹中 f = open('ip_list.txt') for line in f.readlines(): 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) command = ssh_client.invoke_shell() print('=-=-=-=-=-=-=-=-=-=-=-=-=-=') print('已经成功登陆交换机 LSW-' ip) # 关闭分屏功能 command.send('terminal length 0 \n') #向交换机发送指令 # 进入特权模式 command.send('en\n') # 进入全局模式 command.send('conf t\n') # 将开启eigrp并宣告网段 command.send('router eigrp 1\n') command.send('net 192.168.242.0 \n') time.sleep(2) command.send('end\n') command.send('wr\n') time.sleep(2) output = command.recv(65535).decode('ASCII') print(output) ssh_client.close()

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(6)

执行脚本文件:

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(7)

好了,代码执行完成回显,如上图显示。

实验结果检测

查看各设备EIGRP情况。以LSW1为例就不逐一检测了。

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(8)

可以看到eigrp已经配置,邻居关系也可以看到。实验小结

本实验主要实现脚本调去外部文件,其实 交换机 IP 可以用文件 ip_list.txt 装起来,那么咱们的设备指令,是不是也可以用 commnd_list.txt 装起来呢?

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(9)

再来看看@朱嘉盛大佬带来的华为实验:平台工具:实验拓扑:

注意:

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

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

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(10)

实验目的:

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

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

准备条件:

1、实验拓扑中,LSW5 的管理地址从 192.168.242.15 改成 192.168.242.55(见实验拓扑图)。

2、创建一个名为 ip_list.txt 的文件,把 LSW1 到 LSW5 交换机的管理 IP 地址放进去。

3、创建一个名为commnd_list.txt的文件,放置需要配置的命令。

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(11)

实验环境配置

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

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

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(12)

实验前检查

1、按之前实验套路,对 LSW1 到 LSW5 逐一检查 PC 到 LSW1 至 LSW5 的网络连通性,如不通需要排网络,本文此处描述从简。

2、检查 LSW1 至 LSW5 当前的 STP 模式,命令如下, inc 后为关键字匹配,其实也可以匹配 -------,这个大家随意发挥,能找出来"MSTP"就好。

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(13)

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

Python 代码

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

import paramiko import time import getpass username = input("Username: ") password = getpass.getpass("Password: ") # 此时 ip_list.txt 需要与 lab3.py 在相同的文件夹中 f = open('ip_list.txt') for line in f.readlines(): 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) command = ssh_client.invoke_shell() print('=-=-=-=-=-=-=-=-=-=-=-=-=-=') print('已经成功登陆交换机 LSW-' ip) l = open('commnd_list.txt','r') l.seek(0) for line in l.readlines(): comm = line.strip() command.send(comm '\n') time.sleep(2) output = command.recv(65535).decode('ASCII') print(output) ssh_client.close()

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(14)

执行脚本文件:

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(15)

好了,代码执行完成回显,如上图显示。

实验结果检测

检查 LSW1 至 LSW5 当前的 STP 模式,命令如下, inc 后为关键字匹配,其实也可以匹配 -------,这个大家随意发挥,能找出来"STP"就好。以LSW1为例查看。

python语言中导入模块的方法(网工Python之路之paramiko模块实验)(16)

实验小结

本实验主要实现脚本调去外部文件,来实现所需功能的配置。

,