0

我正在尝试使用 python 脚本通过 SSH 创建一个新目录。当我使用 Python 命令行尝试我的命令时,它就可以工作。但是当我尝试通过脚本执行相同操作时,它不会创建新的“测试”文件夹(我什至将脚本中的命令复制/粘贴到 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')
4

2 回答 2

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')
于 2013-04-22T10:29:38.457 回答
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 :总结一下我所说的,您需要等到上一个操作完成后再发送一个新操作。

于 2013-05-24T12:52:12.313 回答