Witam,
Potrzebuje, korzystajac z polecenia ping, wyslac kilkadziesiat zapytan icmp
do
hostow, ale z ustawionym timeout na 100ms. Standardowo program ping
umozliwia
ustalenie timeout w sekundach, co jest dla mnie przeszkoda. Do tej pory
uzywalem
przerobionego fping, ale niestety musze wykonac to samo zadanie na
klasycznym ping.
Probowalem wykorzystac konstrukcje typu:
IP_TAB=(
192.168.0.200
192.168.0.20
192.168.0.100
192.168.0.10
)
SendICMP()
{
local IP="${1}"
local BIN="ping"
local OPT="-n -c 1"
local TIMEOUT="100000"
$BIN $OPT $IP &
PID=$!
usleep $TIMEOUT
kill -HUP $PID 2>/dev/null
}
for IP in [EMAIL PROTECTED]; do
echo "[$IP]"
SendICMP "$IP"
done
echo "Koniec"
read; exit
Jednak z mizernym skutkiem. Potrzebuje rowniez, aby rezultat dzialania ping
zapisany byl w zmiennej:
RET=`$BIN $OPT $IP` &
Ale wtedy nie uzyskam PID procesu wykonujacego ping. Dodatkowy problem
sprawia kill w
chwili, gdy proces ping zakonczyl wczesniej swoje dzialanie niz ustalony
przez usleep timeout.
Sprawdzalem rowniez mozliwosci sygnalu SIGCHLD oraz SIGALRM, ale na razie
nieskutecznie.
--
Marcin