如何从Linux上运行的进程的命令行发出命令

时间:2013-09-03 17:46:46

标签: python linux

假设我从Linux命令行发出命令。这将导致Linux创建一个新进程,并假设进程希望从用户接收命令。

例如:我将运行一个python脚本test.py,它将接受来自用户的命令。

$ python test.py

试验> addController(192.168.56.101)

添加了控制器

试验>

我的问题是我可以编写一个脚本进入命令行(TEST>)并发出命令吗?据我所知,如果我编写一个脚本来运行多个命令,它将等待第一个进程退出,然后再运行下一个命令。

此致

Vinay Pai B.H。

3 个答案:

答案 0 :(得分:1)

你应该研究expect。它是一个工具,旨在自动化用户与需要它的命令交互。 man page解释了如何使用它。

似乎还有pexpect,类似功能的Python版本。

答案 1 :(得分:1)

假设Python脚本正在从stdin读取命令,您可以使用管道或重定向传递它们:

$ python test.py <<< 'addController(192.168.56.101)'

$ echo $'addController(192.168.56.101)\nfoo()\nbar()\nbaz()' | python test.py

$ python test.py <<EOF
addController(192.168.56.101)
foo()
bar()
baz()
EOF

答案 2 :(得分:0)

如果在将控制权返回给程序之前不介意等待完成(一次一个)调用,则可以使用subprocess库。如果你想开始运行而不是等待它完成,你可以使用multiprocessing库。