分页: 2 / 2

Re: 请教:交互式超时自动关机脚本

发表于 : 2012-01-29 22:30
halfwolf
谢谢tusooa兄弟,我按照你在13楼提供的做法在家中pc上(ubuntu)试验了一遍,结论如下
1、在命令 行中单独运行./readver一切良好,脚本会等着我来敲击键盘,譬如敲击abc回车,则运行结果为
var is abc
2、在makefile中调用,make后直接输出返回结果,并没有等待用户敲击键盘,当然结果也不是自己想要的。返回的结果为
var is 1234567
注:1234567为我的root密码
3、如果我在循环中调用 read var,则第一次返回的为我的root密码,后面则为空;

刚刚又在公司的两台电脑(redflag 和redhat)上试验了一下,13楼的做法完全可行。
ubuntu下的错误可能是因为输入sudo密码所致,晚上回去取消sudo密码后再试试看!

在ubuntu下的新实验结果:
实验一
修改/etc/sudoers以后(操作无需输入root密码),make方式执行依然有问题;
实验二
用sudo su -切换至root账户,通过make方式与直接执行脚本一样(与13楼描述相同);
实验三
受下面一个帖子的启发
viewtopic.php?f=97&t=112874
按sudo make 方式执行,结果正常;


有没有哪位大牛能解释一下,ubuntu系统下普通账号和root账号执行make为什么有这样的差异?

Re: 请教:交互式超时自动关机脚本

发表于 : 2012-01-31 0:21
halfwolf
谢谢各位的指导,脚本已经完成,如下
cat autoshutdown.sh
---------------------------------------------------------------------
#!/bin/bash
EndTime=30
for CurTime in `seq 0 $EndTime`
do
if [ $CurTime -eq $EndTime ]
then
echo wolf | sudo -S shutdown -h now
else
echo "Do you want to shut down? "
echo "Enter yes or no: "
read -t 60 x
case "$x" in
y | yes )
echo "Your answer is YES!"
echo "The computer will be shutdown!"
echo wolf | sudo -S shutdown -h now
;;
n | no )
echo "Your answer is NO!"
echo "The program will exit!"
exit;;
* ) echo "";;
esac
fi
done
=======================================

cat Makefile
---------------------------------------------------------------------
all:
./autoshutdown.sh

=======================================
运行方式
sudo make