Bat脚本SSH连接远程服务器后,后续PHP命令不执行的解决方法
解决Windows SSH脚本中后续命令不执行的问题
问题原因
你当前的脚本逻辑存在错误:运行ssh命令后会启动交互式远程会话,脚本会暂停在这个会话中,直到你手动退出远程连接,才会继续执行后面的cd和php命令——但这两个命令是在本地Windows CMD中执行的,并非远程服务器,所以完全达不到预期效果。
解决方案(无需更换SSH客户端)
Windows自带的SSH客户端完全满足需求,只需调整脚本写法,把要在远程执行的命令直接传递给ssh命令即可,两种常用方式:
方式1:直接在ssh命令后附加远程命令
把需要在远程执行的多个命令用双引号包裹,用&&分隔(确保前一个命令执行成功后才运行下一个):
ssh sderdm_evgeny@sderdm.beget.tech "cd /home/s/sderdm/mysite/public_html/core/__custom-scripts && php7.4 test.php"
方式2:通过本地脚本文件传递命令
如果远程执行的命令较多或逻辑复杂,可以把命令写入一个本地文本文件(比如命名为remote_cmds.txt),内容如下:
cd /home/s/sderdm/mysite/public_html/core/__custom-scripts php7.4 test.php
然后在Bat脚本中通过管道传递给ssh:
ssh sderdm_evgeny@sderdm.beget.tech < remote_cmds.txt
若遇到需要终端交互的场景(比如部分命令要求伪终端),可以添加-t参数强制分配伪终端:
ssh -t sderdm_evgeny@sderdm.beget.tech < remote_cmds.txt
内容的提问来源于stack exchange,提问作者user153742
相关产品推荐
相关产品推荐

