前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网工Python之路之paramiko 模块实验(二)循环遍历

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

作者头像
释然IT杂谈
发布2022-10-27 18:52:53
9900
发布2022-10-27 18:52:53
举报
文章被收录于专栏:释然IT杂谈

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

@弈心大佬的实验主要是基于 linux 系统、思科设备或 GNS3 模拟器完成。这里小编采用eve-ng+linux来模拟。

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

首先咱们看下思科的实验:

平台工具:

  • 实验平台:Linux Centos7
  • 使用工具:EVE-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之路》书中用的是192.168.2.0/24 网段,在书中这个实验叫【实验1】,大神的专栏及视频中叫【实验2】,有强迫症的童鞋别介意= =)

实验目的:

配合 getpass 模块和 input() 函数实现交互式的 SSH 用户名和密码输入。

配合 for loop 同时给 5 台交换机配置 VLAN 11 至 15 。

实验环境配置

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

代码语言:javascript
复制
初始化
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

实验前检查

对LSW1到LSW5逐一进行检查,每台交换机都只有一个默认VLAN.

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

检查 虚拟机Linux到 LSW1 至 LSW5 的网络连通性,如不通需要排网络。(有时候 ping 前几个包会丢包,这个有可能 LSW们刚启动,生成树需要收敛,之后 arp 表项要建立。)

Python 代码

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

代码语言:javascript
复制
# import 导入模块
import paramiko
import time
import getpass

# 定义两个个字符串类型的变量
username = input("Username: ")
password = getpass.getpass("Password: ")

#for循环
for i in range(11,16):
    ip = '192.168.242.' + str(i)
     # 开启SSH会话赋值给变量
    ssh_client = paramiko.SSHClient()
    # 开启可接收陌生的ssh服务会话
    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-' + str(i-10) + ' ' + ip)
    # 关闭分屏功能
    command.send('terminal length 0 \n')
   #向交换机发送指令
    # 进入特权模式
    command.send('en\n')
    # 进入全局模式
    command.send('conf t\n')
   #循环创建vlan
    for i in range(11,16):
        print('正在创建 VLAN :' + str(i))
        command.send('vlan ' + str(i) + '\n')
        time.sleep(1)
        command.send('name Python_Vlan' + str(i) + '\n')
        time.sleep(1)
    command.send('end\n')
    command.send('wr\n')
  # 延时2秒
    time.sleep(2)
# 设置截屏长度并打印出来
    output = command.recv(65535).decode('ASCII')
    print(output)
# 退出ssh会话
ssh_client.close()

执行脚本文件:

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

实验结果检测

之后我们可以去每台 LSW 检查 VLAN 信息,查看是否自动建立好了,来验证 python 脚本的操作。

实验小结

怎样?能实现脚本下发自动配置,比手工敲指令是不是效率高很多。哈哈。但实际现网生产环境目前来看比较难随意部署这些玩意(安全原因)。不过这丝毫不影响咱们做实验和学习技能呀。

在实验过程中,python 脚本建 vlan ,然后咱们要重复实验,就得手工把 vlan 都删掉,25个vlan 操作有点累哈,其实同样可以写个脚本把 建的 VLAN 给删除掉。我已经写了,代码我就不贴上来了哈,要不您试试看?

交换机上查看已经删除掉了

再来看看@朱嘉盛大佬带来的华为实验:

平台工具:

  • 实验平台:WIN10
  • 使用工具:eNSP v1.3.00.100、python 3.7.3

注意:

1、eNSP 模拟器目前官方暂时下架了,网上不难找,据说官方在开发新的更强大的版本ing。

2、Python 用 3.9 还是 3.7 的关系不大。

3、如果我们从零开始的话,就先不用什么集成开发环境,先用 Python 自带的编辑器,从最简单的开启,一点一点慢慢积累沉淀。

实验拓扑:

【SSH 客户端】Win10 虚拟网卡,IP 为 192.168.242.1/24,桥接到云彩,Python所在。 【透明交换机】SW1(启动即可,无需配置,给云彩扩展端口使用)。

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

(注:《网络工程师的Python之路》书中用的是192.168.2.0/24 网段,在书中这个实验叫【实验1】,大神的专栏及视频中叫【实验2】,有强迫症的童鞋别介意= =)

实验目的:

配合 getpass 模块和 input() 函数实现交互式的 SSH 用户名和密码输入。

配合 for loop 同时给 5 台交换机配置 VLAN 10 至 20 。

实验环境配置

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

代码语言:javascript
复制
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

实验前检查

检查网络连通性(PC ping 测 192.168.242.11-15),打开 cmd,执行 ping 192.168.242.11。

Python 代码

代码讲解,大神在书里和专栏中已逐条做了解释,我做的主要目标是把大神的 linux+思科设备,转成 windows + 华为设备。

代码语言:javascript
复制
#import 导包
import paramiko
import time
import getpass
#定义两个字符串变量
username = input("Username: ")
password = getpass.getpass("Password: ")

for i in range(11,16):
    ip = '192.168.242.' + str(i)

    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('已经成功登陆交换机 Layer3Switch-' + str(i-10) + ' ' + ip)
    # 关闭分屏功能
    command.send('screen-length 0 temporary\n')
    # 进入系统视图
    command.send('sys\n')

    for i in range(11,16):
        print('正在创建 VLAN :' + str(i))
        command.send('vlan ' + str(i) + '\n')
        time.sleep(1)
        command.send('desc Python_Vlan' + str(i) + '\n')
        time.sleep(0.5)
    command.send('return\n')
    command.send('save\n')
    command.send('Y\n')
    time.sleep(2)
    output = command.recv(65535).decode('ASCII')
    print(output)

ssh_client.close()

执行脚本:

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

实验结果检测

之后我们可以去每台 LSW 检查 VLAN 信息,查看是否自动建立好了,来验证 python 脚本的操作。

在此以LSW1为例查看效果。

实验小结

怎样?能实现脚本下发自动配置,比手工敲指令是不是效率高很多。哈哈。但实际现网生产环境目前来看比较难随意部署这些玩意(安全原因)。不过这丝毫不影响咱们做实验和学习技能呀。

在实验过程中,python 脚本建 vlan ,然后咱们要重复实验,就得手工把 vlan 都删掉,25个vlan 操作有点累哈,其实同样可以写个脚本把 建的 VLAN 给删除掉。我已经写了,代码我就不贴上来了哈,要不您试试看?

在LSW1查看VLAN是否还存在:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 释然IT杂谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验目的:
  • 实验环境配置
  • 实验前检查
  • Python 代码
  • 实验小结
  • 实验环境配置
  • 实验前检查
  • Python 代码
  • 实验小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档