2012-11-27 72 views
2
username=$1 
freq=$2 

checkuser() 
{ 
    if who grep "$1" 
    then 
    sleep 60 
    fi 
} 

if [ -n "$1" ] 
then 
echo "Enter username" 
read username 
checkuser 
echo -e "$1 is logged on \a" 
echo -e "$1 logged in at `date`">>LOG 
checkuser 
else 
echo "User is not logged on" 
fi 

我需要集成第二个参数为我的代码,允许用户指定后什么时候应该脚本检查,看是谁登录。我有目前设置为60秒,这需要默认频率。我试图使用另一个功能,但无济于事。我想到了这样的事情...shell脚本来指定用户登录到计算机

if [ "$2" -ne 0 ] 
then 
freq=$2 
else 
freq=60 

感谢威廉那是非常有帮助的!我改变了一下代码,并提出了这个问题。我现在需要添加一个第三个参数“X”,它在选择时仅向LOGFILE发送消息而不是屏幕。我做了一次尝试,但没有按照预期做。

username=$1 
freq=${2:-10} 
X=$3 

checkuser() 
{ 
whoami|grep "$1"; 
} 

while checkuser "$username" 
do 
echo -e "$1 is logged on \a" 
echo "$1 logged in at `date`">>LOGFILE 
sleep $freq 
exit 0 
done 
echo "User is not logged in" 

if [ "$3" -ne 1 ] 
then 
echo "$1 logged in at `date`"LOGFILE 
fi 

回答

1
username=$1 
freq=${2:-60} # Set a default frequency 

checkuser(){ who | grep -q "$1"; } 

while ! checkuser "$username"; do 
    echo "User is not logged on"  
    sleep $freq 
done 
echo "$1 is logged on" 

另外请注意,您可以简化用户名的设置:

username=${1:-$(echo "Enter username: "; read u; echo $u;)} 
0
echo 'Enter id' 
read id 
res=`who | grep "$id" | wc -l` 
if [ $res -eq 0 ] 
then 
    echo 'user is not logged in' 
else 
    echo 'user is logged in' 
fi