Компьютерный форум 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=339311)

s.i.p.a 19-02-2019 15:00 2858788

просканировать несколько строк и отправить
 
Добрый день. Имеется скрипт

PHP код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /"usebackq tokens=3-5" %%i in (
        `
route.exe print ^| find.exe " 0.0.0.0"`
    ) do (
        
blat.exe - -to "e.***@***.by" -server 192.168.33.200 -****@***.by -****@***.by -pw passw -subject "33.1 routes %%i - %%k" -body "%%i - %%k"
        
goto :Out
    
)

:
Out

endlocal
exit /b 0 


Ищет маршруты со значением 0.0.0.0 и отправляет на почту первый найденный. Задача, сделать так, что бы отправлял все найденные маршруты, а лучше указанное количество.

Вот не знаю, как заставить скрипт обрабатывать не только первую строку, а все найденные строки.
Помогите разобраться.

alpap 19-02-2019 18:42 2858821

убрать строку:
Код:

goto :Out
вместе с ненужной уже меткой

s.i.p.a 20-02-2019 12:38 2858983

Цитата:

Цитата alpap
убрать строку: »

Спасибо. Убрал.

PHP код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /"usebackq tokens=3-5" %%i in (
        `
route.exe print ^| find.exe " 0.0.0.0"`
    ) do (
        
blat.exe - -to "e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw **** -subject "33.1 routes %%i - %%k" -body "%%i - %%k"
    
)

endlocal
exit /b 0 

Теперь обрабатывает все строки, но присылает по одному письму на каждую строку, а хотелось, что бы присылал одно письмо со всеми маршрутами.

Busla 20-02-2019 13:50 2858990

Цитата:

Цитата s.i.p.a
хотелось, что бы присылал одно письмо со всеми маршрутами »

если письмо читают люди, а не роботы, то доcтаточно
Код:

route print -4 0.0.0.0 | blat.exe - -to "e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw es2016 -subject "33.1 routes"

s.i.p.a 20-02-2019 14:19 2858995

Цитата:

Цитата Busla
если письмо читают люди, а не роботы, то доcтаточно »

да подобное уже реализованно

PHP код:

rem *** Sozdanie otcheta ***
route print | find " 0.0.0.0"C:marshruti.txt
rem 
*** otpravka pisma***
blat c:marshruti.txt -to ****@*****.by -server 192.168.33.200 -f  *******@*****.by -****@**** -pw 1111 -subject "33.1 routes" 

Этот скрипт был заброшен в пользу первого, потому что не загонял в тему письма первый маршрут. Письма приходят раз в час и открывать каждое письмо не очень удобно. по этому нужно, что бы в теме писался первый (или первые два маршрута) а в теле уже все найденные маршруты.

alpap 20-02-2019 14:30 2858996

Цитата:

Цитата s.i.p.a
что бы присылал одно письмо »

Код:

@echo off
set "s="
for /f "tokens=3-5" %%i in ('route.exe print^|find.exe " 0.0.0.0"') do if not defined s set "s=%%i - %%k"& >>"file.log" (echo %%i - %%k)
blat.exe - -to "e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw es2016 -subject "33.1 routes %s%" -attach "file.log"
exit /b

не знаю как правильно приаттачивать в blat файлы (синтаксис), не пользуюсь им, поэтому посмотрите в мануалах правильно ли как я написал:
... -attach "file.log"
исправьте, если не так.
P.S.
Переделал под [что бы в теме писался первый]

s.i.p.a 20-02-2019 15:49 2859010

Цитата:

Цитата alpap
не знаю как правильно приаттачивать в blat файлы (синтаксис), не пользуюсь им, поэтому посмотрите в мануалах правильно ли как я написал: »

Код:

@echo off
set "s="
for /f "tokens=3-5" %%i in ('route.exe print^|find.exe " 0.0.0.0"') do if not defined s set "s=%%i - %%k"& >>"file.log" (echo %%i - %%k)
blat.exe c:\\distr\file.log -to "e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw es2016 -subject "33.1 routes %s%"
exit /b

вот так правильно, но в лог записывается только первый маршрут и дописывается после каждого выполнения он же. В общем, мне приходит письмо с нужной темой, но лог файл содержит :

192.168.190.1 - 12
192.168.190.1 - 12
192.168.190.1 - 12

количество строк = сколько раз запустил батник.
лог файл не полный и не очищается после запуска.

s.i.p.a 20-02-2019 16:08 2859016

p.s.

Код:

@echo off
set "s="
for /f "tokens=3-5" %%i in ('route.exe print^|find.exe " 0.0.0.0"') do if not defined s set "s=%%i - %%k"
route print | find " 0.0.0.0"> C:\marshruti.txt
blat.exe C:\marshruti.txt -to "e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw es2016 -subject "33.1 routes %s%"
exit /b

от такие кастыли, получились. Тема письма нужная, содержание почти то, что нужно.

0.0.0.0 0.0.0.0 192.168.190.1 192.168.190.250 12
0.0.0.0 0.0.0.0 213.184.244.236 213.184.244.236 2


Отсечь нули, и можно пользоваться.

alpap 20-02-2019 18:19 2859053

s.i.p.a,
надо было 3ю строку так изменить:
Код:

...do >>"file.log" (echo %%i - %%k)& if not defined s set "s=%%i - %%k"
нули из-за вывода find, его надо занулить так: ...| >nul find " 0.0.0.0", но это уже не нужно, если сделаете указанные изменения, (пока менял код ошибся слегка).

s.i.p.a 21-02-2019 10:23 2859154

Спасибо. Исправил и всё заработало.
Итоговый вариант

Код:

@echo off
set "s="
for /f "tokens=3-5" %%i in ('route.exe print^|find.exe " 0.0.0.0"') do >>"file.log" (echo %%i - %%k)& if not defined s set "s=%%i - %%k"
blat.exe C:\distr\file.log -to " e.sipovich@ansa-soft.by" -server 192.168.33.200 -f e.sipovich@ansa-soft.by -u e.sipovich@ansa-soft.by -pw ***** -subject "33.1 routes %s%"
Del "C:\distr\file.log"
exit /b



Время: 13:02.

Время: 13:02.
© OSzone.net 2001-