gpt4 book ai didi

python - 将此处文档与 pxssh (pexpect) 一起使用

转载 作者:太空宇宙 更新时间:2023-11-03 16:15:36 24 4
gpt4 key购买 nike

在我的 python 脚本中,我需要通过 SSH 执行一个命令,该命令也采用heredoc作为参数。该命令调用一个交互式脚本,也可以按如下方式调用:

dbscontrol << EOI
HELP
QUIT
EOI

我还发现了this Q&A它描述了如何使用 subprocess 来做到这一点,但我真的很喜欢 pexpect.pxssh 的便利性。代码示例将不胜感激

最佳答案

我没有方便的 pexpect 来测试我对你的问题的答案,但我有一个应该可行的建议,如果不行,至少可以让你更接近。

考虑这个命令:

$ ssh oak 'ftp << EOF
lpwd
quit
EOF'
Local directory: /home/jklowden
$

发生了什么事?整个带引号的字符串作为单个参数传递给 ssh,并在远程“执行”。虽然 ssh 没有明确说明这意味着什么,但确切地说,我们知道 execv(2) 的作用:如果 execve(2) 无法执行其传递的参数,则 execv函数将使用相同的参数(在本例中是我们引用的字符串)调用 /bin/sh 。然后 shell 将带引号的字符串作为单独的参数进行计算,检测 HereDoc 重定向,并按通常执行。

使用该信息,并快速浏览一下 pexpect.pxssh文档,它看起来像你想要的:

s = pxssh.pxssh()
...
s.sendline('ftp << EOF\nlpwd\nquit\nEOF')

如果这不起作用,则表明有东西正在修改您的数据。 strace(1) 五分钟就会告诉你发生了什么,你可以开始指责。 ;-)

HTH。

关于python - 将此处文档与 pxssh (pexpect) 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38963838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com