通过python

时间:2017-11-05 01:10:26

标签: python bash ssh scripting openssh

我有一个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但是它不是互动的。

2 个答案:

答案 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“')