import socket
import subprocess
ClientSocket = socket.socket()
try:
ClientSocket.connect(("remote_host", 22))
port = 22
except socket.error:
ClientSocket.connect(("remote_host", 23))
port = 23
finally:
command = "sshpass -ppassword ssh -t -t username@remote_host -p {0}".format(port).split()
subprocess.call(command)
ClientSocket.close()
Aqui estamos primeiro tentando que se a porta 22 (SSH) estiver aberta no host remoto, se abrir pula para o segmento finally
, se ela gerar uma verificação de exceção se a porta 23 < strong> (Telnet) está aberto e, em seguida, vai para finally
. No segmento finally
estamos usando o programa sshpass
(você precisa instalá-lo manualmente por sudo apt-get install sshpass
, se não estiver instalado) para fornecer a senha diretamente no comando, você também pode usar o paramiko módulo de python aqui.
Preocupação de segurança: você não deve fornecer sua senha como texto simples.