有时需要用脚本来进行关机、重启操作,而在Ubuntu下,reboot、shutdown、halt执行又需要sudo特权进行执行。如何解决这个问题呢。
思路
有两种方案:
第一种是设定某些指令sudo执行无需输入密码直接执行,也即本文采用的方式。
第二种是打开一个shell子进程并得到进程id,分别向shell子进程中输入命令、登陆密码,然后命令就可以执行成功了。记得有专门的运维框架工具软件能实现,一时记不起来了,上网也没搜到。原谅我大脑内存不够。不用运维框架工具应该也有向子进程的标准输入多次输入指令的方式实现,只是目前还未找到具体的解决方案。遗留待大牛或者自己变牛后解决吧。先来点能解决眼前当下能用的法子。
sudo指令免密码直接运行方案
打开shell,输入sudo visudo指令。添加一行:
perrin ALL=NOPASSWD:/sbin/reboot,/sbin/shutdown,/sbin/halt
注意将第一个用户名换成自己登陆的用户名,root之类的。
其含义就是perrin用户在sudo 执行 reboot、shutdown、halt指令时无需输入密码直接就执行了。