蟒蛇 |期待 | SSH |当目标主机不可访问时,没有收到任何指示

问题描述 投票:0回答:1

我正在使用 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();'
python-3.x linux pexpect pxssh
1个回答
0
投票

您没有得到指示,因为

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
© www.soinside.com 2019 - 2024. All rights reserved.