Ssh

sudo 後跟 ssh heredoc 中的另一個命令不起作用

  • June 18, 2018

這是我的腳本:

#!/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,或
  • 做一切須藤?

或者,也許我的方法完全錯誤或不尋常?

在我看來,唯一的方法是拆分成兩個單獨的 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\""

您使用的重定向將始終將整個塊重定向到命令,並且不會等待任何子命令成功(或失敗)。

引用自:https://serverfault.com/questions/917074