From: http://ifedora.diandian.com/post/2012-02-28/15816554
sudo 命令默认是通过终端设备读取密码,这样每次执行命令都需要用户输入密码后才能继续运行。但对于需要定时执行的脚本,就只能修改 sudo 读取密码的方法了。下面分别是一个关机和一个重启脚本的例子:
采用重定向的方法(关机)
#!/bin/bash
sudo -S shutdown -h now <<EOF
password
EOF
利用管道(重启)
#!/bin/bash
echo password | sudo -S shutdown -r now
其中选项 -S(S是大写的)是使 sudo 命令用标准输入替代终端输入,这样 sudo 命令就可以从脚本中读取到密码(即脚本中的 password)。只是,这种两种方法均需要将明文密码保存在脚本中,如果被别人看到这个脚本,就会知道系统密码了。