【发布时间】:2011-11-20 08:00:50
【问题描述】:
我是 python 新手,在某些情况下我正在编写一个脚本来“远程登录”设备 IP,如果远程登录失败,我正在编写 SSH username@deviceIp..
对于所有 Telnet IP,它都可以正常工作。但是当我在执行“ssh admin@153.88.127.21”时,下面的代码会失败,并且我在尝试 bloc 本身时遇到错误,例如 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
【问题讨论】:
-
当您尝试在命令行上使用相同的用户名和密码 ssh 到该系统时会发生什么?有用吗?
-
您确定目标主机上正在运行 sshd 守护进程吗?
-
是的,我在命令行中尝试过它运行良好。这是我运行的命令“ssh admin@153.88.127.21”
标签: python ssh paramiko telnetlib