#-*-coding:UTF-8 -*-
import paramiko
import time
ip = "192.168.10.11"
username = "admin"
password = "Huawei@123"
\创建交换机登陆信息变量
ssh=paramiko.SSHClient()
\创建SSH对象
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
\允许连接不在know_hosts文件中的主机
ssh.connect(hostname=ip,port=22,username=username,password=password)
\SSH方式连接交换机
print("成功连接",ip)
command=ssh.invoke_shell()
\调用交换机命令行
command.send("sys
")
command.send("sysname HW_Switch
")
command.send("interface loopback 0
")
command.send("ip address 192.168.0.124
")
command.send("return
")
command.send("save
")
command.send("y
")
\发送配置命令
time.sleep(3)
output=command.recv(65535)
print(output)
\设置等待时间并打印回显内容
ssh.close()
\关闭连接
本例中通过SSH方式成功连接交换机后,我们需要调用paramiko.SSHClient()下面的invoke.shell()来唤醒shell,也就是华为交换机的VRP命令行,并将它赋值给变量command,之后调用invoke.shell()下面的command()函数,向交换机发送配置命令。
Python是一次性执行脚本命令的,中间没有时间间隔,这样就会导致某些命令遗漏和回显内容不完整的问题。我们在使用recv()函数将回显结果保存之前,需要调用time模块下的sleep()函数手动让Python停止3秒钟,这样回显内容才能被完整地打印出来。这里的command.recv(65535)中的65535代表截取65535个字符的回显内容。对交换机配置完毕后,使用close()方法退出SSH连接。