воскресенье, 22 февраля 2026 г.

диагностки кабеля в момент отсутсвия линка

 Задача - флапает кабель редко, надо понять - где то передавлен или просто надо пережать коннектор.  Ну то есть ехать с обжимником или еще бухту витухи тащить на себе. 

скрипт пишет и в лог и в ТГ нотифает, запускать можно через нетватч (в нем можно гибко задать интервал проверки) или ручками... (поменять интерфейс ether3_DVR / bot id  / key id / chat ID  )

:local link;
:local pairs; 
:local chatid "ХХХХХХХХ";
:local botid "botХХХХХХХХ";
:local keyid "ХХХХХХХХХХХ";
/interface ethernet cable-test ether3_DVR once do={
   :set link $"cable-pairs";
};
:if ($link != "link-ok") do={
/log error "$link";
/tool fetch url="https://api.telegram.org/$botid:$keyid/sendMessage\?chat_id=$chatid&text=test1&disable_notification=true" output=none
};


- В режиме теста можно заменить    :set link $"cable-pairs";  на    :set link $"status";  если не хочеться тыкать на рваном кабеле (cable-pairs покажеться только при разрыве кабеля иначе пишет что ттатус ок ) и условие :if ($link != "link-ok") do={ на :if ($link = "link-ok") do={

UPD 
Для того чтобы не светить в каждом скрипте креды бота правильней будет сделать следующее 

1 в System:Scripts.Environment задать переменные при старте роутера 
2 в самом скрипте уже вызывать их  

в scheduler прописываем 

/system scheduler
add name=environment on-event=":global chatid \"хххххххххххх\";\
    \n:global botid \"botххххххххххх\";\
    \n:global keyid \"ххххххххххххххх\";" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-time=startup

а в скрипте уже вызываем 

:local botid ([/system script environment get [find name=botid] value]);
:local keyid ([/system script environment get [find name=keyid] value]);
:local chatid ([/system script environment get [find name=chatid] value]);

полный вариант скрипта будет такой 

:local link;
:local pairs;
:local botid ([/system script environment get [find name=botid] value]);
:local keyid ([/system script environment get [find name=keyid] value]);
:local chatid ([/system script environment get [find name=chatid] value]);

/interface ethernet cable-test ether5_FORtest once do={
   :set link $"cable-pairs";
};
:if ($link != "link-ok") do={
/log error "$link";
/tool fetch url="https://api.telegram.org/$botid:$keyid/sendMessage\?chat_id=$chatid&text=DVRcabletest $link&disable_notification=true" output=none
};


Это не спасет если роутер будет скопраментирован, но в случае если уплывет куда то именно тексовый конфиг (что выдается при /system export) - Environment там не засветиться.