使用Python通过SSH的Mkdir不起作用

时间:2013-04-22 09:06:19

标签: python-2.7 ssh pexpect

我正在尝试通过SSH使用python脚本创建一个新目录。当我通过使用Python命令行尝试我的命令时,它只是起作用。但是,当我尝试通过脚本执行相同操作时,它不会创建新的“test”文件夹(我甚至将脚本中的命令复制/粘贴到Python cmd中以验证它们是否正确并且在那里工作)。所以任何想法为什么它不能通过脚本工作?

使用过的代码:

child = pexpect.spawn('ssh 192.168.56.101 -oStrictHostKeyChecking=no')
child.expect=('password:')
child.sendline('MyPwd')
child.sendline('mkdir /home/myUser/Desktop/test')

2 个答案:

答案 0 :(得分:1)

我刚添加另一行时似乎工作

例如

child.sendline('\n')

所以整个脚本都是

child = pexpect.spawn('ssh 192.168.56.101 -oStrictHostKeyChecking=no')
child.expect=('password:')
child.sendline('MyPwd')
child.sendline('mkdir /home/myUser/Desktop/test')
child.sendline('\n')

答案 1 :(得分:0)

我通常采取的解决此问题的方法是与主机同步。在我向机器发送内容后,我希望得到一个答案,通常会在机器的提示中进行转换。所以,在你的情况下,我会选择这样的东西:

child = pexpect.spawn('ssh 192.168.56.101 -oStrictHostKeyChecking=no')
child.expect('password:')
child.sendline('MyPwd')
child.expect('YourPromptHere')
child.sendline('mkdir /home/myUser/Desktop/test')
child.expect('YourPromptHere')

如果您在单个目标上运行脚本,或者使用正则表达式(例如“(\ _ $)|(#)”),您可以将 YourPromptHere 替换为机器的提示符|(>)“)。

tl; dr:总结一下我说的话,你需要等到上一个动作结束,直到发送一个新动作。