Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
‘last’ command to check for previous shutdown status?
10-02-2014, 05:09 PM,
Post: #1
Rainbow  ‘last’ command to check for previous shutdown status?
Untuk post ini, ianya mengenai menentukan shutdown status servers Linux / BSD, sama ada ianya clean shutdown, forced, power outages dan lain-lain. saya sudah googled banyak dalam mencari penyelesaian,tapi seolah-olah tidak ada jawapan konkrit untuk masalah ni. Command 'last' dalam linux / unix adalah untuk menunjukkan last logged in user dalam system. Dalam teori dan praktikal, physical production server tidak akan reboot dgn terlalu banyak, melainkan jika ianya adalah server ujian. Power outage, force shutdown, dan lain-lain tidak akan muncul dalam mana-mana logs dalam sistem. Command 'last' memberitahu masa tertentu, dan indicator terpenting bagi tujuan ini ialah isyarat 'reboot' dan 'shutdown'. Proper shutdownn akan sentiasa mempunyai isyarat 'reboot' dan 'shutdown' sama sekali. Bermakna, jika penutupan sistem dengan betul, jumlah 'reboot' dan 'shutdown' hendaklah sama. Kalau tak sama maksudnya sesuatu buruk sudah berlaku..Tapi ni semua sebenarnya teori aku semata. prove of concept ni hanyalah percubaan mainan bash scripting semata2 seperti dibawah:

*Post ni dicopy/di-olah dari blog post aku pada tahun 2012.

Code:
#!/usr/bin/env bash

log_dir="/var/log"
logs_ver=( "wtmp" "wtmp.1" "wtmp.2" "wtmp.3" )
sh="shutdown"
re="reboot"

for i in ${logs_ver[@]}; do
    wtmp_logs=$log_dir/$i
    if [ -f "$wtmp_logs" ]; then
        echo "Log for $wtmp_logs"
            if uname -a | grep -i bsd > /dev/null 2>&1;
                then echo "System is *Bsd variant"
                    absd=`last -f $wtmp_logs| grep -i -E "$re"|wc -l`
                    bbsd=`last -f $wtmp_logs| grep -i -E "$sh"|wc -l`
                    if [ $absd -gt $bbsd ]; then
                        echo "reboot $absd times > shutdown $bbsd times"
                        echo "sumething not right"
                    else
                        echo "reboot $absd times = shutdown $bbsd times OK"
                    fi
            elif uname -a | grep -i linux > /dev/null 2>&1;
                then echo "System is *Linux variant"
                    a=`last -a -x -f $wtmp_logs| grep -i -E "$re"|wc -l`
                    b=`last -a -x -f $wtmp_logs| grep -i -E "$sh"|wc -l`
                    if [ $a -gt $b ]; then
                        echo "reboot $a times > shutdown $b times"
                        echo "sumething not right"
                    else
                        echo "reboot $a times = shutdown $b times OK"
                    fi
            else
                echo "not found"
            fi
    else
        echo "wtmp log not existed for $wtmp_logs"
    fi
done
00110001 00110000 00100000 01101001 01110011 00100000 01110100 01110111 01101111 00100000 01101001 01101110 00100000 01100010 01101001 01101110 01100001 01110010 01111001
Reply


Forum Jump: