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

2番目の引数をコードに統合する必要があります。これにより、ユーザーは、スクリプトがログインしているユーザーを確認するために何時以降にチェックするかを指定できます。現在60秒に設定されており、これをデフォルトの頻度にする必要があります。別の関数を使おうとしましたが、役に立ちませんでした。こんなことを考えました...

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

ウィリアムに感謝します。とても役に立ちました!コードを少し変更して、これを思いついた。次に、3番目の引数「X」を追加する必要があります。これを選択すると、画面ではなくログファイルにメッセージが送信されます。私は試みましたが、意図したとおりに行いませんでした。

 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
4

3 に答える 3