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

registeruser1 21-04-2010 02:16 1397365

[решено] удаленная остановка сервисов, прибивание процессов в одном файле
 
...Приветствую всех!

Проблема есть, ваша помощь требуется... Проблема такая -

Пишу батник - удаленная остановка сервисов, прибивание процессов в одном файле...

Мне нужно что бы РЕЗУЛЬТАТЫ ОТРАБОТАННЫХ КОММАНД НЕ ОТОБРАЖАЛИСЬ В ОКНЕ...


HTML код:

@Echo Off
wmic /node:"comp_name" process where Name="notepad.exe" call terminate >nul
pause


По сути все хорошо. только если этот батник не находит процесса "notepad.exe" он начинает материться типа ERROR и там коды всякие, чего вообще на экран выводить не нужно!
То есть если нет такого процесса, и ладно - пошел дальше выполнять комманды - вот суть - БЕЗ ВЫВОДА В ОКНЕ ВСЯКИХ ОШИБОК!!!

Заранее благодарю...

amel27 21-04-2010 02:58 1397371

registeruser1, вместо ">nul" поставить ">nul 2>nul" (добавить подавление ошибок)

registeruser1 21-04-2010 06:58 1397404

Цитата:

Цитата amel27
registeruser1, вместо ">nul" поставить ">nul 2>nul" (добавить подавление ошибок) »

СУПЕР! Зачет!
Спасибо ОГРОМНОЕ...

Может подскажешь еще мне, как вывести на удаленной машине список не всех, а определенных процессов?
Вот код, но он выводит все запущенные прочессы и не на удаленной машине, а на локальной -

@Echo off
Title ВЫВОД ДЕРЕВА ПРОЦЕССОВ ПРИ ПОМОЩИ BAT ФАЙЛА

:LOOP
CLS
Echo.
Echo L - Load tree process
Echo D - Delete process
Echo Q - Exit
Echo.

Set var=
Set /P var="Load command: "

If /I "%var%"=="L" TaskList|More
If /I "%var%"=="Q" Exit /B
If /I "%var%"=="D" Call :KILL
GoTo LOOP

:KILL
Echo.
Set var=
Set /P var="Load PID (number) process:"
Set /A var=%var%+0
If %var% EQU 0 Exit /B

TaskKill /PID %var%
Pause >Nul
Exit /B

amel27 21-04-2010 07:03 1397407

registeruser1, "определенных" по какому условию?

registeruser1 21-04-2010 08:02 1397424

Цитата:

Цитата amel27
registeruser1, "определенных" по какому условию? »

У меня есть exe-файлы которые запущены как сервис на удаленной машине...
Соответственно при старте самого сервиса винда запускает сам exe файл.
Эти exe-шники имеют числовое имя, типа 45-78-52-65-42-71.exe
А закономерность этих файлов то что это мас-адреса, и начинаются они все с 00-80-9F-xx-xx-xx.exe
Вот, наверное по этому условию...

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

Спасибо...

amel27 21-04-2010 09:31 1397463

Цитата:

Цитата registeruser1
начинаются они все с 00-80-9F-xx-xx-xx.exe »

Код:

TaskList|FindStr /BIRC:"00-80-9F-[0-9][0-9]-[0-9][0-9]-[0-9][0-9].exe"

registeruser1 21-04-2010 09:58 1397478

...Спасибо, клево!
Скажи, а как это все на удаленном компе можно смотреть-то?
Где имя компа удаленного прописывать-то?
Сетка доменная, права есть...

Благодарю...

amel27 21-04-2010 10:59 1397514

Цитата:

Цитата registeruser1
Где имя компа удаленного прописывать-то? »

в справку хоть загляните для интереса "TaskList /?" ;)
Код:

TaskList /S CompName

registeruser1 21-04-2010 13:51 1397660

...Делаю так -

HTML код:

tasklist -s COMP_NAME |FindStr /BIRC:"00-80-9F-xx-xx-xx.exe"
pause

И все, вроде ошибок нет, процесс указанный запущен, но ничего он на экран не выводит... Почему?
Я так понимаю что эта команда должна найти на удаленном компе перечисленные процессы и ТОЛЬКО ИХ вывести на монитор...


Обычной коммандой -

HTML код:

tasklist -s COMP_NAME
pause

- без проблем все выкладывает...

...извиняюсь если замучил ("как летун мы не очень", но очень хочется ))

gora 21-04-2010 15:09 1397717

Цитата:

Цитата registeruser1
процесс указанный запущен, но ничего он на экран не выводит... Почему?»

А какой именно процесс запущен? Процесс так и называется 00-80-9F-xx-xx-xx.exe ? И "xx" это именно указанные буквы или произвольные символы?
amel27 привел правильную запись с регулярными выражениями для, заданных Вами, условий задачи. Кстати Вы не уточнили, что "xx" это шестнадцатеричные числа и они кроме цифр могут иметь буквы "ABCDEF", если речь идет о MAC адресах.

amel27 21-04-2010 15:42 1397751

Цитата:

Цитата gora
"xx" это шестнадцатеричные числа и они кроме цифр могут иметь буквы "ABCDEF", если речь идет о MAC адресах »

угу, я вспомнил, хоть и с опозданием... надо расширить класс:
Код:

tasklist -s COMP_NAME| FindStr /BIRC:"00-80-9F-[0-9A-F][0-9A-F]-[0-9A-F][0-9A-F]-[0-9A-F][0-9A-F]\.exe"
или так:
Код:

tasklist -s COMP_NAME| FindStr /BIRC:"00-80-9F-..-..-..\.exe"
Цитата:

Цитата registeruser1
мы не очень", но очень хочется »

тогда заглядывайте почаще в справку "FINDSTR /?" ;)

registeruser1 21-04-2010 16:05 1397773

Да, это МАС.
...Тут наверное надо как-то по вот этим 00-80-9F цифрам отбор от всех остальных процессов делать, то есть по маске выходит...
У всех этих процессов эти цифры одинаковые (все МАС у меня, их 12, начинаются с них).
Получается если команда находит по маске процессы начинающиеся с 00-80-9F - она выводит их ВСЕ КОТОРЫЕ У КОТОРЫХ ЭТИ ЗНАЧЕНИЯ СОВПАДАЮТ...
Вот так наверное...

Другими словами -

Есть несколько ЗАПУЩЕННЫХ процессов на удаленной машине -
00-80-9F-54-78-51.exe
00-80-9F-45-82-35.exe
00-80-9F-25-46-81.exe
00-80-9F-41-33-29.exe

Я удаленно их прибиваю командой -
HTML код:

wmic /node:"COMP_NAME" process where Name="00-80-9F-45-82-35" call terminate
...и мне нужно после этой команды, та команда которая ПРОВЕРИТ оставщиеся запущенные процессы ТОЛЬКО ИЗ ВЫШЕ УКАЗАННЫХ (А НЕ ВСЕХ ЧТО ЗАПУЩЕННЫ НА УДАЛЕННОМ КОМПЕ), и выдаст результат
на экран.
Таким образом если процесс был успешно убит, то после проверки ЭТОЙ командой (ПО МАСКЕ 00-80-9F) она выдаст на экран только эти 3 АКТИВНЫХ процесса в место четырех которые были -

00-80-9F-54-78-51.exe
00-80-9F-25-46-81.exe
00-80-9F-41-33-29.exe

Это для того что бы удостоверится что процесс на самомделе выгружен и не выполняется и для обзора оставшихся активных процессов...
Все это в одном батнике нужно...


Ну вот, я думаю что все по полкам разложил, больше уже не знаю как объяснить...

Заранее спасибо всем откликнувшимся...

registeruser1 21-04-2010 16:26 1397790

Цитата:

Цитата amel27
asklist -s COMP_NAME| FindStr /BIRC:"00-80-9F-..-..-..\.exe" »

Супер, этот код работает... :up
Но почему-то он отображает только один процесс, а их там (я посмотрел) на данный момент висит 4...

И почему-то "пресс ани кей" с верху а не с низу -

HTML код:

@Echo off
tasklist -s COMP_NAME| FindStr /BIRC:"00-80-9F-..-..-..\.exe"
pause


amel27 21-04-2010 16:33 1397795

registeruser1, примерный порядок отладки кода:

1. вывод списка процессов в файл (который при желании можно выложить тут):
Код:

tasklist -s COMP_NAME >tasklist.log
2. проверка работы фильтра на файле:
Код:

<tasklist.log FindStr /BIRC:"00-80-9F-..-..-..\.exe"


Время: 23:07.

Время: 23:07.
© OSzone.net 2001-