You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:50:27