ssh heredoc 中 sudo 后跟另一个命令不起作用

ssh heredoc 中 sudo 后跟另一个命令不起作用

这是我的脚本:

#!/bin/sh

echo "I'm local"

ssh -t -t remote.server << 'EOF'
    sudo echo "I'm remote and sudo"
    echo "I'm remote but not sudo"
    exit
EOF

这根本不起作用,可能是因为该行echo "I'm not sudo"是作为密码提供的。

我怎样才能让它工作,没有:

  • 将密码直接输入到脚本中
  • 启用无密码 sudo,或者
  • 让所有东西都使用 sudo 吗?

或者,也许我的方法完全错误或者不适合这个目的?

答案1

我认为唯一的方法是分成两个单独的 ssh 命令:

#!/bin/sh

echo "I'm local"

ssh -t remote.server "sudo echo \"I'm remote and sudo\""
ssh -t remote.server "echo \"I'm remote but not sudo\""

您使用的重定向将始终将整个块重定向到命令,并且不会等待任何子命令成功(或失败)。

相关内容