我正在尝试通过Python学习网络脚本。我正在尝试从文件" Device_List"中提取设备名称。然后ssh到设备,在其上执行命令并打印输出。
当我在文件中使用IP地址时它工作正常但是如果我使用主机名则不行。我在 Ubuntu Trusty 以及 Mac OSX 上尝试了此操作。
我收到以下错误:
FWIP = socket.gethostbyname(name)
socket.gaierror: [Errno -2] Name or service not known
我能够在两台机器上解析主机名,因此它不是DNS问题。 此外,如果我从键盘输入设备名称而不是文件,它可以正常工作。
你能帮我找到问题吗?
我的代码:
import datetime
import paramiko
import socket
import time
import sys
import getpass
with open("Device_List") as dev:
for name in dev:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
Uname = raw_input("Username : ")
Pw = getpass.getpass()
print "Connected to ", name
FWIP = socket.gethostbyname(name)
ssh.connect(FWIP, username=Uname,password=Pw)
remote_conn = ssh.invoke_shell()
remote_conn.send("set cli pager off\n")
sys.stdout.flush()
command = raw_input("Enter Command to run : ")
remote_conn.send(command + "\n")
time.sleep(2)
output = remote_conn.recv(65534)
print output
print "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
print "Moving Onto Next Device..."
print "Device List Over"