imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 11.04.2005, 18:18     # 1
$moker
Newbie
 
Регистрация: 20.09.2004
Адрес: Краснодар
Сообщения: 21

$moker Нуль без палочки
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 прибить в случае несовпадения.

загвоздка в физической реализации ))
$moker вне форума  
Старый 11.04.2005, 20:30     # 2
Premium
Junior Member
 
Регистрация: 04.04.2003
Сообщения: 181

Premium Популярный человек на этом форумеPremium Популярный человек на этом форумеPremium Популярный человек на этом форумеPremium Популярный человек на этом форумеPremium Популярный человек на этом форумеPremium Популярный человек на этом форумеPremium Популярный человек на этом форуме
А не легче создать список нежелательных процессов, типа в столбик kill.txt
Цитата:
icq
soliter
и тд
И периодически запускать
Код:
@echo off
for /f %%a in (kill.txt) do pskill %%a>>log.txt
Нет такого процесса и фиг с ним, есть - pskill его прибьет. Синтаксис pskill.exe для удаленной машины, извини, не помню (не пользуюсь им), вроде там что-то
pskill имя_компа юзер пароль имя_процесса
То, что ты хочешь, тоже можно, только писанины в батнике побольше и гарантии поменьше, что легальный процесс не прибьешь.
Premium вне форума  
Старый 12.04.2005, 09:42     # 3
$moker
Newbie
 
Регистрация: 20.09.2004
Адрес: Краснодар
Сообщения: 21

$moker Нуль без палочки
Вобщето этот батник задумывался, как мера против игрушек на работе, а так как почти у каждого есть доступ в инет, где немеряное кол-во игр, то создать список нежелательных процессов весьма проблематично (одним солитером дело не обойдется ) С разрешенными все гораздо проще.
$moker вне форума  
Старый 12.04.2005, 20:40     # 4
Premium
Junior Member
 
Регистрация: 04.04.2003
Сообщения: 181

Premium Популярный человек на этом форумеPremium Популярный человек на этом форумеPremium Популярный человек на этом форумеPremium Популярный человек на этом форумеPremium Популярный человек на этом форумеPremium Популярный человек на этом форумеPremium Популярный человек на этом форуме
Сетки у меня все равно нет сейчас ни дома, ни на работе, проверять негде, я на примере локального компа покажу, подправишь там параметры комстроки сам.
Мысль должна идти в таком направлении:
Выдернуть из того, что выдает 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), сделай его предварительно.
Цитата:
System
winlogon
services
lsass
svchost
и тд
А потом в батнике есть такая штука, как две палки || (два символа канала ), если после них написать команду, то она выполнится, только если предыдущая команда завершилась с ошибкой(в твоем случае find не нашла процесс в списке разрешенных. То есть получается
Код:
@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
)
Вместо записи в mustkill.txt в реале естественно убивать процесс при помощи pskill.exe.
Как запустить получившийся *.cmd на всех машинах в сетке знаешь?

Копирование по сети на все машины сразу
http://www.kv.by/index2004171106.htm
приблизительно таким же макаром.

:: Конец мысли
:еоф

Последний раз редактировалось Premium; 12.04.2005 в 21:18.
Premium вне форума  
Старый 13.04.2005, 09:59     # 5
$moker
Newbie
 
Регистрация: 20.09.2004
Адрес: Краснодар
Сообщения: 21

$moker Нуль без палочки
Спасибо! Я пошел другим путем,через дополнительную переменную. Ниже это не часть программы, а проверка работоспособности необходимой мне функции, а именно: не пойму где ошибка. В теле цикла по идее переменная 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
)
)
)
)

$moker вне форума  
Старый 13.04.2005, 10:00     # 6
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
$moker
cmd.exe должен быть запущен с параметром "/V:ON"
Код:
/V:ON   Разрешение отложенного расширения переменных среды с применением
        символа '!' в качестве разделителя. Например, /V:ON разрешает
        использовать !var! в качестве расширения переменной var во время
        выполнения. Синтаксис var служит для расширения переменных
        при вводе, что приводит к совсем другим результатам внутри
        цикла FOR.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 13.04.2005, 10:50     # 7
$moker
Newbie
 
Регистрация: 20.09.2004
Адрес: Краснодар
Сообщения: 21

$moker Нуль без палочки
А если у меня бат файл...я делаю НЕ через командную строку
$moker вне форума  
Старый 13.04.2005, 10:59     # 8
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
$moker
А что по-твоему запускает твой батник? А.С. Пушкин? Попробуй запустить его так:
Код:
cmd /v:on /c batnik.bat
З.Ы. Не забудь о том, что теперь вместо %var% нужно использовать !var!.

З.З.Ы. Только что проверил вот на таком простеньком примере (файл 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. Причина: чертов Сайгон...
Ghost вне форума  

Теги (метки)
bat, cmd


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 11:03.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.