Portál AbcLinuxu, 12. května 2025 13:04

Dotaz: Monitoring ip adres

20.12.2009 13:44 Romis
Monitoring ip adres
Přečteno: 818×
Odpovědět | Admin
Zdravím, shaním konzolový prográmek, který by mi monitoroval ip adresy (na serveru, který je jako gateway a zároveň DHCP) a zobrazoval od kdy a do kdo byla jaká stanice s konkrétní IP adresou připojená. Výstup by byl ideálně do html souboru. Nevíte o něčem takovém?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.12.2009 22:00 Buri
Rozbalit Rozbalit vše Re: Monitoring ip adres
Odpovědět | | Sbalit | Link | Blokovat | Admin
hm. neviem, ale asi bych cronom pustil kazdych N minut "nmap -sP 192.168.0.0/24" vysledok pripisoval do suboru. (nmap tam tusim da aj cas), no a potom to nejak analyzovat.... aha alebo bych ozaj skusil hladat nieco hotove.... lenze on moze mat niekto firewall a nmap sa cez neho nemusi "predrat". hm zaujimave mozno bude mat niekto cez sviatky cas
21.12.2009 22:41 faha
Rozbalit Rozbalit vše Re: Monitoring ip adres
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co treba smokeping? http://oss.oetiker.ch/smokeping/
22.12.2009 14:48 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: Monitoring ip adres
Odpovědět | | Sbalit | Link | Blokovat | Admin

Záleží, co od toho přesně chceš. Nejjednodušší varianta (s ohledem na zátěž serveru a potřebné zásahy) je využít log DHCP serveru. Tj. budeš tam mít kdy si jaký klient žádal o adresu, kdy mu byla která přidělena a kdy ji uvolnil. Samozřejmě je to důvěryhodné natolik, nakolik lze věřit klientům, že se řídí DHCPkem. Navíc ti tam může chybět zpráva o uvolnění adresy pokud jej klient při vypnutí nepošle (pád systému apod.). Ale přinejmenším při příštím přiřazení téhle IP se to pořeší.

Další možností je prostě logovat si ARP cache. (příkazy arp, resp. ip ne; pokud by ti nestačila velikost cache jádra, tak třeba arpd). Výhodou je opět zcela pasivní chování a navíc dost dobrá spolehlivost. Nevidíš tím sice zapnuté počítače, které aktuálně nekomunikují, ale otázkou je, jestli jsou takové vůbec zajímavé.

Ping – no pokud už chceš pingat, tak pokud možno přes ARP ping (umí třeba nmap, pokud je spuštěný s root právy). Výhodou je, že ARP nemůže blokovat žádný firewall, pokud má počítač rozumně fungovat (resp. jo, může mít fixní ARP tabulku, ale to už je trochu mimo normální situace).

26.12.2009 20:21 Romis
Rozbalit Rozbalit vše Re: Monitoring ip adres
Tak zatim, jsem udelal takovyto skriptik, neni to nic extra, ale pro me dostacujici.

Pinguje pres nmap a do souboru, pojmenovanem jako ip adresa, uklada datum a cas, od kdy do kdy byl ping uspesny. Vzdycky je na zacatku radku datum a pak se davaji hvezdicky, pokud byl predchozi ping ping uspesny. Pokud nebyl, tak da cas a priste pokud pingne, tak da uz hvezdicku. Viz. komentare ve skriptu, nebo to rovnou otestujte.

Je idelani pro crona. Kdo by ho chtel pouzit, tak klidne muze, ale je to verze, kterou testuju, tak ne, ze budete hned vystupy posilat sefovi a on podle toho bude pocitat vyplaty :D

Do budoucna se chystam jeste udelat dalsi skript, ktery bude pocitat ty hvezdicky:) a delat nejake soucty hodin za tyden a to vsechno do html souboru.

Urcite se neco podobneho da sehnat na netu, ale ja jsem se chtel aspon trochu naucit v Bashi
#!/bin/bash

# tento skript je delan na to aby ho spustel cron po nejakych
# rozumnych intervalech napr. 15 min

# vkladejte adresy oddelene novym radkem viz. dale
ip_range="
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5"

nmap -sP $ip_range -oG IP_temp &> /dev/null 

### !!!  pokud budete chtit casem pridat adresu do rozsahu pridejte ji do
### !!!  promenne $ip_range i do souboru lastping

# zkontroluje jestli existuje soubor lastping
# pokud ne vytvori se a ulozi se do nej adresy z ip_range
if [ ! -f lastping ]; then
  touch lastping
  declare -a ip
  ip=(`echo $ip_range | tr ' ' ' '`)
  for each in ${ip[@]}; do
    echo "$each" >> lastping
  done
fi

# rozparsuje vystup z nmapu a vybere z nej uspesne pingnute ip adresy
while read line; do
  echo $line | egrep "Status: Up" | egrep -o "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}" >> IP_temp2
done < IP_temp

# funkce vraci informaci o poslednim pingu
# pracuje ze souborem lastping
# jeden parametr ip adresa
function getLastPing() {
  hlp=0
  while read line; do
    if [ "$line" = "$1" ]; then
      hlp=1   
    fi
  done < lastping
  if [ $hlp == 1 ]; then
    echo "1"
    return 0
  fi
  echo "0"
  return 0
}

# nacteme promenne s casem
min=`date +%M`
hour=`date +%H`
day=`date +%d`
month=`date +%m`
year=`date +%Y` 

# pro kazdou uspesne pingnutou ip ulozi do souboru pojmenovaneho podle ip
# bud cas pokud minuly ping selhal nebo hvezdicku pokud v pingoovani pokracujeme
while read ip; do
  # zjistime info o poslednim pingu
  lastping=`getLastPing $ip`

  # pokud soubor s ip neexistuje
  if [ ! -f $ip ]; then
    # vytvorime ho
    touch $ip
    # a na prvni radek pridame info o zacatku testovani
    # a info o last pingu nas asi moc nezajima, takze ulozime cas
    echo -n "$day.$month.$year  $hour:$min " >> $ip
  # pokud existuje soubor s ip
  else
    # zkontrolujeme jestli nezacina novy den
    if [ `tail -1 $ip | egrep -c "$day.$month.$year"` == 0 ]; then
      # zacal novy den
      # porovname lastping
      if [ $lastping == 1 ]; then
        # pokracujeme takze dame hvezdicku
        echo -n "$day.$month.$year  *" >> $ip
      else
        # nepokracujeme takze dame cas
        echo -n "$day.$month.$year  $hour:$min " >> $ip
      fi
    else
      # novy den nezacal
      if [ $lastping == 1 ]; then
        # pokracujeme takze dame hvezdicku
        echo -n "*" >> $ip
      else
        # nepokracujeme dame cas
        echo -n " $hour:$min " >> $ip 
      fi
    fi
  fi
done < IP_temp2

# uklada info o uspesne pinglych adresach do lastping
touch hlpfile
while read line; do
  hlp=0
  pureIP=`echo "$line" | egrep -o "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"`
  while read ip; do
    if [ "$pureIP" = "$ip" ]; then
      hlp=1
    fi
  done < IP_temp2
  if [ $hlp == 1 ]; then
    echo $pureIP >> hlpfile
  else
    echo "$pureIP !" >> hlpfile
  fi
done < lastping

## uklid ##
mv hlpfile lastping
rm IP_temp IP_temp2 

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.