![使用PuTTY远程命令连接服务器,然后连接另一台服务器并运行命令](https://linux22.com/image/1532611/%E4%BD%BF%E7%94%A8PuTTY%E8%BF%9C%E7%A8%8B%E5%91%BD%E4%BB%A4%E8%BF%9E%E6%8E%A5%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E7%84%B6%E5%90%8E%E8%BF%9E%E6%8E%A5%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B9%B6%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4.png)
我有一些关于 PuTTY 使用远程命令 ( -m
) 的快速问题。
我有 MachineB,它有一个简单且易于修复的问题。要连接到 MachineB,我必须连接到 ServerA,获取 IP 地址并通过 SSH 连接到 MachineB:
ssh -t -t `cat /Devices/051`
从这里我设置了一系列命令并在最后检查输出:
cd /opt/ProgramA/
/opt/ProgramA/reboot.sh
/opt/ProgramA/Validate.sh
检查完输出后我就大功告成了,可以开始了。
我目前有:
Putty.exe -ssh hostissecret 22 -l root -pw secret -m command.txt
Commands.txt
包含:
ssh -t -t `cat /Devices/051
cd /opt/ProgramA/
/opt/ProgramA/reboot.sh
/opt/ProgramA/Validate.sh
read
它确实让我进入 MachineB,但没有在其上运行任何命令。我也尝试过制作command.txt
一条长线,但 PuTTY 会在没有足够的时间间隔来完成命令的情况下退出。
答案1
您需要在机器 B 上运行的命令组周围加上引号,以便 ssh 将它们视为单个参数,并使用分号让 B 上的 shell 知道每个命令在何处结束。
ssh -t -t `cat /Devices/051` "cd /opt/ProgramA/; /opt/ProgramA/reboot.sh; /opt/ProgramA/Validate.sh"