Python(自动化配置网络设备的前提)

在Python中,模块可以通俗的理解为独立保存好的脚本,它可以通过【import module-name】语句来导入,module-name则代表模块的名称。模块分为Python内建模块和第三方模块,Python内建模块可以直接通过【import module-name】语句导入。第三方模块可以通过【pip install module-name】终端命令安装后再通过【import module-name】语句导入后使用。在网络运维中常用的Python内建模块有os、time、getpass、datetime、re、Telnetlib等,常用的Python第三方模块有Paramiko,Netmiko等。
Python(自动化配置网络设备的前提)_第1张图片1、getpass模块是Python的内建模块之一,它在Python中主要是提供Python的交互式功能,在网络运维中,可以用于提示用户输入密码,通过getpass输入的密码是不可见的,安全性相对较高
1.1通过getpass模块提示用户输入密码并将用户输入的密码赋值给a对象

import getpass
a=getpass.getpass('please input password:')

2、time和datetime模块是python的内建模块之一,它们在Python中主要提供时间相关的功能。time模块可以在网络运维中提供时间戳、格式化时间、时间元组等功能。而datetime模块则重新封装了time模块,它能提供更多功能,如日期、时区等
2.1通过time模块暂停执行程序60S

import time
time.sleep(60)

2.2通过datetime模块将当前时间赋值给a,以日-月-年-时-分的形式回显出来

import datetime import datetime
a=datetime.now()
print "a.day +"-"+a.month+"-"+a.year+" "+a.hour+":"+"a.minute""

3、telnetlib模块主要是支持Python通过telnet协议远程连接设备。它是Python中的内建模块,使用时直接导入即可,无需额外安装,但其在数据传输过程中存在一些安全性问题(如不支持密文传输),因此不太建议在生产网络中使用
3.1通过telnetlib模块的连接IP为192.168.1.1的华为网络设备并发送【system-view】命令进入系统视图。其中telnet用户名为admin,密码为Huawei123

import telnetlib
ip="192.168.1.1"
user="admin"
password="Huawei123"
tn=telnetlib.Telnet(ip)
tn.read_until("Username:")
tn.write(user +"\n")
tn.read_until("Password:")
tn.write(password + "\n")
tn.write("system-view" + "\n")

4、在Python中,安装并导入paramiko模块后可以通过代码实现SSH协议远程连接设备。具有同样效用的模块还有netmiko。netmiko模块主要是在paramiko的基础上进行了优化,如增加厂商支持、增加命令补全功能等
4.1通过Paramiko模块连接IP为192.168.1.1的华为网络设备并发送【system-view】命令进入系统视图。其中SSH用户名为admin,密码为Huawei1234

import paramiko
username ="admin"
password ="Huawei1234"
ip="192.168.1.1"
ssh_client=paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip,username=username,password=password)
command=ssh_client.invoke_shell()
command.send("system-view" +"\n")

5、在日常的网络运维中,网络工程师也是需要文本文件配合工作,如用于批量配置网络设备的命令模板文件,存放所有网络设备IP地址、备份网络设备运行配置信息命令【display current-configuration】输出的结果等等,Python的内建模块os模块可以实现以上功能,常用的os模块中的函数有open()函数,其使用的代码格式一般为【open(‘filename’,‘type’)】,其中filename代表文件名,type代表文件的读写模式,可以为r(只读)、w(写入)、a(追加)、r+(读写)、w+(覆盖读写)等。
5.1调用open()相关函数,以读写模式打开名为backup.txt的文件,并写入“abcd”内容后再读取出来

a=open('backup.txt','a+')
a.write('abcd')
a.close()
a.read()

前提

1、获取pip安装脚本

[root@alex-Ansible ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"

2、安装pip工具

[root@alex-Ansible ~]# python3 get-pip.py

3、通过pip安装python第三方模块paramiko

[root@alex-Ansible ~]# pip install paramiko
实验

Python批量自动化修改网络设备密码

https://blog.csdn.net/weixin_50299079/article/details/109300769

Python自动化备份网络设备配置

https://blog.csdn.net/weixin_50299079/article/details/109300588

你可能感兴趣的:(笔记,网络,运维,python,交换机,linux)