2017-09-10 16 views
1

私はPythonには新しく、私のコードが機能しない理由を解決できません。 ssh(paramikoを使用)経由でファイルにhostnameリストで複数のサーバーに接続しようとしています。sshを使用してリモートからコマンドPythonを実行

何か変わったことが起こりました。ファイルにホスト名が1つだけある場合にのみコードが動作します。それ以上の場合は動作しません。 ループが正常に動作していることを確認するだけです。

あなたは私に助けてくれることを願っております、ありがとうございます!

コード:

import sys 
import os 
import paramiko 

client=paramiko.SSHClient() 
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

username='yadayada' 
password='ladida' 
ipFile=open("C:\Users\garmiza\Documents\Scripts\TrapToHpsimLinuxIPList.txt","r") 


for line in iter(ipFile): 
    print "sending trap from " + line 
    client.connect(line,username=username,password=password) 
    command="snmptrap -v 1 -c public 16.19.203.96 enterprises.232 {clientIP} 6 11003 0".format(clientIP=line) 
    stdin, stdout, stderr = client.exec_command(command) 


ipFile.close() 

エラー:

File "C:/Users/zaza/PycharmProjects/linuxTrapSending/linuxTrapSending.py", line 16, in <module> 

    client.connect(line,username=username,password=password) 
    File "C:\Python27\lib\site-packages\paramiko\client.py", line 301, in connect 
    to_try = list(self._families_and_addresses(hostname, port)) 
    File "C:\Python27\lib\site-packages\paramiko\client.py", line 199, in _families_and_addresses 
    hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM) 
socket.gaierror: [Errno 11001] getaddrinfo failed 

Process finished with exit code 1 
+0

ループ内で、 'line'を表示して、それがあなたの考えであることを確認してください。 –

+0

ええ、私は、IPアドレスを細かく印刷しました。感謝 – GarAnn

答えて

0

MSDNのドキュメントによれば:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms738520(v=vs.85).aspx

getaddrinfo関数は、ANSIホスト名からアドレスへの、プロトコルに依存しない変換を提供します。

とエラーコード11001:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms740668(v=vs.85).aspx#WSAHOST_NOT_FOUND

ホストが見つかりません。 そのようなホストは知られていません。名前は正式なホスト名またはエイリアスではないか、照会されているデータベースでは見つかりません。このエラーは、プロトコルおよびサービス照会の場合にも返され、指定された名前が関連するデータベースで見つからなかったことを意味します。

間違ったホスト名(または存在しないホストのみ)を渡す必要があります。

+0

ありがとう、私はホスト名とIPアドレスを置き換え、何か変わったことが起こります。 ファイルに1行(1つのホスト名)があれば、それは動作しています。複数ある場合は、全く同じエラーが表示されます。 何ができますか? (私はループをチェックしているだけですが、線はうまく印刷されています) – GarAnn

+0

わかりません。あなたが住所を渡す方法かもしれません。または、おそらくparamikoはアドレスとしてIPv4を受け入れません。 – lilezek

+0

はい...私はipからhostnameに変更しました – GarAnn

0

OK、私はそれを解決しました。問題は、リスト内の値が次のように読み取られることです。hostname \ nエラーの原因とファイル内の1つのホスト名で動作した理由。

関連する問題