【发布时间】:2015-04-29 09:38:52
【问题描述】:
这是我的简单 runme.sh:
#!/bin/bash
/bin/echo 'CbEYKFKt' | /usr/bin/sudo -S /bin/su -c "whoami;/etc/init.d/iptables stop"
其中,'CbEYKFKt' 是当前用户的密码:samX,具有 root 权限(在visudo 中附加了"samX ALL=(ALL:ALL) ALL")。我打算在 crontab 中的特定时间停止 iptables,但是时间到了 iptables 服务没有发生任何事情。不过,如果我执行bash runme.sh,它会正常工作。
我的crontab如下:
58 16 * * * /bin/bash /home/data/samX/runme.sh 2>&1 > /home/data/samX/log_cron
不会将任何内容打印到 log_cron 文件中。我的代码有什么问题吗?提前致谢。
附言
将2>&1 移到末尾后打印错误:
sudo:抱歉,你必须有一个 tty 才能运行 sudo
有人知道这是什么意思吗?
【问题讨论】:
-
顺序很重要:试试
58 16 * * * /bin/bash /home/data/samX/runme.sh > /home/data/samX/log_cron 2>&1 -
正如我在您的other question 中告诉您的,您应该修复您的 sudoers,但这仅适用于想要复制已保存密码的其他读者。
-
为什么顺序很重要?相关官方解释的链接表示赞赏:] @martin
-
我只是在测试这个场景,一旦解决了,我会在 visudo 中添加 NOPASSWORD。感谢再次提及! @马丁
-
为什么不用root的contab?