1.telnet
[корень @ мастер-node156 mon_port] # кошка mycheck_port | -v задать расширенное ' ^ $ ' # ! / бен / ш # Микропредприятий предупреждение конфигурации письмо Предупреждение = Правда # Правда сконфигурирована для инициирования сигнала тревоги, другой не открыт # Micro-канал корпоративного робота ID userkey = " 5642127c-woab-shib-9da8-ac2f4adashabic003 " эхо ' ' > / TMP / problemip.txt cur_datetime = `дата +% Y% м% d-% H:% M:% S` HomeDir = `имя_директории $ 0 ` Функция check_port { pkill - 9 телнет Тайм - аут 2 SSH 127,0 . 0,1 телнет $ 1 > / TMP / a.txt myresult = `-i задать расширенное ' Побег ' /tmp/a.txt|wc - L` если [[$ myresult -eq 1 ]], а затем эхо " $ cur_datetime端口$ прослушивания порта, состояние хорошо ... " | Тройник -a $ HomeDir / port_status.log еще эхо « $ cur_datetime Ошибка端口$ порт закрыт, статус не удалось ... » | Тройник -a $ HomeDir / port_status.log если [ " $ для Alert " = " Истинный " ], а затем Эхо $ 1 > / TMP / problemip.txt СЕПГ -i ' s # # - # ' / TMP / problemip.txt HostPort = `кот / TMP / problemip.txt` локон -s -X POST -H " 'Content-Type': 'приложение / JSON' " -d ' { "MsgType": "Текст", "Текст": { "содержание": «端口未启动\ г主机端口: ' $ HostPort ' \ г时间: ' $ cur_datetime ' », "mentioned_list": [ "Ванцинского", ""], "mentioned_mobile_list": [ "", ""]}} ' https: // qyapi.weixin. qq.com/cgi-bin/webhook/send?key=$userkey фи сон 1 быть } для я в `кошки / Opt / mon_port / 8080 .txt`; делать а = `Эхо $ я | AWK -F [:] ' {печать $ 1" «$ 2} ' `; check_port " $ а " ; сделано
2.nc
[корень @ мастер-node156 mon_port] # кошка check_port | Grep -v ' ^ $ ' # ! / бен / ш # Микропредприятий предупреждение конфигурации письмо Предупреждение = Правда # Правда сконфигурирована для инициирования сигнала тревоги, другой не открыт # Micro-канал корпоративного робота ID userkey = " 5wo2127c-shib-458b-9da8-ac2fshabidc003 " в то время как getopts " : ч: р: " вариант сделать дело " $ вариант " в час) хост = $ OPTARG ;; п) порт = $ OPTARG ;; * ) эхо « Использование: арг [-h] [-p] » эхо « -h означает хост » эхо « -p порт означает » выход 1 ;; ESAC сделано если [! $ порт], а затем эхо « Пожалуйста , введите номер порта, например, 192.168.1.10 -p -h 0 80 $ » эхо « не -h аргумент, проверка локального порта по умолчанию » Exit . 1 быть cur_datetime = `дата +% Y% м% d-% H:% M:% S` HomeDir = `имя_директории $ 0 ` localIp = $ (/ SBIN / Ifconfig -a | Grep инет | Grep -v 127,0 . 0,1 | Grep -v inet6 | AWK ' {печать $ 2} ' | тр -d " ADDR: " | голова -n 1 ) если [! $ хоста], а затем хост = $ localIp быть #res = `$ HomeDir / check_tcp -H $ хост - р $ port` #if [[ "$ Рез"= ~ "OK"]]; затем #nc -w 3 $ хост $ порт </ DEV / нуль > / DEV / нуль 2 > & 1 пс -w 3 -z $ хост $ порт> / DEV / нуль 2 > & 1 , если [$? = 0 ]; тогда эхо " $ cur_datetime端口$ прослушивания порта, состояние хорошо ... " | Тройник -a $ HomeDir / port_status.log выход 0 еще эхо « $ cur_datetime Ошибка端口$ порт закрыт, статус не удалось ... » | Тройник -a $ HomeDir / port_status.log если [ " $ для Alert " = " Истинный " ], а затем локон -s -X POST -H " 'Content-Type': 'приложение / JSON' " -d ' { "MsgType": "Текст", "Текст": { "содержание": «端口未启动\ г端口: ' $ порт ' \ г服务器: ' $ хоста ' \ г时间: ' $ cur_datetime ' », "mentioned_list": [ "Ванцинского", ""], "mentioned_mobile_list": [ "", ""]}} ' HTTPS : // qyapi.weixin.qq.com/cgi-bin/webhook/send?key=$userkey фи Выход 1 , как