我想写一些东西到visduo,我不能写到/etc/sudoers
for SERVER in $(cat some.txt); do
ssh -q -o StrictHostKeyChecking=no root@$SERVER '
echo 'm2madm ALL=(ALL:ALL) NOPASSWD:/sbin/iptables -L' | sudo EDITOR='tee -a' visudo
'
问题出在'
但是我真的不知道该怎么办,你能帮帮我吗?
输出是:
domain_check.sh: line 25: syntax error near unexpected token `('
domain_check.sh: line 25: `echo ('m2madm ALL=(ALL:ALL) NOPASSWD:/sbin/iptables -L' | sudo EDITOR='tee -a' visudo)'
最佳答案
如果您想在通过 ssh 发送的字符串中使用变量,请用 "
将该字符串括起来。在字符串中您应该使用单引号 '
,或者转义每个双引号 \"
.
你的问题发生是因为你在你想要之前“关闭”了字符串。以下应该有效。
for SERVER in $(cat some.txt); do
ssh -q -o StrictHostKeyChecking=no root@$SERVER "
echo 'm2madm ALL=(ALL:ALL) NOPASSWD:/sbin/iptables -L' | sudo EDITOR='tee -a' visudo
"
done
附言有一个 shell 拼写检查站点,您可以在其中测试您的代码。我不知道是哪一个,但我会将其作为评论添加到我的答案下方。
关于linux - Bash - 写入 visudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58074793/