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

如何通过Android按钮触发PC端Python脚本并实现交互式控制

解决Android按钮触发PC脚本并交互的方案

问题核心

普通SSH执行命令后会话会断开,无法向已启动的Python脚本持续输入内容,导致脚本的input()无法被触发。下面提供两种可行方案:


方案一:用Screen/Tmux保持持久SSH会话

利用终端复用工具(Screen或Tmux)让Python脚本在后台会话中运行,后续通过SSH向会话发送输入内容。

步骤:

  1. PC端准备:确保已安装screen(大部分Linux发行版默认自带,Windows可通过WSL安装)
  2. 按钮1触发脚本启动:Android端通过SSH执行以下命令,启动脚本并放入screen会话:
    ssh your_pc_username@your_pc_ip "screen -dmS script_session python /path/to/your_script.py"
    
    • -dmS:创建一个后台运行的screen会话,命名为script_session
  3. 按钮2触发脚本继续:Android端通过SSH向该screen会话发送回车符:
    ssh your_pc_username@your_pc_ip "screen -S script_session -X stuff $'\n'"
    
    • -X stuff:向指定会话发送输入内容,$'\n'是Shell的换行符表示

你的Python脚本无需修改:

print('Button 1 was pressed')

input('waiting...')  # 等待按钮2的回车输入

print('Button 2 was pressed')

方案二:用TCP套接字实现双向通信

直接通过网络套接字建立Android与PC的通信,更灵活可控,无需依赖SSH会话。

PC端修改后的Python脚本:

import socket

# 配置监听地址和端口
HOST = '0.0.0.0'  # 监听所有网卡
PORT = 12345

# 创建套接字并监听
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen()
    conn, addr = s.accept()
    with conn:
        print(f"Connected by {addr}")
        while True:
            data = conn.recv(1024).decode().strip()
            if not data:
                break
            if data == "START":
                print('Button 1 was pressed')
                print('waiting...')
            elif data == "CONTINUE":
                print('Button 2 was pressed')
                break

Android端操作:

  • 按钮1:向PC的12345端口发送字符串START(可通过Termux的nc命令:echo "START" | nc your_pc_ip 12345,或Android app中用Socket API实现)
  • 按钮2:向同一端口发送字符串CONTINUE,触发脚本后续逻辑

为什么普通SSH不行?

普通SSH执行命令时,进程绑定到当前SSH会话,会话断开后进程会收到SIGHUP信号终止;即使加nohup让进程后台运行,也无法再向其标准输入写入内容。而上述两种方案分别通过持久会话或直接通信通道解决了这个问题。

内容的提问来源于stack exchange,提问作者Vakker Livet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:01:12