我正在使用 pexpect 通过 ssh 连接到远程主机。 当用户或密码不正确时,我得到一个错误 但是当无法访问目标主机时(例如,当我输入无效的 ip 或主机已关闭时),我没有得到任何指示。 知道为什么以及我应该在命令中更改什么以便在这种情况下获得指示。
source和dest机器都是linux
这是我正在运行的命令
.../bin/python3 -c 'from pexpect import pxssh;import getpass;s = pxssh.pxssh();s.login("1.1.1.1", "user", "pass", auto_prompt_reset=False);s.sendline("touch /tmp/example.txt");s.prompt();'
您没有得到指示,因为
pxssh
图书馆不提供您案例的反馈。在使用socket
之前,您最好使用
host
库尝试连接到目的地
pxssh
这里是你如何做到的:
import socket
from pexpect import pxssh
def ssh_command(host, user, password, command):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(2)
s.connect((host, 22))
s.close()
except socket.error:
print(f"Error: {host} is not reachable")
return
s = pxssh.pxssh()
s.login(host, user, password, auto_prompt_reset=False)
s.sendline(command)
s.prompt()
result = s.before.decode()
s.logout()
return result