Надо написать прогу под Linux!
2461
8
Надо написать прожку под Линукс. Которая - бы стояла на "сервере" :))) и мониторила все машинки в сети, чтобы можно было зайти на него и посмотреть, какие машины включены, а какие - нет.
Но также пресекала, точнее просто сигнализировала, что кто-то поменял себе ip самовольно!
т.е. надо сделать проверку по mac!
Max_13
Как понимаю, это влегкую можно свести к команде ping. Если пинга нет, машина выключена, насчет смены ip случай посложнее. Но думаю на Перле это можно решить. Первую часть по крайней мере легко.
Делал я такое пару лет назад. Проблема на фирме была - сотрудники, работавшие по ночам, включали чужие машины и выходили в сеть (платный диалап).
Решение. Маленький скрипт на перле запускает ping по всем ip в локальной сети раз в 5 минут и данные скидывает в БД на MySql. В любой момент можно было посмортеть html-страничку, на которой высвечивались сведения о работающих.неработающих машинах. С mac-адресами решили не извращаться - юзеры не настолько опытные( а опытный и сетевую карту мог бы поментять :-). К тому же делалось все в тайне от персонала и результат был - поймали нехороших человеков "с поличным".
Единственная возможная сложность для Win-программера - формат вывода команды ping на Linux и NT несколько отличается, но любой грамотный человек такое настроит. Так что, пишите под Win, а для Linux чуть-чуть подкорректируете.
Max_13
>... сигнализировала, что кто-то поменял себе ip самовольно!
Если выход во внешний мир идет через линух-сарвер, то проще запретить воопбще все IP Вашей сети, кроме законных (host.allow-host.deny) тогда самовольная смена IP просто ничего не даст.

В этом разе вся проверка действительно сводится к пингу, тут, мне кажется, и перла много - можно прямо на шелле написать.
Max_13
Интерестно мне все это стало, и решил я после работы попробовать таки написать подобную прогу, и вот что получилось:
--------------

#! /usr/bin/perl
@ipaddr=("192.168.1.1","192.168.1.2","192.168.1.3");

foreach $x (0..$#ipaddr)
{

system "ping $ipaddr[$x] -n 4 >res" || die "Error";

open (FL, "res") || die;
@res=;
close(FL);

unlink "res";

foreach $y (0..$#res)
{
if ($res[$y]=~/TTL/i)
{
print "Компьютер $ipaddr[$x] включен!\n";
goto nextaddr;
}
}
print "Компьютер $ipaddr[$x] выключен!\n";

nextaddr:
}

Правда писал ее под Виндовсом, но и в Линуксе должна без переделок работать.
Max_13
2chervick: дело в том, что у нас в сетке есть люди очень грамотные, блин!:улыб:т.е. надо еще и по мас делать проверку!:хммм:но вот КАК??

2Rootman: твою пражку не пробовал, пасиб! но фишка в том, что если я пингую машинку из под rh 6.2 и машины нету в сетке, то пинг просто "вешается" т.е. снимается только по Ctrl+c!

2"Тезкович":улыб:: дело в том, что у нас в сетке не все машины включены круглосуточно!!! просто есть люди, которые могут делать так:
пишут скрипт, чтобы пинговались машины (как у меня на серваке) и когда машина выключена, то занимают ее ip! т.е. просто свой интерфейс down, а потом поднимает с другим ip. или в наглую занимает ip пользователя, который сидит под Виндами!!!
у нас ведь в сетке машин 6 под Линухом висят и за ними сидят ДАЛЕКО не ламеры!
Max_13
Если в пинге использовать ключ -n (указывает количество пингов), то не должна вешаться.
Насчет МАС адресов, его можно определить с помощью системной команды ARP.
Max_13
Я думаю лучше будет поднять зарплату этим 6 человекам и поставить камеру наблюдения.
Max_13
у нас ведь в сетке машин 6 под Линухом висят и за ними сидят ДАЛЕКО не ламеры!

Слушай, а договориться? Если это не мелкое юзверьё - имхо, реально. Ну, или они тебя просто проверяют на профпригодность... Тогда докажи!