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

如何实现Windows批处理连接Ubuntu服务器后自动执行shell脚本?

实现Windows批处理自动SSH连接并执行服务器端Shell脚本

完全可以实现,核心是不要进入SSH交互会话,而是直接通过SSH命令传递要执行的远程脚本,同时解决sudo免密问题避免执行卡住。

1. 修改Windows批处理脚本

原批处理的问题是:你先通过SSH进入远程交互终端,之后的./restart.sh是在本地Windows环境执行的,根本没传到服务器,所以无效。正确写法是把远程要执行的命令直接作为SSH的参数:

cd "C:\Users\myUser\Documents"
ssh -i .\my_server.pem ubuntu@www.website.com.br "./restart.sh"

执行这个批处理时,SSH会直接连接服务器,执行~/restart.sh脚本,完成后自动断开连接。

2. 配置服务器sudo免密(关键步骤)

你的restart.sh里用到了sudo,如果不配置免密,自动执行时会因需要输入密码而卡住。在Ubuntu服务器上按以下步骤操作:

  • 用visudo编辑sudoers文件(必须用这个命令,避免语法错误导致sudo失效):
    sudo visudo
    
  • 在文件末尾添加一行(替换成asadmin命令的绝对路径,确保sudo能准确定位):
    ubuntu ALL=(ALL) NOPASSWD: /home/ubuntu/server/glassfish4/glassfish/bin/asadmin
    
  • 保存退出:按Ctrl+O,回车确认保存,再按Ctrl+X退出。

可选:执行完脚本后保持SSH连接

如果希望执行完restart.sh后留在远程终端,可以添加-t参数强制分配伪终端:

ssh -t -i .\my_server.pem ubuntu@www.website.com.br "./restart.sh; bash"

内容的提问来源于stack exchange,提问作者Samuel Luiz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:15:51