Portál AbcLinuxu, 9. listopadu 2025 05:48
#! /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.