我是python和Linux的新手。我試圖從python執行bash命令,該命令給localhost一個命令。通過subprocess.call給本地主機提供命令
Initally我試圖使用os.system
os.system('echo "(primitive-load \"/opt/doc/test.txt\")" |nc localhost xxxxx')
我已經成功地使用叫幾個使用os.system命令。但是這個具有文件路徑的特定命令不會執行。所以我試圖用subprocess.call
subprocess.call('echo "(primitive-load \"/opt/doc/test.txt\")" |nc localhost xxxxx')
但拋出以下錯誤。
File "/usr/lib/python2.7/subprocess.py", line 523, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
我也曾嘗試以下
command = 'echo "(primitive-load \"/opt/doc/test.scm\")"|nc localhost xxxxx;'
process = os.popen(command)
任何其他方式來實現這一目標?
感謝您的回覆。我的目標是將此加載命令提供給服務器。但是這個shlex.split會給服務器(原始的-load /opt/doc/test.txt)| nc localhost xxxx。 (和nc命令一起)!! – vishnu
@vishnu你可能需要[PIPE](https://docs.python.org/2/library/subprocess.html#subprocess.PIPE) –