Skocz do zawartości

Skrypt Do Wyłuskania Info O Kompie


(BigFan)!

Rekomendowane odpowiedzi

cześć,

 

napisałem jakiś czas temu skrypcik do wyłuskiwania informacji o komputerze

 

#!/bin/ksh

Prg=`basename $0`
Usage="Usage: $Prg <hostname>"

DIR=`dirname $0`/..

Host=`hostname`

format4="%-25s %-10s %-20s %-50s\n"
#
# FUNCTIONS
#

genconf() {
   mydate=`date +"%d/%m/%y %H:%M"`
   printf "$format4" $Host sys date "$mydate"

   # DNS domain:
   if [ -f "/etc/resolv.conf" ];
   then
       var=`awk '{ var=tolower($1); if ( var == "domain" ) { printf "%s",$2 }}' /etc/resolv.conf`
   else
    var="unknown"
   fi
   printf "$format4" $Host sys dnsdomain "$var"

   # server model:
   # ??? DO zrobienia w C

   # system OS and kernel:
   os=`uname -o`
   kernel=`uname -r`
   kernelarch=`uname -i`
   printf "$format4" $Host sys osver "$os"
   printf "$format4" $Host sys kernel "$kernel"
   printf "$format4" $Host sys kernelarch "$kernelarch"

   # hardware architecture:
   mem=`free | awk '{ if ( $1 == "Mem:" ) { printf "%s %s",$2,kB }}'`
   printf "$format4" $Host sys mem "$mem"

   nbcpu=`cat /proc/cpuinfo | grep processor | wc -l`
   printf "$format4" $Host sys nbcpu "$nbcpu"

   model=`cat /proc/cpuinfo | grep "model name" | uniq | awk '{print $4$5}'`
   printf "$format4" $Host sys cpumodel "$model"

   freq=`cat /proc/cpuinfo | grep "cpu MHz" | uniq | awk '{print $4}' | awk -F"." '{print $1}'`
   printf "$format4" $Host sys cpufreq "$freq MHz"

   cache=`cat /proc/cpuinfo | grep "cache size" | uniq | awk '{print $4$5}'`
   printf "$format4" $Host sys cpucache "$cache"

   # SWAP
   swap=`free | awk '{ if ( $1 == "Swap:" ) { printf "%s",$2 }}'`
   printf "$format4" $Host sys swap "$swap kB"

   # MAC addresse(s):
   typeset -i i=0
   bondcards=""                            # the network cards in bond
   networkcards=`ifconfig -a | grep -i HWaddr | awk '{ printf "%s ",$1 }'`
   for card in $networkcards
   do

    #
    # if bonding card
    #
    exist=`echo $card | grep "^eth"`
    if [ -z "$exist" ];                # bonding card
    then
        cardstmp=`grep eth /proc/net/bonding/$card | awk '{ printf "%s ",$NF }'`
        bondcards="${bondcards} $cardstmp"
    fi

    speed="not configured"
    duplex="not configured"
    MAC=`ifconfig $card | grep -i "HWaddr" | awk '{ printf "%s ",$NF }'`
    IP=""
    IP=`ifconfig $card | awk '{ if ( $1 == "inet" ) { printf "%s %s",$2,$NF }}'`
    if [ -z "$IP" ];        # network card is not configured
    then
         var1="not configured"
        var2=$var1
        exist=`echo $bondcards | grep $card`
        if [ -f "/sbin/ethtool" -a -n "$exist" ];    
        then
                speed=`/sbin/ethtool $card | awk '{ if ( $1 == "Speed:" ) { print $NF }}'`
                duplex=`/sbin/ethtool $card | awk '{ if ( $1 == "Duplex:" ) { print $NF }}'`
        fi
    else
        var1=`echo $IP | awk '{ print $1 }' | awk -F":" '{ print $2 }'`
        var2=`echo $IP | awk '{ print $2 }' | awk -F":" '{ print $2 }'`
        if [ -f "/sbin/ethtool" ];    
        then
            speed=`/sbin/ethtool $card | awk '{ if ( $1 == "Speed:" ) { print $NF }}'`
            duplex=`/sbin/ethtool $card | awk '{ if ( $1 == "Duplex:" ) { print $NF }}'`
        fi
    fi

       printf "$format4" $Host sys lan$i "$card"
       printf "$format4" $Host sys mac$i "$MAC"
    printf "$format4" $Host sys speed$i "$speed"
    printf "$format4" $Host sys duplex$i "$duplex"
       printf "$format4" $Host sys ip$i "$var1"
       printf "$format4" $Host sys netmask$i "$var2"

    i=i+1
   done
      
   # Disks list:
   typeset -i i=1
   fdisk -l 2>/dev/null | grep Disk | while read myline
   do
    disk=`echo "$myline" | awk '{ printf "%s",$2 }' | tr -d ":"`
    size=`echo "$myline" | awk '{ printf "%s %s",$3,$4 }' | tr -d ","`
       printf "$format4" $Host sys disk$i "$disk $size"
    i=i+1
   done

   # OS Installation date:
   # 
}

#
# MAIN
#

genconf

exit 0

 

skrypcik działa, ale mam do Was dwa pytania:

 

1) - jak go mogę jeszcze bardziej rozbudowac? Chce aby skrypcik '#!/bin/ksh' pokazywał mi wszystko co jest tylko możliwe o danym komputerze - np. info o sprzęcie - o karcie sieciowej, o procku, o grafice itp oraz info o wszystkim co przydałoby się administratorowi sieci - podpowiedzcie mi co!! - aby ten administrator mógł stwierdzić z jakim ma kompem styczność i co może by zepsute w tym kompie (w moim skrypcie jest to np. adres MAC karty, czy adres IP hosta). Jak wyłuskac nazwę/identyfikator komputera?

 

2) - chcę zrobić w PHP skrypcik, ktory bedzie pobierał dane zwrócone przez ten skrypt '#!/bin/ksh' i aby te dane były wyświetlane nie statycznie, tylko w sposób dynamiczny. Mam na myśli takie rozwiązanie, że skrypt '#!/bin/ksh' bedzie pobierał dynamicznie (co jakiś czas, albo przez cały czas) te dane z kompa, a skrypt w PHP bedzie te dane dynamicznie odbierał (co jakiś czas, albo przez cały czas) i aby wszelka zmiana została wyświetlona natchmiastowo przez ten skrypt PHP.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...