S'il vous plaît, aidez-moi à corriger mon script. Mon script vérifie le login SSH d'un hôte et affiche le succès/l'échec en fonction du résultat. Il échoue lorsque je donne un mauvais nom d'hôte.python3.5 paramiko a échoué avec le nom d'hôte
code est au-dessous:
[[email protected] script]# cat param.py
import multiprocessing
import paramiko
import random
import threading
import time
host_name = "test2"
print ("Checking hostname :"+str(host_name))
file = open('output_file','a')
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect(host_name, username='root', password='test')
print ("success")
file.write("success:"+str(host_name+"\n"))
except paramiko.SSHException:
print ("Connection Failed")
file.write("failed:"+str(host_name+"\n"))
quit()
stdin,stdout,stderr = ssh.exec_command("hostname&&uptime")
for line in stdout.readlines():
print (line.strip())
ssh.close()
Il fonctionne très bien quand donné le nom d'utilisateur/mot de passe:
[[email protected] script]# python3 param.py
Checking hostname :test2
success
test2
12:31:49 up 83 days, 2:56, 2 users, load average: 0.00, 0.01, 0.05
Il fonctionne très bien quand le mauvais mot de passe est donné. J'ai changé le mot de passe à un mauvais dans le script et il dit que la connexion a échoué comme prévu. Maintenant, ma question, quand je change le nom d'hôte à quelque chose n'existe pas, paramiko échoue et beaucoup d'erreurs surgissent.
[[email protected] script]# python3 param.py
Checking hostname :invalidtest2
Traceback (most recent call last):
File "param.py", line 16, in <module>
ssh.connect(host_name, username='root', password='test')
File "/root/usr/local/lib/python3.5/site-packages/paramiko/client.py", line 301, in connect
to_try = list(self._families_and_addresses(hostname, port))
File "/root/usr/local/lib/python3.5/site-packages/paramiko/client.py", line 199, in _families_and_addresses
hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM)
File "/root/usr/local/lib/python3.5/socket.py", line 728, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
Comment puis-je savoir si la connexion a échoué? J'utilise python3.5