在主文件中调用Telnet和SSH, Telnet工作,但SSH失败



我是python的新手,我正在编写一个脚本'telenet'设备IP在某些情况下和SSH username@deviceIp如果telnet失败..

对于所有Telnet IP的它工作完美。但是,当我做"ssh admin@153.88.127.21"下面的代码失败,我得到错误在尝试集团本身像"套接字。错误" for SSH device's.

我想让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

您是否忘记了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()
    ...

最新更新