已通过ssh2连接服务器,无法找到并执行服务器脚本求解决方案
解决思路
1. 修正路径格式与拼写错误
你的代码存在两处路径相关问题:
- 定义了
repoFile变量但未使用,且执行命令里的路径拼写错误:/repoScript/shutdown.bat少了一个s,正确目录名应为repoScripts。 - 若服务器是Windows系统,SSH执行命令需使用Windows路径格式(反斜杠),而非Linux的正斜杠。JavaScript字符串中需对反斜杠转义,因此正确路径应写为
C:\\repoScripts\\shutdown.bat。
修改后的查看文件命令示例:
conn.exec('type C:\\repoScripts\\shutdown.bat', (err, stream) => { // 原有逻辑 });
2. 正确执行脚本而非查看内容
当前用type命令仅能查看脚本内容,若要执行.bat脚本,需直接调用脚本或使用call命令(避免脚本执行后直接终止SSH会话):
// 直接执行脚本 conn.exec('C:\\repoScripts\\shutdown.bat', (err, stream) => { // 原有逻辑 }); // 推荐使用call命令,执行更稳定 conn.exec('call C:\\repoScripts\\shutdown.bat', (err, stream) => { // 原有逻辑 });
3. 验证服务器上的路径与权限
- 先执行目录查看命令,确认文件真实存在:
conn.exec('dir C:\\repoScripts', (err, stream) => { // 打印输出内容,检查目录下是否有shutdown.bat });
- 确认用户
ddaud对该文件及所在目录拥有读取、执行权限。
4. 处理环境变量与目录切换问题
如果脚本依赖特定环境变量或相对路径,可先切换到脚本所在目录再执行:
conn.exec('cd C:\\repoScripts && shutdown.bat', (err, stream) => { // 原有逻辑 });
内容的提问来源于stack exchange,提问作者ddaudiosolutions
相关产品推荐
相关产品推荐

