socket.gaierror:[Errno -2]名称或服务未知无DNS问题

时间:2017-03-10 21:20:39

标签: python-2.7

我正在尝试通过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"

0 个答案:

没有答案