我是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()
...