peektoseen Posted December 3, 2011 Posted December 3, 2011 (edited) Привет всем. Какие-то плохие люди вырезают кабель. Причем режут не так, чтобы унести, а так, чтобы хуже сделать, на каждом этаже. За ночь по два-три подъезда режут. Уже четвертый раз за неделю. В сети около 120 dlink'ов, все управляемые DES-3550, DES-3552. Может у кого-нибудь есть скриптик (желательно на perl, но подойдет любой), работающий с cable-diag, поделитесь пожалуйста. Скрипт не обязательно мониторящий длинну кабеля (такой уж был бы вообще что надо), хотя-бы который как-нибудь работал с cable-diag. Edited December 3, 2011 by peektoseen Вставить ник Quote
peektoseen Posted December 3, 2011 Author Posted December 3, 2011 (edited) Да нет :) этих я думаю не занесет к нам. Новых никого не появлялось. У нас всего два провайдера. Мы и МРК. Скорее всего какой-нибудь недовольный (или команда недовольных). Психов хватает. Edited December 3, 2011 by peektoseen Вставить ник Quote
Diman Posted December 3, 2011 Posted December 3, 2011 как то так: #!/bin/sh sw=172.16.0.222 port=2 # проверим длину линка rx=`cat rx-$sw-$port` tx=`cat tx-$sw-$port` snmpset -v2c -c private $sw .1.3.6.1.4.1.171.12.58.1.1.1.12.$port i 1 set x `snmpget -v2c -c private $sw .1.3.6.1.4.1.171.12.58.1.1.1.8.$port` rx_new=$5 rx_cmp=`expr $5 + 5` set x `snmpget -v2c -c private $sw .1.3.6.1.4.1.171.12.58.1.1.1.9.$port` tx_new=$5 tx_cmp=`expr $5 + 5` if [ $rx_cmp -lt $rx -o $tx_cmp -lt $tx ]; then echo \(spizdili kabel\) | mail -s "CABLE link: $rx_new at port $port $sw" 7927xxxxxxx@sms.mgsm.ru fi Вставить ник Quote
Abram Posted December 3, 2011 Posted December 3, 2011 sub test_cable { my %report; $report{uid} = shift; my $port = shift; my ($session, $error) = Net::SNMP->session( -hostname => shift || 'localhost', -community => shift || 'private', ); my $oid = '1.3.6.1.4.1.171.12.58.1.1.1.'; my @pair_status = ( 'ok', 'open', 'short', 'open-short', 'crosstalk', 'unknown', 'count', 'no-cable', 'other' ); my $max_tries = 10; $report{'text'} = ''; if (!defined $session) { printf "ERROR: %s.\n", $error; return undef; } my $result = $session->set_request(-varbindlist => [ $oid.'12.'.$port , INTEGER, 1 ],); if (!defined $result) { printf "ERROR: %s.\n", $session->error(); $session->close(); return undef; } # Wait while test executes my ($tries, $test_passed) = (0, 0); while ($tries < $max_tries && $test_passed != 1) { $result = $session->get_request(-varbindlist => [ $oid.'12.'.$port ],); if (!defined $result) { printf "ERROR: %s.\n", $session->error(); $session->close(); return undef; } if ($result->{$oid.'12.'.$port} == 3) { $test_passed = 1; next; } $tries++; sleep(1); } $result = $session->get_request(-varbindlist => [ $oid.'3.'.$port, # Link state (1 = up) $oid.'4.'.$port, # Pair 1 (0 = ok) $oid.'5.'.$port, # Pair 2 (0 = ok) $oid.'6.'.$port, # Pair 3 (8 = no cable; ok for 100 mbit) $oid.'7.'.$port, # Pair 4 (8 = no cable; ok for 100 mbit) $oid.'8.'.$port, # Pair 1 length $oid.'9.'.$port, # Pair 2 length $oid.'10.'.$port, # Pair 3 length (unused) $oid.'11.'.$port, # Pair 4 length (unused) ],); if (!defined $result) { printf "ERROR: %s.\n", $session->error(); $session->close(); return undef; } if ($result->{$oid.'3.'.$port} != 1) { $report{text} .= 'No link. '; $report{nextcheck} = int(time() + 3600 + rand(300)); } if ($result->{$oid.'8.'.$port} == 0 && $result->{$oid.'9.'.$port} == 0 && $result->{$oid.'4.'.$port} == 7 && $result->{$oid.'5.'.$port} == 7) { $report{text} .= 'No cable. '; } else { for (my $pair = 1; $pair <= 2; $pair++) { if ($result->{$oid.($pair+3).'.'.$port} > 0) { $report{text} .= 'Pair '.$pair.' status "'. $pair_status[$result->{$oid.($pair+3).'.'.$port}].'" at '. $result->{$oid.'8.'.$port}.' m. '; } } if ($result->{$oid.'8.'.$port} != $result->{$oid.'9.'.$port}) { $report{text} .= 'Pairs length mismatch! 1 is '. $result->{$oid.'8.'.$port}. ' m, 2 is '. $result->{$oid.'9.'.$port}. ' m. '; } else { # $report{text} .= 'Cable length is '.$result->{$oid.'8.'.$port}.' m. '; $report{length} = $result->{$oid.'8.'.$port}; } } $session->close(); $report{text} = 'OK' if ($report{text} eq ''); # print (Dumper(\%report)); return %report; } Вот Вам ф-ция. Дальше прикрутите сами. Параметры: 1) Идентификатор пользователя (потом возвращается назад). 2) Номер порта. 3) IP свитча. 4) SNMP community. У меня оно работает на 3028. Вставить ник Quote
dyadyajack Posted December 3, 2011 Posted December 3, 2011 По моему человек не совсем понимает что ему нужно. Может проще отслеживать падение портов на коммутаторе, а потом уже тестить кабель кабель? В таком случае надо вначале смотреть падения портов, а только потом тестировать кабель. Падают порты, по определенному алгоритму, подается сигнал и выводятся айпишка упавшего коммутатора, адрес установки ну и порты что упали. После этого тестируете кабель, если всё гуд -- отбой. Если обрывы примерно на одинаковом метре -- то действуете. Сигнал лучше звуковой, для теста портов -- вебку. Пару протестированных портов будет достаточно, что бы исключить пропадание питалова на фазе с абонентами. Ну а дальше -- либо ваши ребята, которые дежурят выезжают на проблемный адрес, либо же бройлера, если оборудование под охраной. А так что проверять будете? И с какой периодичностью? Раз в минуту, раз в час? Тестить все порты, или только упавшие? Обрезать -- достаточно нескольких минут. Но вот что скажут ваши абоненты, у которых будет пропадать линк при тесте? Вставить ник Quote
eill Posted December 3, 2011 Posted December 3, 2011 dyadyajack может как вариант делать трап на пропадание линка? А потом смотреть cable_diag'ом? Вставить ник Quote
Ilya Evseev Posted December 3, 2011 Posted December 3, 2011 У нас коммутаторы отправляли syslog на сервер, на сервере логи отслеживались в реальном времени: 1) одновременное гашение нескольких клиентских портов, 2) гашение порта, в который подключена сигнальная петля (кабель протянут через все этажи и замыкается на себя). Если сработало - то шлётся пачка SMS и емейлов. Исходники здесь: http://sources.homelink.ru/linkdown/ Как минимум однажды благодаря им любители художественной резки по кабелю были схвачены с поличным, с охапкой свежесрезанного кабеля в руках: http://47news.ru/articles/42097/ Вставить ник Quote
dyadyajack Posted December 4, 2011 Posted December 4, 2011 Ну как по-мне, то без логсервера нельзя. Ilya Evseev тут в 1 пункте дело говорит. Сигнальная петля -- тоже отлично. Но лучше использовать как дополнение, на адресе, который железно попадает в зону риска. Так экономиться время на реакцию, не надо проверять действительно ли порезали. А так - лучше визуальная реализация. Особенно если сеть уже не маленькая. Везде то петли ставить - время и отвлечение ресурсов. Как-по мне, то если добавить тест упавших портов, то можно потерять время. А при порезке каждая секунда на счету. Но есть фактор отключения света. А так дежурный, при падении линков видит перед собой айпишку свича, адрес установки, время падение и количество упавших портов. Ну и всплывающее окно с телефонами куда звонить, плюс звуковая сигнализация, что бы не проспал. При наступлении времени Ч, попросту кликает в вебке на айпишку свича, раскрывается окно, в котором указаны админ статус, реальный статусы портов и данные с логсервера. Параллельно набирая дежурную бригаду, или вневедомственную охрану, ну и в таком духе. Нажать два раза на строчку с портом труда не составит. Но вот если данные покажут что всё в норме, то можно отбой давать дежурящей бригаде. ЗЫ:. По такой системе мониторинга поймали не менее 4 любителей поживиться медью. Ну и конечно нужно понимать, что от чудика-аборигена, который возле квартиры обрежет кабло, дабы насолить ничто не поможет. Разве что железные трубки или короба. А так, даже одного аборигена, который резал кабель в своем доме поймали :) Вставить ник Quote
peektoseen Posted December 6, 2011 Author Posted December 6, 2011 Всем спасибо, очень помогли. Дальше уже справлюсь. Вставить ник Quote
Pro-R Posted January 16, 2012 Posted January 16, 2012 У нас на сети тоже есть такая проблема. Режут обычно многопарники, с целью наживы, бывает просто балуются. На многопарнике от свитча до кросса в подъезде - замыкается один порт в петлю, он наблюдается в системе мониторинга (в нашем случае WhatsUp Gold или Zabbix), параллельно если упал порт из списка скрипт звонит в саппорт и трезвонит пока его не отключат. Саппорт круглосуточно может увидеть что где отвалилось, телефонный звонок отдельного телефона пробуждает их в ночи 100%, могут просмотреть статистику портов на этой железке, если метраж одинаковый - вызываем ментов. Работает ;) Сотрудничаем с полицией, они выезжают нарядом на адрес, стараются поймать и получить премию от своего начальника, ну или хотя бы спугнуть металюг. Вставить ник Quote
gohn1985 Posted January 16, 2012 Posted January 16, 2012 неповерите дядьки, тоже замыкали на портах, переловили столько, что всю тюрьму можно было заселить, им давали условку и отпускали, закон хромает у нас....в последний раз поймали 2-ух молодых пацанов, 20 и 22 года, больше не режут)) Вставить ник Quote
kriks Posted January 16, 2012 Posted January 16, 2012 У нас как то был бум обрезания кабелей. Заночь вырезали по ~4 дома, от А до Я. Жесть, техники не успевали всех перепротягивать, только сделаешь, оп, ночью все срезают снова, кабеля уносили с собой. Металюги проклятые. Длилось месяца 2. После перестали вырезать. Наверно уже сидят. Вставить ник Quote
E^X Posted February 15, 2012 Posted February 15, 2012 У нас на свитчах DES-3200 показывают на 40 метрах, метров 70, это нормально просто как бы оно так и будет, потому что это всё таки свитч и кабель всякий бывает, но вроде хороший тянем. Вставить ник Quote
s.lobanov Posted February 15, 2012 Posted February 15, 2012 У нас на свитчах DES-3200 показывают на 40 метрах, метров 70, это нормально просто как бы оно так и будет, потому что это всё таки свитч и кабель всякий бывает, но вроде хороший тянем. Второй конец изолирован или подключен? Если подключен, то результат неадекватен, таков уж метод TDR. Вставить ник Quote
E^X Posted February 15, 2012 Posted February 15, 2012 А понятно, да как раз вставлен в сетевуху и поднят интерфейс ну или не поднят. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.