使用 Plink 执行 (sudo) 子命令
Executing (sudo) subcommands using Plink
我正在尝试从 Window PowerShell 命令 Linux 机器。命令依赖于之前命令的fail/pass。因此,我必须将所有命令放在一起。我尝试了多种将命令放在一起的方法,但最后我只收到了第一个命令的输出。
PS C:\Users\sams> plink -ssh -l username -pw root username@10.223.26.34 -t
"sudo -i && cd /root/docker/storm-supervisor/ && ./stop-all.sh"
实际结果:只收到第一条命令的输出。
预期结果:接收最终命令的输出。
sudo -i && cd /root/docker/storm-supervisor/ && ./stop-all.sh
在 Linux shell 中尝试您的命令。也不行。它将执行提升的 shell 并等待您键入命令。只有在你离开 sudo
shell 后,它才会 运行 其他命令(使用原始帐户)。
cd
和 ./stop-all.sh
是 sudo
的子命令。所以你必须这样对待他们。
最好的方法是在 sudo
命令行上提供命令:
sudo "cd /root/docker/storm-supervisor/ && ./stop-all.sh"
但这可能需要修改 sudoers
文件。虽然这是正确的方法。
或者您需要将命令提供给 sudo
输入:
echo "cd /root/docker/storm-supervisor/ && ./stop-all.sh && exit" | sudo
或者将所有内容都提供给 Plink 输入:
(
echo cd /root/docker/storm-supervisor/
echo ./stop-all.sh
) | plink -ssh -l username -pw root username@10.223.26.34 -t sudo -i
甚至:
(
echo sudo -i
echo cd /root/docker/storm-supervisor/
echo ./stop-all.sh
) | plink -ssh -l username -pw root username@10.223.26.34 -t
我正在尝试从 Window PowerShell 命令 Linux 机器。命令依赖于之前命令的fail/pass。因此,我必须将所有命令放在一起。我尝试了多种将命令放在一起的方法,但最后我只收到了第一个命令的输出。
PS C:\Users\sams> plink -ssh -l username -pw root username@10.223.26.34 -t
"sudo -i && cd /root/docker/storm-supervisor/ && ./stop-all.sh"
实际结果:只收到第一条命令的输出。
预期结果:接收最终命令的输出。
sudo -i && cd /root/docker/storm-supervisor/ && ./stop-all.sh
在 Linux shell 中尝试您的命令。也不行。它将执行提升的 shell 并等待您键入命令。只有在你离开 sudo
shell 后,它才会 运行 其他命令(使用原始帐户)。
cd
和 ./stop-all.sh
是 sudo
的子命令。所以你必须这样对待他们。
最好的方法是在
sudo
命令行上提供命令:sudo "cd /root/docker/storm-supervisor/ && ./stop-all.sh"
但这可能需要修改
sudoers
文件。虽然这是正确的方法。或者您需要将命令提供给
sudo
输入:echo "cd /root/docker/storm-supervisor/ && ./stop-all.sh && exit" | sudo
或者将所有内容都提供给 Plink 输入:
( echo cd /root/docker/storm-supervisor/ echo ./stop-all.sh ) | plink -ssh -l username -pw root username@10.223.26.34 -t sudo -i
甚至:
( echo sudo -i echo cd /root/docker/storm-supervisor/ echo ./stop-all.sh ) | plink -ssh -l username -pw root username@10.223.26.34 -t