URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 32465
[ Назад ]

Исходное сообщение
"Выборочное отключение с помощью killall"

Отправлено Costa , 19-Июл-03 08:33 
На сервере установлена FreeBSD 4.7. К нему подключены 2 модема: пость будут modem1 и modem2. Людям розданы пароли и они их пользуют. С помощью crontab'a доступ одного из пользователей (за счет прописывания-стирания его логина в файле паролей) ограничен с 18 до 22 часов. Однако, если его не выгнать в 22 - сам не уходит до 23. Мера в виде "killall pppd" в 22 часа помогает, но зато другой пользователь тоже принудительно отключается, а это ему не нравится. Подскажите, как это можно ПРОСТО организовать без скриптов.

Содержание

Сообщения в этом обсуждении
"Выборочное отключение с помощью killall"
Отправлено planar , 19-Июл-03 11:00 
Отключение пользователя надо проводить не через killall pppd а через kill -9 `cat /var/run/pppN` где N-номер отключаемого интерфейса ppp. Тогда второй пользователь останется там где надо.

"Выборочное отключение с помощью killall"
Отправлено lavr , 19-Июл-03 13:25 
>На сервере установлена FreeBSD 4.7. К нему подключены 2 модема: пость будут
>modem1 и modem2. Людям розданы пароли и они их пользуют. С
>помощью crontab'a доступ одного из пользователей (за счет прописывания-стирания его логина
>в файле паролей) ограничен с 18 до 22 часов. Однако, если
>его не выгнать в 22 - сам не уходит до 23.
>Мера в виде "killall pppd" в 22 часа помогает, но зато
>другой пользователь тоже принудительно отключается, а это ему не нравится. Подскажите,
>как это можно ПРОСТО организовать без скриптов.

# man login.conf
# whereis idled

на выбор, или совместно


"Выборочное отключение с помощью killall"
Отправлено planar , 19-Июл-03 15:02 
Да, можно поробовать и так:
#!/usr/bin/perl
$username='ТОТ_КОГО_НАДО_УБРАТЬ';
open COMMAND, "ps au|";
@pids = grep(s/$username\s+(\d+)\s+([\w\W]+)/$1/ei,<COMMAND>);
close COMMAND;
foreach $pid(@pids){system "kill -9 $pid";}

При желании можешь добавить обработку командной строки. Этот скрипт прикроет все процессы, которые открыл юзер.