从python打开终端应用程序并在其中运行自定义脚本

时间:2015-11-03 12:39:42

标签: python linux bash

我正在使用名为dc_shell的软件,该软件在CentOS Linux服务器上有一个终端命令(也称为dc_shell)。当我运行dc_shell命令时,我已经连接到它的终端,我可以在其中运行脚本/命令。 (这都是手动完成的)

所以真正的问题是我想从Python程序中完成这项任务。这意味着我有一个执行某项任务的Python代码,之后必须打开dc_shell并在其中运行一些命令。

之前我使用过subprocess.Popen,当我运行ls或其他常规终端命令等命令时,这没有任何问题。但是当我运行dc_shell命令时,它似乎崩溃并且没有任何反应,当我尝试终止会话时,我的终端中出现以下错误。

这是我的代码:

def run_scripts():
    commandtext = 'cd ..; dc_shell-xg-t; set_app_var link_library "slow.db"; set_app_var target_library "slow.db"; set_app_var symbol_library "tsmc18.sdb";'
    print(commandtext)
    process = subprocess.Popen(commandtext,stdout=subprocess.PIPE, shell=True)
    proc_stdout = process.communicate()[0].strip()
    print(proc_stdout)

,输出为:

cd ..; dc_shell-xg-t; set_app_var link_library "slow.db"; set_app_var target_library "slow.db"; set_app_var symbol_library "tsmc18.sdb";

没有任何反应......终止后我得到:

[User@server python]$ /bin/sh: set_app_var: command not found
/bin/sh: set_app_var: command not found
/bin/sh: set_app_var: command not found

1 个答案:

答案 0 :(得分:0)

您是否需要使用dc_shell来运行命令?

如果是这样,那应该是你的可执行文件,其余部分命令你的参数。

由于security considerations,你永远不应该使用shell = True(2.x docs for subprocess中的警告对我来说似乎更清楚了。)