玖叶教程网

前端编程开发入门

「python」使用SSH进行网络设备巡检

前面两篇文章介绍了Python调用Telnet。今天介绍一下使用SSH自动巡检。

实验目的和前面一致:运行Python脚本,自动SSH连接到网络设备(或者服务器),执行指定的巡检命令,之后将巡检日志保存在和python脚本相同的目录中,该日志的命名形式:设备名+日期+时间.txt。

本次实验使用的是python3,教程适用对象:初学python的网络工程师,Linux运维工程师。

路由器上的配置:

IP地址:192.168.1.200

username ljds password ljds

enable secret ccie

ip domain-name ljds.com

crypto key generate rsa

ip ssh version 2

line vty 0 4

transport input ssh

login local

以上路由器的基础配置,网络工程师应该是能看懂的,Linux运维工程师看不懂也无所谓,你只要知道这是搭建了个SSH服务端就行,等下要SSH连接192.168.1.200。

先手动SSH连接测试:

ssh连接服务端

输入正确的用户名密码即可登录。

接下来安装paramiko,paramiko是第三方库,需要单独安装。(之前使用Telnet时调用的是Python的标准库telnetlib,它无需单独安装,可以直接导入)

安装方法:

C:\Users\LJDS>pip install paramiko

测试下安装是否成功,在Python中导入看看是否报错:

测试paramiko是否安装成功

paramiko也安装成功,接下来就是Python代码了:

############################

import paramiko

import time

import re

def SSH_ljds(Host,UserName,PassWord,*cmds):

LogTime = time.strftime('%Y-%m-%d_%H-%M-%S')#缩进4空格

ssh = paramiko.SSHClient()#缩进4空格

ssh.load_system_host_keys()#缩进4空格

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#缩进4空格

ssh.connect(Host,username=UserName,password=PassWord,timeout=5,compress=True)#缩进4空格

channel=ssh.invoke_shell()#缩进4空格

channel.send('enable'.encode() + b'\n')#缩进4空格

channel.send('ccie'.encode() + b'\n')#缩进4空格

channel.send('terminal length 0'.encode() + b'\n')#缩进4空格

for cmd in cmds:#缩进4空格

channel.send(cmd.encode() + b'\n')#缩进8空格

time.sleep(1)#缩进8空格

SSHreply = channel.recv(32768).decode()#缩进4空格

DeviceName = re.search('.*(?=#show run)',SSHreply).group()#缩进4空格

channel.close()#缩进4空格

ssh.close()#缩进4空格

log = open(DeviceName + '-' + LogTime + '.txt','w')#缩进4空格

log.write(SSHreply)#缩进4空格

log.close()#缩进4空格

if __name__ == '__main__':

SSH_ljds('192.168.1.200', 'ljds', 'ljds', 'show run','show ip int b','show log')

############################

很无奈,头条发表出来的文章,排版会被调整,写出的代码缩进都没了,所以上面我标注了缩进,正常情况应该是这样:

正常缩进

现在测试效果,执行SSH_ljds.py文件,会在当前目录生成巡检日志:

自动生成日志

部分日志截图

已经达到自动巡检的目的,希望对初学python的同学(运维工程师)有所帮助。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言