1

私はPythonを初めて使用します。場合によっては、「telenet」デバイスIPにスクリプトを記述し、telnetが失敗した場合はSSH username@deviceIpを記述します。

すべてのTelnetIPで完全に機能します。しかし、「ssh admin@153.88.127.21」を実行すると、以下のコードが失敗し、sshデバイスの「socket.error」のようにブロック自体を試すとエラーが発生します。

telnet Ipがtryブロックで失敗した場合、sshデバイスをelseブロックに入れたい。

私の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
4

1 に答える 1

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()
    ...
于 2011-09-19T15:30:50.250 に答える