|
Программирование и разработка Обсуждение вопросов программирования |
|
Опции темы | Опции просмотра |
23.05.2011, 01:49 | #21 | |
Местный
|
Цитата:
но дело даже не в этом, вряд ли это кому-то может понадобиться еще это плод больного воображения препода и только. к жизни отношения не имеющий. |
|
24.05.2011, 21:03 | #22 |
Кот - обормот
|
Именно так. Слабо понимаю, нахрен это надо.
__________________
Use the downforce, Luke! |
24.05.2011, 21:22 | #23 |
Местный
|
|
24.05.2011, 22:33 | #24 |
Кот - обормот
|
Плохой пример, это разные вещи.
__________________
Use the downforce, Luke! |
25.05.2011, 15:04 | #25 |
Кот - обормот
|
В общем, сделал все заново так (вдруг кому интересно):
Код:
#!/bin/bash # Additional functions # Decimal to binary binary=0 decToBin(){ binary=`echo $1 | gawk -F. '{OFMT = "%.10g"; print $1*2^24+$2*2^16+$3*2^8+$4}'` } #Binary to decimal decimal=0.0.0.0 binToDec(){ decimal=`echo $1 | gawk '{ temp = $1; for (i = 1; i<=4; i++){ IP[i] = temp%2^8; temp = int(temp/2^8); } print IP[4]"."IP[3]"."IP[2]"."IP[1] }'` } # Part A Getting list of subnets and their masks. subnets=(` ifconfig -a | grep broadcast | gawk '{print $2}'`) count=${#subnets[*]} #Part B Updating ARP table i=0 while [ $i -lt $count ] do net=`netstat -rnv | gawk '$3 == "'${subnets[$i]}'" {print $1}' | grep -v 224 ` mask=` netstat -rnv | gawk '$3 == "'${subnets[$i]}'" {print $2}' | grep -v 240` decToBin $net net=$binary; decToBin $mask mask=$binary; comp=1; limit=`echo 2^32 - $mask - 1 | bc`; while [ $comp -lt $limit ] do ip=`echo $net + $comp | bc`; binToDec $ip; ping $decimal 1; if [ $? -eq 0 ] then rsh $decimal df -l; fi let "comp+=1"; done let "i+=1"; done
__________________
Use the downforce, Luke! Последний раз редактировалось TNT. 25.05.2011 в 15:05. |
25.05.2011, 21:05 | #26 |
Местный
|
что-то твое решение хреново совпадает с твоим же условием в первом посте и строчку с ifconfig ты переделал опять до того же некорректно работающего состояния sort там был не просто так.
|
25.05.2011, 22:38 | #27 |
Кот - обормот
|
А почему с условием не совпадает? Вроде нормательно: обновляет ARP-таблицу, как только пинг прошел - берет информацию df -l.
Да, кстати, насчет сорта: я так и не врубил, зачем был он нужен...
__________________
Use the downforce, Luke! |
25.05.2011, 22:40 | #28 |
Местный
|
"вывести... отвечающие на ARP-запросы". ping - это не arp-запрос, ответ на пинг может быть и не получен, а arp вполне.
sort нужен был для того, чтобы исключить дублирующиеся сети. |
25.05.2011, 22:45 | #29 | |
Местный
|
короче, вот это:
Цитата:
arp $decimal >/dev/null && rsh $decimal df -l; и все. |
|
25.05.2011, 22:50 | #30 |
Кот - обормот
|
Ну в принципе тоже верно.
А чем плоха проверка потока с ошибками? Просто не самый эффективный метод?
__________________
Use the downforce, Luke! |