forum.rastrnet.ru

forum.rastrnet.ru (http://forum.rastrnet.ru/index.php)
-   Программируем (http://forum.rastrnet.ru/forumdisplay.php?f=35)
-   -   *.BAT (http://forum.rastrnet.ru/showthread.php?t=42636)

Fox 08.04.2008 15:08

*.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 17:13

Еще наработка

@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


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

Casy 08.04.2008 23:14

Можешь попробовать из батника запускать telnet, зацепиться к SMTP серваку и отправить письмо. Порыскай в инете, там много манов, как телнетом почту отправлять. Не знаю, получится-ли, но попробовать стоит. Только используй серваки без SMTP авторизации, а то замучаешься. Как вариант можешь поднять SMTP сервер у себя с помощью утилиты EasySMTP

Fox 09.04.2008 11:00

Пример
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

Так осталась только решить вопрос с авторизацией


Текущее время: 05:22. Часовой пояс GMT +7.

Powered by vBulletin® Version 3.8.4 Patch Level 5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot

Форум открыт в июле 2004 г.