Python 模块 pexpect - 如何连接到 ssh 服务器然后 运行 bash 命令

Python module pexpect - how to connect to ssh server and then run bash commands

我是新手,找不到我的问题的完整答案。所以我在这里问。 我正在使用 python 和 pexpect 模块连接到 ssh 服务器和 运行 一些命令。但是,某些命令不起作用。我查看了文档,我可以看到 运行 宁命令如下:

ls -l | grep -i <Filter>

因为我必须使用 spawn 命令来 运行 bash 脚本

child = pexpect.spawn('/bin/bash -c "ls -l | grep LOG > logs.txt"')

然而,我连接到服务器的方式是通过发送带有密钥的 ssh 命令:

p = pexpect.spawn("ssh -t -t NAME@IP -i ~/.ssh/Keyfile ")

所以我不能 运行 里面有 bash 命令的 spawn 命令(我可以吗?)

响应应该是密码请求,因为它将我重定向到另一台机器。

如何使用 spawn 命令,以便我可以使用密钥连接到服务器输入重定向机器的密码,然后 运行 一个 bash 命令。

注意: 我正在尝试找出 bash 部分。与服务器的连接和重定向 + 密码插入已经对我有用。

您可以在下一行发送命令:

ssh = pexpect.spawn('ssh  -t -t NAME@IP -i ~/.ssh/Keyfile')
#You may write expect here to check if the ask if for password or some other error or the initial banner message
ssh.sendline('password')
#You may check if the password is successful
ssh.sendline('/bin/bash -c "ls -l | grep LOG > logs.txt"');