1
我有一個小問題:在SSH命令中加入su -c命令無法在其中運行命令
我想在Crontab中回顯一些帶有反引號的服務器。 繼承人我的樣本命令:
for server in $(cat list); do ssh -t [email protected]$server "su -c \"echo '35 * * * * $script_that_runs ''\'\`/bin/hostname\`''\' $Parameter2 $Parameter3' >> /var/spool/cron/crontabs/root \" "; done
在REMOTESERVER它顯示了像:
35 * * * * $script_that_runs '$hostname' $Parameter2 $Parameter3
但我想用那種方式:
35 * * * * $script_that_runs `/bin/hostname` $Parameter2 $Parameter3
我還沒有找到一個答案。也許我只是愚蠢地找到一個。 有沒有人得到這個解決方案?
問題是:
- ,如果我的su -c單引號,它不會工作
- 如果我不是逃避echo命令在實際目錄中的所有文件將中回顯crontab。
命令與最好的結果:
for server in $(echo $servername); do ssh -t [email protected]$server "su -c \"echo '35 * * * * /usr/lib/nagios/plugins/nsca_wrapper \`\`/bin/hostname\`\` apt-check /usr/lib/nagios/plugins/check_apt' >> /var/spool/cron/crontabs/root \" "; done
我想你需要雙轉義字符,因爲它被評估兩次。一旦進入終端,第二次進入遠程終端。 – Jakuje
似乎不適合我。 (結果:/ bin/hostname已經安裝了/ bin/hostname'(沒有反引號)) – Mamoru
剛剛嘗試過你的代碼,我得到的語法錯誤。你可以提供一個簡單的例子,但不包括循環,變量和內容會工作? – Jakuje