作者 主題: [分享]每天登入系統使用者記錄 的shell script  (閱讀 2038 次)

0 會員 與 1 訪客 正在閱讀本文。

windgo

  • 懷疑的國中生
  • **
  • 文章數: 52
    • 檢視個人資料
last可以查這個月登入系統的人有誰
但是資料較難整齊表現出來(其實也可以啦 就是下參數 )
我的想法是 將登入總次數記錄下來 再跟是管理者的登入總次數比較
若登入總次數大於管理者的登入總次數 表示有不是管理者的人登入
將這些訊息每天寄給管理者參考

使用方法:

一、
建立目錄(可改變 但請修改shell script內容)
# mkdir /home/root/

二、
建立檔案(可改變 但請修改shell script內容)
# touch /home/root/month1 (空白即可)

三、
# ee /home/root/loginAcc.sh

內容如下:

#!/bin/sh

#抓取今天是幾號
thisday=`date "+%d"`
#抓取今天是禮拜幾
thisweek=`date "+%a"`
#抓取今天是幾月,並覆蓋到/home/root/month1裡
date "+%m" > /home/root/month1
#抓取要的月份資料 EX:6 因為上面的方法抓出來的是06 我們只要6
thismonth=`cut -c2 /home/root/month1`

#將今天資料指給today
today=`date`

#計算登入總次數
y=`last|grep tty|grep $thisweek|grep $thisday|grep $thismonth|wc -l`
#計算管理者xxx1的總登入次數
a=`last|grep tty|grep $thisweek|grep $thisday|grep $thismonth|grep xxx1|wc -l`
#計算管理者xxx2的總登入次數
b=`last|grep tty|grep $thisweek|grep $thisday|grep $thismonth|grep xxx2|wc -l`
#計算管理者xxx3的總登入次數
c=`last|grep tty|grep $thisweek|grep $thisday|grep $thismonth|grep xxx3|wc -l`
計算管理者登入總次數
d=$(($a+$b+$c))

echo ''
echo '今天是'$today

echo ''
echo '總共有'$y'筆使用者登入記錄'
echo '總共有' $d'筆管理者登入記錄'

echo ''
echo '管理者登入記錄'
echo '總共有'$a'筆xxx1登入記錄'
echo '總共有'$b'筆xxx2登入記錄'
echo '總共有'$c'筆xxx3登入記錄'

echo ''
#若使用者登入總次數大於管理者登入總次數
if [ $y -gt $d ]; then
echo "有非管理者登入 將執行 #last|grep tty|grep $thisweek|grep $thisday|grep $thismonth|more 檢查"
sleep 2
echo ''
#列出今天所有登入的使用者
last|grep tty|grep $thisweek|grep $thisday|grep $thismonth|more
fi

四、
讓程式可以執行
# chmod 700 /home/root/loginAcc.sh
然後跑跑看有無異常
# /home/root/loginAcc.sh

五、
放到Crontab每天PM11:59跑
# ee /etc/crontab

加入
#計算使用者登入次數
59 11 * * * root /home/root/loginAcc.sh

記得Crontab最下面要空白一行喔

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[分享]每天登入系統使用者記錄 的shell script
« 回覆 #1 於: 2003-06-25 14:19 »
utmpdump /var/log/wtmp
可以取得很多資訊
也是一個可以利用的地方