我有一个python脚本通过ssh在远程主机上执行本地bash脚本:
bash_script = "./ask_for_something.sh"
os.system("ssh " + host + " bash -s -- " + argument + " < " + bash_script)
由于the third example here而使用os.system argument
变量没有任何影响,因为它正在按预期运行。
一切都很好,直到bash脚本要求用户输入。如确认继续进行,它会忽略并继续前进。
我认为这与stdin有关,但没有解决问题所在。我尝试将-tt选项添加到ssh调用中,但似乎没有任何改变。
至少,我想能够从命令行完成这项工作,然后处理python。
我可以使用ssh user@remote_server "$(< ./ask_for_something.sh)"
但不能发送参数。
或者ssh user@remote_server bash -s -- argument < ./ask_for_something.sh
但是它不是互动的。
答案 0 :(得分:0)
我相信你的问题是bash的stdin,这是ssh将转发给你的东西,正被输入重定向<
占用。这意味着当提示发生时,它已经在&#34;文件结束&#34;,因此提供空响应。
答案 1 :(得分:0)
基本上放弃了这个并将脚本翻过来,然后将其删除......
os.system(“scp”+ bash_script)
os.system('ssh'+ host; bash --login bash_script; rm bash_script --activate“')