imho.ws |
![]() |
![]() |
![]() |
# 1 |
Newbie
Регистрация: 20.09.2004
Адрес: Краснодар
Сообщения: 21
![]() |
Batch файл, прибивающий процесс
Необходимо по имени процесса прибивать приложение. Есть список "хороших" процессов, с которыми сравниваются каждый из запущенных процессов на удаленной машине и в случае ее отсутствия прибить процесс.
Вот как я думаю. с помощью pslist я могу создать текстовый файл типа Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time Idle 0 0 2 0 0 10:10:18.812 5:11:32.823 System 8 8 47 147 24 0:00:20.984 5:11:32.823 ну и тд. отсюда нужно попробовать достать имя процесса, сравнить с правильным (другой файл содежит имена всех "правильных" процессов) и с помощью pskill прибить в случае несовпадения. загвоздка в физической реализации ![]() |
![]() |
![]() |
# 2 | |
Junior Member
Регистрация: 04.04.2003
Сообщения: 181
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
А не легче создать список нежелательных процессов, типа в столбик kill.txt
Цитата:
Код:
@echo off for /f %%a in (kill.txt) do pskill %%a>>log.txt pskill имя_компа юзер пароль имя_процесса То, что ты хочешь, тоже можно, только писанины в батнике побольше и гарантии поменьше, что легальный процесс не прибьешь. |
|
![]() |
![]() |
# 3 |
Newbie
Регистрация: 20.09.2004
Адрес: Краснодар
Сообщения: 21
![]() |
Вобщето этот батник задумывался, как мера против игрушек на работе, а так как почти у каждого есть доступ в инет, где немеряное кол-во игр, то создать список нежелательных процессов весьма проблематично (одним солитером дело не обойдется )
![]() |
![]() |
![]() |
# 4 | |
Junior Member
Регистрация: 04.04.2003
Сообщения: 181
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Сетки у меня все равно нет сейчас ни дома, ни на работе, проверять негде, я на примере локального компа покажу, подправишь там параметры комстроки сам.
Мысль должна идти ![]() Выдернуть из того, что выдает pslist.exe, имена процессов. Я ее сейчас скачал, она в начале пишет копирайты, номер своей версии и тп, всего 8 ненужных строчек, их пропускаем (skip=8). Из каждой оставшейся строчки необходимо только первое слово(имя процесса), значит делаем tokens=1. Итого получается Код:
@echo off for /f "skip=8 tokens=1" %%a in ('pslist') do echo %%a>>somename.txt Ну в текстовой файл список процессов писать не надо, имя каждого найденного процесса(%%a) отдаем команде find, пусть find ищет его в списке разрешенных (D:\allow.txt), сделай его предварительно. Цитата:
![]() Код:
@echo off for /f "skip=8 tokens=1" %%a in ('pslist') do ( find /i "%%a" D:\allow.txt || echo %%a - net ego v allow.txt>>D:\mustkill.txt ) Как запустить получившийся *.cmd на всех машинах в сетке знаешь? Копирование по сети на все машины сразу http://www.kv.by/index2004171106.htm приблизительно таким же макаром. :: Конец мысли :еоф Последний раз редактировалось Premium; 12.04.2005 в 21:18. |
|
![]() |
![]() |
# 5 |
Newbie
Регистрация: 20.09.2004
Адрес: Краснодар
Сообщения: 21
![]() |
Спасибо! Я пошел другим путем,через дополнительную переменную. Ниже это не часть программы, а проверка работоспособности необходимой мне функции, а именно: не пойму где ошибка. В теле цикла по идее переменная Z должна менять значение. в текстовом файле, содержащем все переменные она поменяла, а каталог все равно создется lsas
@echo off set v=CMD set z=lsas for /f %%j in (right.txt) do ( if %%j == %v% ( set z=%%j set >c:\1212\11.txt md c:\1212\%z% ) ) В чем ошибка? Ниже приведу сам текст программы, который тоже благополучно не работает ![]() @echo off set v=b for /f "tokens=1,2* delims= " %%i in (15.txt) do ( if not %v% == a (pskill %z%>log.txt) else ( for /f %%j in (right.txt) do ( if %%j == %%i (set v=a) else ( set z=%%i ) ) ) ) ![]() |
![]() |
![]() |
# 6 |
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
$moker
cmd.exe должен быть запущен с параметром "/V:ON" Код:
/V:ON Разрешение отложенного расширения переменных среды с применением символа '!' в качестве разделителя. Например, /V:ON разрешает использовать !var! в качестве расширения переменной var во время выполнения. Синтаксис var служит для расширения переменных при вводе, что приводит к совсем другим результатам внутри цикла FOR.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
![]() |
![]() |
# 8 |
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
$moker
А что по-твоему запускает твой батник? А.С. Пушкин? Попробуй запустить его так: Код:
cmd /v:on /c batnik.bat З.З.Ы. Только что проверил вот на таком простеньком примере (файл 1.cmd) - все работает (запускал так: cmd /v:on /c 1.cmd): Код:
@echo off set v=a echo !v! for /l %%i in (1,1,5) do set v=!v!b echo !v!
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! Последний раз редактировалось Ghost; 13.04.2005 в 11:12. Причина: чертов Сайгон... |
![]() |