Portál AbcLinuxu, 14. května 2025 01:27
#! /bin/bash #arpagon if [ "$1" != "-p" ]; then mysql -N -D webconf -u root -e 'select IP from IPadresy' | while read row do IFS='|' cols=(${row//$'\t'/|}) ping $cols -i 1 -c 1 done fi mysql -N -D webconf -u root -e "update IPadresy set prihlasen=0" arp -n -i eth1 | while read Address HWtype HWaddress Flags Iface do #IFS='|' if [ "$HWaddress" != "(incomplete)" ]&&[ "$Iface" == "eth1" ] ;then mysql -N -D webconf -u root -e "update IPadresy set prihlasen=1 where ip='$Address' and mac='$HWaddress'" #echo prihlasen $Address $HWaddress $HWtype fi donev databázi jsou uloženy všechny ip a jejich mac adresy + položka prihlasen, která obsahuje 0/1 podle toho jestli je ip na síti. Zda je ip připojená určuji příkazem arp -n -i eth1, jeho výsledek čtu read-em. pokud proměnná HWaddres obsahuje (incomplete) znamená to, že ip připojená není, Iface kontroluji jen pro jistotu. Problém ale je jak donutit počitač ke komunikaci s routerem, pro tento účel slouží 1. část skriptu, která propingá celou síť, ale tato část je velmi pomalá, hlavně pokud daná ip neodpovídá čeká ping velmi dlouho na timeout, nevíte o rychlejším způsobu jak donutit stanici ke komunikaci? napadlo mě poslat multikástem libovolný paket na libovolný port, protože HW komunikace proběhne stejně, ať stanice paket příjme nebo ne, ale nevím jak to udělat.
nmap -sP |grep Host
a vysledok preparsovat...
napadlo mě poslat multikástem libovolný paket na libovolný port, protože HW komunikace proběhne stejně, ať stanice paket příjme nebo ne, ale nevím jak to udělat.
man ping ping -bc 1 255.255.255.255Na Solarisu stačí bez
-b
.
PS. Tahat do toho SQL databázi... Že vy jste začínal na PHP?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.