powershell 使用Plink执行(sudo)子命令

9ceoxa92  于 2023-03-30  发布在  Shell
关注(0)|答案(1)|浏览(198)

我试图从Windows PowerShell命令Linux机器.命令依赖于之前的命令的失败/通过.因此,我必须把所有的命令在一起.我已经尝试了多种方式把命令在一起,但在结束时,我只收到第一个命令的输出.

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"

实际结果:只接收第一个命令的输出。
预期结果:接收最终命令的输出。

fnvucqvd

fnvucqvd1#

sudo -i && cd /root/docker/storm-supervisor/ && ./stop-all.sh

在Linux shell中尝试您的命令。它也不会工作。它将执行一个提升的shell并等待您键入命令。只有在您离开sudo shell后,它才会运行其他命令(使用原始帐户)。
cd./stop-all.shsudo的子命令。所以你必须这样对待它们。

  • 最好的方法是在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

相关问题