Войти

Показать полную графическую версию : удаленная остановка сервисов, прибивание процессов в одном файле


registeruser1
21-04-2010, 02:16
...Приветствую всех!

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

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

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


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


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

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

amel27
21-04-2010, 02:58
registeruser1, вместо ">nul" поставить ">nul 2>nul" (добавить подавление ошибок)

registeruser1
21-04-2010, 06:58
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
registeruser1, "определенных" по какому условию?

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

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

Спасибо...

amel27
21-04-2010, 09:31
начинаются они все с 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
...Спасибо, клево!
Скажи, а как это все на удаленном компе можно смотреть-то?
Где имя компа удаленного прописывать-то?
Сетка доменная, права есть...

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

amel27
21-04-2010, 10:59
Где имя компа удаленного прописывать-то? »
в справку хоть загляните для интереса "TaskList /?" ;)
TaskList /S CompName

registeruser1
21-04-2010, 13:51
...Делаю так -

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

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


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

tasklist -s COMP_NAME
pause

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

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

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

amel27
21-04-2010, 15:42
"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"

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

registeruser1
21-04-2010, 16:05
Да, это МАС.
...Тут наверное надо как-то по вот этим 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

Я удаленно их прибиваю командой -
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
asklist -s COMP_NAME| FindStr /BIRC:"00-80-9F-..-..-..\.exe" »
Супер, этот код работает... :up
Но почему-то он отображает только один процесс, а их там (я посмотрел) на данный момент висит 4...

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

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

amel27
21-04-2010, 16:33
registeruser1, примерный порядок отладки кода:

1. вывод списка процессов в файл (который при желании можно выложить тут):
tasklist -s COMP_NAME >tasklist.log

2. проверка работы фильтра на файле:
<tasklist.log FindStr /BIRC:"00-80-9F-..-..-..\.exe"




© OSzone.net 2001-2012