2017-04-02 69 views
1

我是新来的,我无法找到我的问题的完整答案。所以我在这里问。 我正在使用python和pexpect模块连接到ssh服务器并运行一些命令。但是有些命令不起作用。我看了看文件,我可以看到,运行如下命令:Python模块pexpect - 如何连接到SSH服务器,然后运行bash命令

ls -l | grep -i <Filter>

因为我必须使用产卵命令与

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

但是运行bash脚本,我连接到服务器的方式是通过发送带密钥的ssh命令:

p = pexpect.spawn("ssh -t -t [email protected] -i ~/.ssh/Keyfile ")

所以我不能运行带有bash命令的spawn命令(或者我可以吗?)

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

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

注:我试图找出bash部分。连接到服务器和重定向+密码插入已经适用于我。

回答

1

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

ssh = pexpect.spawn('ssh -t -t [email protected] -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"'); 
+0

谢谢,我不知道为什么这种明显的解决方案并没有来找我:) 另外请注意,我想这在Android设备上过哪里有no/bin/bash而是bin/sh 我不得不声明bin位于系统中,因此结果将是 ** ssh.sendline('system/bin/sh -c“ls -l | grep LOG> logs.txt “'); ** 如果有人感兴趣 – Steven

相关问题