Пользователи с вин-машин дозваниваются (mgetty) через модем на почтовый сервер, где для каждого заведена учётная запись.
На сервере они получают почту, также предполагается некоторое количество информации, предоставляемой по http (антивирусные базы, новости и т.п.), но главное - это почта.
Количество удалённых пользователей около дюжины. На почтовом сервере модем один на всех. Нужно как-то ограничить время работы, чтобы не было злоупотреблений с занятием канала.
То есть, пользователь дозвонился, получил почту (при необходимости обновил антивирусные базы) и отключился.
Как сделать ему предложение, от которого он не сможет отказаться?
Ведь почта нужна всем
такое вот приходит в голову:
в /etc/ip-up.d/ поместить скриптик, который вычисляет pid вызвавшего его экземпляра pppd и записывает этот pid куда-нибудь. например, в /tmp. вместе с timestamp-ом.
в /etc/ip-down.d/ для красоты можно положить скрипт, удаляющий этот файл.
раз в минуту(или реже) запускается скрипт, который читает тот самый файл, проверяет — pppd ли фигурирует под этим pid-ом и благополучно его прибивает.
для универсальности лучше бы, чтоб это был не один файл, а несколько. наименованных, например, по номеру pid-а (и лежащих тогда в отдельном, отведенном для этого каталоге). для чего? а вдруг когда-нибудь модемов станет два?
кстати, если будет персональный файлик для каждого процесса, можно в него ничего и не записывать, а ориентироваться на ctime самого файла.
p.s. и вообще, если других интерфейсов ppp* в машине не создается, то можно обойтись без скриптов в /etc/ppp/*. хватит одного — следящего. ведь pppd и так создает файл pppN.pid в /var/run.
Эх, я не сказал вначале...
На этом сервере и стои́́т два модема.
Один модем для связи с внешним миром, по нему идёт почта "наверх и обратно". Этот сервер сначала был просто маршрутизатором, через него рабочие станции свою почту ганяли.
Позже возникла необходимость повесить на маршрутизатор ещё и функции почтового сервера и подключить к нему удалённых пользователей через второй модем.
Так что Вы угадали, модема уже два. Больше пока не предполагается, COM-портов всего два.
Это немного усложняет задачу?
на пару строчек.
у pppd есть такой параметр ipparam.
чем удобен? в разных файлах из /etc/ppp/peers/ (а значит — для разных соединений) можно указывать свой персональный ipparam.
он же, в частности, передается параметром скриптам /etc/ppp/ip-*