2011-09-19 10 views
1

を失敗した私は、Pythonに新しい、私はいくつかのケースでは「テレネット」デバイスIPにスクリプトを書いてdeviceIp @ SSHユーザ名アムのtelnet faiils場合..のTelnetやSSH、Telnetは動作しますが、sshが

すべてのTelnet IPのために、それは完璧に動作します..しかし、私が "ssh [email protected]"をやっているとき、以下のコードは失敗し、sshデバイスのための "socket.error"のようなtryブロック自体にエラーが発生します。

telnetがtryブロックで失敗した場合、sshデバイスがelseブロックに入るようにします。私Main.pyファイルで

_telnetModファイルで
try: 
     #TELNET MODULE CALL 
     tn= _telnetMOD._telnet(username, password, device) 
     break 
    else: 
     #SSH MODULE CALL 
     ssh= _sshMOD._ssh(username, password, device) 

私は私が持って失敗し、以下のわからないコードの下に_sshMODファイルで 輸入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 

を動作するコードの下に持っていますコード

import paramiko 

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

をし、パスワード?それは動作しますか? – larsks

+0

sshdデーモンがターゲットホスト上で実行されていることは確かですか? –

+0

はい私は完全に動作するコマンドラインで試してみました..これは私が "ssh [email protected]"を実行したコマンドです " –

答えて

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ブロックを使用する必要があります:これは、ドキュメントからの例です。あなたは、同じユーザー名とコマンドラインで、そのシステムへのSSHしようとするとどうなります

try: 
    telnet() 
except: 
    telnet = false 
if telnet == false: 
    try: 
     ssh() 
    ... 
関連する問題