【问题标题】:Executing (sudo) subcommands using Plink使用 Plink 执行 (sudo) 子命令
【发布时间】:2020-09-24 14:33:05
【问题描述】:

我正在尝试从 Window 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"

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

预期结果:接收最终命令的输出。

【问题讨论】:

    标签: powershell ssh command-line putty plink


    【解决方案1】:
    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
      

    【讨论】:

    • 谢谢,帮了大忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多