运行 Python 中多个服务器(路由器)上的命令(备份配置)
Run a command (to backup a configuration) on multiple servers (routers) in Python
是否可以让脚本遍历每个 IP 并在本地 tftp 服务器上备份 运行 配置
import paramiko
import sys
import time
USER = "root"
PASS = "cisco"
HOST = ["10.10.10.10","11.11.11.11","12.12.12.12"]
i=0
while i <len(HOST)
def fn():
client1=paramiko.SSHClient()
#Add missing client key
client1.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#connect to switch
client1.connect(HOST,username=USER,password=PASS)
print "SSH connection to %s established" %HOST
show run | redirect tftp://10.10.10.20/HOST.cfg
print "Configuration has been backed up"for %HOST
i+1
show run | redirect tftp://10.10.10.20/HOST.cfg
--- 我可以使用变量名作为文本文件名吗?
- 使用
for h in HOST
迭代您的 HOST
数组;
- 使用
SSHClient.exec_command
执行命令;
- 使用
string.format
格式化您的消息和命令。
for h in HOST:
client = paramiko.SSHClient()
#Add missing client key
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#connect to switch
client.connect(h, username = USER, password = PASS)
print("SSH connection to {0} established".format(h))
command = "show run | redirect tftp://10.10.10.20/{0}.cfg".format(h)
(stdin, stdout, stderr) = client.exec_command(command)
for line in stdout.readlines():
print(line)
client.close()
print("Configuration has been backed up for {0}".format(h))
强制性警告:请勿使用 AutoAddPolicy
- 您将失去对 MITM attacks by doing so. For a correct solution, see Paramiko "Unknown Server".
的保护
是否可以让脚本遍历每个 IP 并在本地 tftp 服务器上备份 运行 配置
import paramiko
import sys
import time
USER = "root"
PASS = "cisco"
HOST = ["10.10.10.10","11.11.11.11","12.12.12.12"]
i=0
while i <len(HOST)
def fn():
client1=paramiko.SSHClient()
#Add missing client key
client1.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#connect to switch
client1.connect(HOST,username=USER,password=PASS)
print "SSH connection to %s established" %HOST
show run | redirect tftp://10.10.10.20/HOST.cfg
print "Configuration has been backed up"for %HOST
i+1
show run | redirect tftp://10.10.10.20/HOST.cfg
--- 我可以使用变量名作为文本文件名吗?
- 使用
for h in HOST
迭代您的HOST
数组; - 使用
SSHClient.exec_command
执行命令; - 使用
string.format
格式化您的消息和命令。
for h in HOST:
client = paramiko.SSHClient()
#Add missing client key
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#connect to switch
client.connect(h, username = USER, password = PASS)
print("SSH connection to {0} established".format(h))
command = "show run | redirect tftp://10.10.10.20/{0}.cfg".format(h)
(stdin, stdout, stderr) = client.exec_command(command)
for line in stdout.readlines():
print(line)
client.close()
print("Configuration has been backed up for {0}".format(h))
强制性警告:请勿使用 AutoAddPolicy
- 您将失去对 MITM attacks by doing so. For a correct solution, see Paramiko "Unknown Server".