Python脚本打开多终端仅原终端执行命令,新开终端空白求助
解决:在独立GNOME终端窗口分别执行不同命令
你的代码问题在于:试图通过stdin给已启动的空白终端传递命令,但gnome-terminal启动后并不会监听父进程的标准输入来执行命令。正确的做法是在启动终端时直接指定要运行的命令。
修正后的代码
import subprocess TARGET_IP_ADDRESS = "IPHERE" # 启动终端执行nmap,执行完保持窗口打开 subprocess.Popen([ "gnome-terminal", "--", "bash", "-c", f"nmap -T5 -A -p- --min-rate=500 {TARGET_IP_ADDRESS}; exec bash" ]) # 启动终端执行whatweb subprocess.Popen([ "gnome-terminal", "--", "bash", "-c", f"whatweb {TARGET_IP_ADDRESS}; exec bash" ]) # 启动终端执行gobuster gobuster_command = ( f"gobuster dir http://{TARGET_IP_ADDRESS}/ " f"--wordlist /usr/share/dirb/wordlists/common.txt; exec bash" ) subprocess.Popen(["gnome-terminal", "--", "bash", "-c", gobuster_command])
关键说明
gnome-terminal -- bash -c "命令; exec bash":--用来区分终端自身的参数和要执行的命令;bash -c让bash解释执行后面的命令字符串;exec bash是为了在命令执行完成后保持终端窗口不关闭,方便查看结果。
- 每个终端窗口独立启动并执行指定命令,不需要额外维护窗口列表或传递标准输入。
内容的提问来源于stack exchange,提问作者berxiv
相关产品推荐
相关产品推荐

