08.04.2008, 15:08 | #1 |
-=Добрею=-
Регистрация: 15.08.2005
Сообщений: 580
|
*.BAT
Добрый день господа программисты
Необходима ваша помощь в следующем вопросе, а именно требуется помощь в написании не сложного на первый взгляд батничка. Суть в следующем: Необходимо пинговать некоторое количество адресов потом формировать отчет и кидать его на почту. есть маленькие наработачки @echo off SET PING_COUNT=4 SET PING_TOMEOUT=1000 echo Pinguem servera ping -w %PING_TOMEOUT% -l 1000 -n %PING_COUNT% 192.168.0.1 ping -w %PING_TOMEOUT% -l 1000 -n %PING_COUNT% 192.168.0.2 ping -w %PING_TOMEOUT% -l 1000 -n %PING_COUNT% 192.168.0.3 ping -w %PING_TOMEOUT% -l 1000 -n %PING_COUNT% 192.168.0.4 ping -w %PING_TOMEOUT% -l 1000 -n %PING_COUNT% 192.168.0.5 ping -w %PING_TOMEOUT% -l 1000 -n %PING_COUNT% 192.168.0.6 ping -w %PING_TOMEOUT% -l 1000 -n %PING_COUNT% 192.168.0.7 ping -w %PING_TOMEOUT% -l 1000 -n %PING_COUNT% 192.168.0.8 ping -w %PING_TOMEOUT% -l 1000 -n %PING_COUNT% 192.168.0.9 ping -w %PING_TOMEOUT% -l 1000 -n %PING_COUNT% 192.168.0.10 Вот такой скрипт еще в инете нашел, заинтересовала отправка результата на почту Может как то можно две эти идеи совместить? <job> <script language="JScript"> // Мониторинг доступности хоста штатными средствами Windows. При изменении состояния отправляет e-mail об этом. // Работает полностью в фоне. Не создает окон и процесса. Не болтается в трее. Не поддерживает скины // Не будет работать на Win98/2000 - только XP/2003/Vista/LongHorn. var adr="1.1.1.1",interval=5; // Пингуемый адрес и интервал, сек var from="from@host.ru",to="to@host.ru",smtp="smtp.host.ru"; // Параметры электрической почты var wmi=GetObject("winMgmts:root/CIMv2"); // Подключаемся к пространству имён WMI if(WScript.arguments.length&&WScript.arguments(0)=="stop") // Если запущено с параметром "stop" { // то останавливаем мониторинг, try{wmi.Get("__EventFilter.Name='pingMon'").Delete_()} catch(e){}; try{wmi.Get("SMTPEventConsumer.Name='pingMonEv'").Delete_()} catch(e){}; WScript.echo("Monityoring "+adr+" stopped!"); // печатаем сообщение об этом, WScript.quit(); // и завершаем скрипт } // запуск без параметра = старт сервиса with(wmi.Get("__EventFilter").SpawnInstance_()) // создаем экземпляр фильтра событий { // и настраиваем его на изменения состояния PingStatus Name="pingMon"; QueryLanguage="WQL"; Query="select * from __InstanceModificationEvent within "+interval+" where TargetInstance ISA 'Win32_PingStatus' and TargetInstance.Address='"+adr+"'"; Put_(); } with(wmi.Get("SMTPEventConsumer").SpawnInstance_()) // создаем экземпляр потребителя событий { // SMTPEventConsumer - отправка почты Name="pingMonEv"; // задаем ему параметры и шаблоны FromLine=from; ToLine=to; SMTPServer=smtp; Subject="host %TargetInstance.Address% status changed to %TargetInstance.StatusCode%"; Message="Ping(%TargetInstance.Address%): status=%TargetInstance.StatusCode%, delay=%TargetInstance.ResponseTime%."; Put_(); } with(wmi.Get("__FilterToConsumerBinding").SpawnInstance_()) // создаем экземпляр связки { Filter=wmi.Get("__EventFilter.Name='pingMon'").Path_; // связываем фильтр с потребителем Consumer=wmi.Get("SMTPEventConsumer.Name='pingMonEv'").Path_; Put_(); // запускаем мониторинг } WScript.echo("Monitoring "+adr+" started!"); // и печатаем сообщение об этом </script> </job> Последний раз редактировалось Fox; 08.04.2008 в 16:57. |
08.04.2008, 17:13 | #2 |
-=Добрею=-
Регистрация: 15.08.2005
Сообщений: 580
|
Еще наработка
@echo off ping -n 1 192.168.0.1 > ping.txt if errorlevel 1 goto send goto exit : send sendfile.exe 1.1.1.1 host@domin.ru : exit Но тут стоит отметить что используется не чистый бат. А пользуется программой для отправки почты, хотелось бы узнать у гуру. Как с помощью бата отправить почту. |
08.04.2008, 23:14 | #3 |
Программист
|
Можешь попробовать из батника запускать telnet, зацепиться к SMTP серваку и отправить письмо. Порыскай в инете, там много манов, как телнетом почту отправлять. Не знаю, получится-ли, но попробовать стоит. Только используй серваки без SMTP авторизации, а то замучаешься. Как вариант можешь поднять SMTP сервер у себя с помощью утилиты EasySMTP
|
09.04.2008, 11:00 | #4 |
-=Добрею=-
Регистрация: 15.08.2005
Сообщений: 580
|
Пример
telnet smtp.host.ru 25 HELO Имя своего компа MAIL FROM:<name@host.ru> > RCPT TO:<name2@2@host.ru> Символ ">" - в начале строчки указывает на то, что эту команду посылает клиент, а символом "<" помечаются ответы сервера. Или так telnet mail.server.com 25 helo 193.122.323.211 //Ваш текущий ip mail from:lala@blablabla.net rcpt to:target@mailserver.com data Subject:Ha ha ha Text See you! . quit Так осталась только решить вопрос с авторизацией Последний раз редактировалось Fox; 09.04.2008 в 13:15. |
|