Вызов Telnet и SSH в основном файле, Telnet работает, но ssh не работает

Я новичок в python, в некоторых случаях я пишу скрипт для IP-адреса устройства «теленет» и SSH username@deviceIp, если telnet не работает.

Для всех IP-адресов Telnet он работает отлично. Но когда я делаю «ssh [email protected]», приведенный ниже код дает сбой, и я получаю ошибку в самом блоке try, например «socket.error» для устройства ssh.

Я хочу, чтобы ssh-устройства входили в блок else, если telnet Ip не работает в блоке try.

В моем файле Main.py

    try:
        #TELNET MODULE CALL
        tn= _telnetMOD._telnet(username, password, device)
        break
    else:
        #SSH MODULE CALL
        ssh= _sshMOD._ssh(username, password, device)

В файле _telnetMod у меня есть код ниже, который работает с импортом telnetlib

def _telnet(_userVar,_passwordVAR, _device):
    tn=''
    tn = telnetlib.Telnet(_device,23)
    #PYTHON VERSION 2.6 AND HIGHER
    tn.read_until("Username: ",10)
    tn.write(_userVar + "\r")
    if _passwordVAR:
        tn.read_until("Password: ",10)
        tn.write(_passwordVAR + "\r")    
    return tn

В файле _sshMOD у меня есть приведенный ниже код, который не работает, и я не уверен в приведенном ниже коде.

import paramiko 

def _ssh(_userVar,_passwordVAR, _device):
    ssh=''
    ssh= paramiko.SSHClient()
    ssh.connect(_device, username=_userVar,password=_passwordVAR)
    return ssh

person vinod reddy    schedule 19.09.2011    source источник
comment
Что происходит, когда вы пытаетесь подключиться к этой системе по ssh из командной строки с тем же именем пользователя и паролем? Это работает?   -  person larsks    schedule 19.09.2011
comment
Вы уверены, что на целевом хосте запущен демон sshd?   -  person Jim Garrison    schedule 19.09.2011
comment
да, я пробовал в командной строке, все работает отлично .. это команда, которую я запускал ssh [email protected]   -  person vinod reddy    schedule 19.09.2011


Ответы (1)


Вы забыли client.load_system_host_keys()? Это пример из документов:

client = SSHClient()
client.load_system_host_keys()
client.connect('ssh.example.com')
stdin, stdout, stderr = client.exec_command('ls -l')

И вы должны использовать блок try следующим образом:

try:
    telnet()
except:
    telnet = false
if telnet == false:
    try:
        ssh()
    ...
person Glaslos    schedule 19.09.2011