Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скрипт для проверки доступности порта хоста и отправки мейла при недоступности (http://forum.oszone.net/showthread.php?t=331438)

Amax-SB 25-11-2017 00:26 2780019

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

есть консольная утилита blat
запускаю так

blat.exe -server 127.0.0.1 -port 11025 -f mymail@mail.ru -u mymail@mail.ru -pw mypassword -to mymail@mail.ru -subject testmail -body "tekst_soobscheniya"

Blat не работает с SSL, поэтому в промежутке стоит костыль stunnel с настройками

cert = stunnel.pem
fips = no
;TLS_PROTOCOL=SSL23
sslVersion = all
options = NO_SSLv2
; Some performance tunings
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
; Some debugging stuff useful for troubleshooting
debug = 7
output = stunnel.log
; GMail
client=yes
; POP3 service, listens on localhost:11110
[gmail-pop3s]
accept=127.0.0.1:11110
connect=pop.mail.ru:995
; SMTP service, listens on localhost:11025
[gmail-smtps]
accept=127.0.0.1:11025
connect=smtp.mail.ru:465

эта связка работает

далее гениальная консольная nmap

nmap.exe -p 8000 93.157.232.ххх

которая выдает ЕСЛИ ПОРТ ОТКРЫТ
PORT STATE SERVICE
8000/tcp open

ЕСЛИ ПОРТ ЗАКРЫТ
PORT STATE SERVICE
8000/tcp close

ЕСЛИ БЛОЧИТ ФАЙЕРВОЛ
PORT STATE SERVICE
8000/tcp filtered


идея в BATнике прописать

nmap.exe -p 8000 93.157.232.хх1
IF ответ = PORT STATE SERVICE 8000/tcp open
ТО ничего не делать
ELSE goto: mail1

nmap.exe -p 8001 93.157.232.хх2
IF ответ = PORT STATE SERVICE /tcp open 8001
ТО ничего не делать
ELSE goto: mail2

ЗАЦИКЛИТЬ

:MAIL1
blat.exe -server 127.0.0.1 -port 11025 -f mymail@mail.ru -u mymail@mail.ru -pw mypassword -to mymail@mail.ru -subject testmail -body "не отвечает сервер 1"

:MAIL2
blat.exe -server 127.0.0.1 -port 11025 -f mymail@mail.ru -u mymail@mail.ru -pw mypassword -to mymail@mail.ru -subject testmail -body "не отвечает сервер 2"

по частям работает, а вот как это в одно целое собрать не знаю. I NEED HELP!!!

Nand 26-11-2017 15:03 2780268

А zabbix, cacti - поднять -не?

alpap 26-11-2017 22:02 2780357

примерно так ...
Код:

...
nmap.exe -p 8000 93.157.232.хх1|find /i "PORT STATE SERVICE 8000/tcp open" || call: mail1
nmap.exe -p 8001 93.157.232.хх2|find /i "PORT STATE SERVICE /tcp open 8001" || call: mail2
pause& exit

:MAIL1
 kod1
exit /b

:MAIL2
 kod2
exit /b


Amax-SB 30-11-2017 00:43 2781129

Спасибо за ответ. На днях попробую.


Время: 10:50.

Время: 10:50.
© OSzone.net 2001-