我正在尝试通过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')
答案 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:总结一下我说的话,你需要等到上一个动作结束,直到发送一个新动作。