![]() |
Скрипт на баше
Нужно написать скрипт на bash/ksh. Нужно вывести все системы, имеющие IP адрес в подсетях исходной системы и отвечающие на ARP запросы, потом вывести информацию об использовании дискового пространства локальных файловых систем.
Т.к. я хреново это все знаю, то намутил кучу и уже запутался. Просьба не обращать внимания на кучу лишних переменных, знаю, что убрать можно много. Код:
100 пудов это все пишется, конечно, гораздо короче и менее запутано. Если кто подскажет - буду очень признательный. |
у тебя в первой же строчке ошибка, если в системе два адреса из одной сети - он тебе выдаст не одну сеть, а две. если пять - то пять.
с остальным не разбирался, запутано у тебя все. |
Запутано - не то слово...
Скрипт знакомый писал, потом я его еще мучал. В первой строчке ключ -l не дописал к wc. Вообще, выводит правильно - на три подсети три записи. |
а на три сети, но пять адресов?
|
Я так понимаю, вот эта строчка имеется в виду:
ifconfig -a | awk '{if($5=="broadcast") print $2}' | wc -l Так после awk же остаются только бродкаст-адреса, т.е. их в любом случае столько же, сколько подсетей. Три я написал потому, что там, где скрипт исполняется их три, а адресов то там прилично. |
$ ifconfig -a | awk '{if($5=="broadcast") print $2}'
192.168.10.250 192.168.11.250 192.168.10.111 192.168.11.111 85.114.xxx.xxx вывело пять, хотя сетей всего три. при этом есть еще два tun интерфейса от openvpn, в которых отсутствует broadcast и соответственно скрипт о них ничего не узнает :) |
в общем, эту строчку, изначально кривую, надо заменить вот этим - ifconfig -a | grep broadcast |sort -u +5 |wc -l
у меня на freebsd работает правильно. |
Благодарю :) Я хреново в этом разбираюсь :)
То есть бродкаст-адресов может быть больше, чем сетей? Я думал, что для каждой сети может быть только по одному бродкасту: адрес сети с маской. |
броадкаст выводится на каждый адрес, вне зависимости от того, есть ли еще адреса из этой сети в системе или нет.
а вообще завязываться на ifocnfig опасно, так как его вывод не стандартизирован и то, что у меня работает правильно на фре, может не сработать на линухе... правда как сделать по-другому пока не знаю :) |
Мне надо, чтобы на Солярисе работало :) В общем-то, должно.
На ifconfig завязываться нужно - попросили именно так делать. А вообще, по идее, можно еще из hosts вытащить. Но сказано не делать. Хотя, если есть третий способ без hosts, думаю, должно прокатить. |
Текущее время: 01:34. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot