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