Перейти к содержимому
Калькуляторы

Режут кабель. Нужен скрипт.

Привет всем.

Какие-то плохие люди вырезают кабель. Причем режут не так, чтобы унести, а так, чтобы хуже сделать, на каждом этаже.

За ночь по два-три подъезда режут. Уже четвертый раз за неделю.

В сети около 120 dlink'ов, все управляемые DES-3550, DES-3552.

Может у кого-нибудь есть скриптик (желательно на perl, но подойдет любой), работающий с cable-diag, поделитесь пожалуйста.

Скрипт не обязательно мониторящий длинну кабеля (такой уж был бы вообще что надо), хотя-бы который как-нибудь работал с cable-diag.

Изменено пользователем peektoseen

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Эр-Телеком в город пришёл?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да нет :) этих я думаю не занесет к нам. Новых никого не появлялось. У нас всего два провайдера. Мы и МРК. Скорее всего какой-нибудь недовольный (или команда недовольных). Психов хватает.

Изменено пользователем peektoseen

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

как то так:

 

#!/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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По моему человек не совсем понимает что ему нужно.

 

Может проще отслеживать падение портов на коммутаторе, а потом уже тестить кабель кабель?

 

В таком случае надо вначале смотреть падения портов, а только потом тестировать кабель. Падают порты, по определенному алгоритму, подается сигнал и выводятся айпишка упавшего коммутатора, адрес установки ну и порты что упали.

После этого тестируете кабель, если всё гуд -- отбой. Если обрывы примерно на одинаковом метре -- то действуете.

 

Сигнал лучше звуковой, для теста портов -- вебку. Пару протестированных портов будет достаточно, что бы исключить пропадание питалова на фазе с абонентами.

 

Ну а дальше -- либо ваши ребята, которые дежурят выезжают на проблемный адрес, либо же бройлера, если оборудование под охраной.

 

А так что проверять будете? И с какой периодичностью? Раз в минуту, раз в час? Тестить все порты, или только упавшие?

Обрезать -- достаточно нескольких минут.

 

Но вот что скажут ваши абоненты, у которых будет пропадать линк при тесте?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

dyadyajack может как вариант делать трап на пропадание линка? А потом смотреть cable_diag'ом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас коммутаторы отправляли syslog на сервер,

на сервере логи отслеживались в реальном времени:

1) одновременное гашение нескольких клиентских портов,

2) гашение порта, в который подключена сигнальная петля (кабель протянут через все этажи и замыкается на себя).

Если сработало - то шлётся пачка SMS и емейлов.

 

Исходники здесь: http://sources.homelink.ru/linkdown/

 

Как минимум однажды благодаря им любители художественной резки по кабелю были схвачены с поличным,

с охапкой свежесрезанного кабеля в руках: http://47news.ru/articles/42097/

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну как по-мне, то без логсервера нельзя.

Ilya Evseev тут в 1 пункте дело говорит.

Сигнальная петля -- тоже отлично. Но лучше использовать как дополнение, на адресе, который железно попадает в зону риска. Так экономиться время на реакцию, не надо проверять действительно ли порезали.

 

А так - лучше визуальная реализация. Особенно если сеть уже не маленькая. Везде то петли ставить - время и отвлечение ресурсов.

 

Как-по мне, то если добавить тест упавших портов, то можно потерять время. А при порезке каждая секунда на счету. Но есть фактор отключения света.

 

А так дежурный, при падении линков видит перед собой айпишку свича, адрес установки, время падение и количество упавших портов. Ну и всплывающее окно с телефонами куда звонить, плюс звуковая сигнализация, что бы не проспал.

При наступлении времени Ч, попросту кликает в вебке на айпишку свича, раскрывается окно, в котором указаны админ статус, реальный статусы портов и данные с логсервера. Параллельно набирая дежурную бригаду, или вневедомственную охрану, ну и в таком духе.

 

Нажать два раза на строчку с портом труда не составит. Но вот если данные покажут что всё в норме, то можно отбой давать дежурящей бригаде.

 

ЗЫ:. По такой системе мониторинга поймали не менее 4 любителей поживиться медью.

Ну и конечно нужно понимать, что от чудика-аборигена, который возле квартиры обрежет кабло, дабы насолить ничто не поможет. Разве что железные трубки или короба.

 

А так, даже одного аборигена, который резал кабель в своем доме поймали :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем спасибо, очень помогли. Дальше уже справлюсь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас на сети тоже есть такая проблема. Режут обычно многопарники, с целью наживы, бывает просто балуются.

На многопарнике от свитча до кросса в подъезде - замыкается один порт в петлю, он наблюдается в системе мониторинга (в нашем случае WhatsUp Gold или Zabbix), параллельно если упал порт из списка скрипт звонит в саппорт и трезвонит пока его не отключат.

Саппорт круглосуточно может увидеть что где отвалилось, телефонный звонок отдельного телефона пробуждает их в ночи 100%, могут просмотреть статистику портов на этой железке, если метраж одинаковый - вызываем ментов. Работает ;) Сотрудничаем с полицией, они выезжают нарядом на адрес, стараются поймать и получить премию от своего начальника, ну или хотя бы спугнуть металюг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

неповерите дядьки, тоже замыкали на портах, переловили столько, что всю тюрьму можно было заселить, им давали условку и отпускали, закон хромает у нас....в последний раз поймали 2-ух молодых пацанов, 20 и 22 года, больше не режут))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас как то был бум обрезания кабелей. Заночь вырезали по ~4 дома, от А до Я. Жесть, техники не успевали всех перепротягивать, только сделаешь, оп, ночью все срезают снова, кабеля уносили с собой. Металюги проклятые. Длилось месяца 2. После перестали вырезать. Наверно уже сидят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас на свитчах DES-3200 показывают на 40 метрах, метров 70, это нормально просто как бы оно так и будет, потому что это всё таки свитч и кабель всякий бывает, но вроде хороший тянем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У нас на свитчах DES-3200 показывают на 40 метрах, метров 70, это нормально просто как бы оно так и будет, потому что это всё таки свитч и кабель всякий бывает, но вроде хороший тянем.

 

Второй конец изолирован или подключен? Если подключен, то результат неадекватен, таков уж метод TDR.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А понятно, да как раз вставлен в сетевуху и поднят интерфейс ну или не поднят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.