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

通过SSH连接树莓派未执行代码,如何排查Kivy应用中subprocess调用故障

问题定位排查步骤
  • 首先捕获命令执行返回码:subprocess.call()会返回命令的退出状态码,成功执行为0,非0代表命令本身执行失败。你可以先打印返回值确认执行状态,参考代码:
ret = subprocess.call(f"ssh pi@{raspberry_ip} python {file_path}", shell=True)
print(f"命令执行返回码:{ret}")
  • 开启SSH调试日志定位连接问题:在ssh指令中加入-v参数输出详细的连接、校验流程日志,修改命令为ssh -v pi@{raspberry_ip} python {file_path},运行后查看日志即可判断是IP不可达、SSH端口不通、密钥/密码校验失败这类连接问题,还是树莓派侧python命令不存在、目标脚本路径错误这类执行问题。
  • 校验命令字符串拼接是否正确:如果你的命令字符串没有加f前缀(f-string)或者调用.format()方法完成变量替换,{raspberry_ip}、{file_path}会作为普通字符串传递,不会被替换成实际值。你可以先把拼接完成的最终命令打印出来,复制到本地终端直接执行,验证命令本身的正确性。
  • 检查树莓派侧的运行记录:登录树莓派查看/var/log/auth.log日志,确认对应时间点有没有SSH登录请求,判断请求是否成功到达树莓派;如果有登录记录,可在你要执行的Python脚本中增加本地日志写入逻辑(比如脚本启动时向/tmp/script_run.log写入当前时间和启动标记),确认脚本是否被触发执行。
  • 确认SSH免密配置是否完成:如果运行Kivy应用的设备没有配置到树莓派的SSH公钥免密登录,ssh命令会在后台静默等待输入密码,表现为无报错也无执行结果。你可以提前配置好公钥信任,或者使用sshpass传递密码,避免命令阻塞在密码输入环节。

内容的提问来源于stack exchange,提问作者Ded Meme

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:24:04