eddy_mut Posted May 6, 2005 Posted May 6, 2005 В продолжение темы отключения VPN-сессии на сабже. Теперь нашему биллингописателю потребовалось периодически узнавать какие сессии активны на NAS, чтобы сверять их со своим списком сессий. Я предложил ему опять же заходить по ssh и выполнять там команду ps. Например вот так: [pts/5]root@potok:~<105> ssh radius@192.168.0.36 "ps -ax | grep ppp" 9932 ?? R 1:13.15 /usr/sbin/ppp -direct pptp 10032 ?? S 0:00.56 /usr/sbin/ppp -direct pptp 10043 ?? S 0:00.25 /usr/sbin/ppp -direct pptp 10066 ?? Ss 0:00.03 sh -c ps -ax | grep ppp 10068 ?? S 0:00.02 grep ppp Где видим в строчках содержащих -direct pptp эти самые сесии и их PID. Я думаю вполне информативно. Есть ли еще какиенибудь варианты? Вставить ник Quote
-=nix=- Posted May 6, 2005 Posted May 6, 2005 radwho -- показывает таблицу юзеров на сервере radping <login> -- проверяет в онлайне пользователь или нет, a root@potok:~<105> ssh radius@192.168.0.36 "ps -ax | grep ppp" 9932 ?? R 1:13.15 /usr/sbin/ppp -direct pptp 10032 ?? S 0:00.56 /usr/sbin/ppp -direct pptp 10043 ?? S 0:00.25 /usr/sbin/ppp -direct pptp 10066 ?? Ss 0:00.03 sh -c ps -ax | grep ppp 10068 ?? S 0:00.02 grep ppp просто изврат, ибо использовать надо стандартные методы, а не изобретать велосипед. Вставить ник Quote
eddy_mut Posted May 6, 2005 Author Posted May 6, 2005 не смог найти этих команд ни на самом NAS ни на биллинге под Solaris. Что это за утилиты? где их взять? Вставить ник Quote
-=nix=- Posted May 6, 2005 Posted May 6, 2005 я использую gnu-radius, там этот есть. В freeradius тоже есть. это стандартные утилиты radius сервера... точна также как lasttaс у tacacs+ Вставить ник Quote
eddy_mut Posted May 6, 2005 Author Posted May 6, 2005 В том то и дело что в моем биллинге используется коммерческий Radiator, написанный на перле. И в нем я таких вещей не обнаружил. Вставить ник Quote
-=nix=- Posted May 6, 2005 Posted May 6, 2005 eddy_mut, насколько я понимаю в это "Radiator" входит сервер радиуc.. так ?? Вставить ник Quote
eddy_mut Posted May 6, 2005 Author Posted May 6, 2005 Коммерческий RADIUS сервер под названием Radiator www.open.com.au входящий в состав коммерческой же биллинговой системы. Оба продукта разных фирм. Radiator принимая запросы от NAS, выполняет внешний скрипт биллинга, обрабатывает таким образом и запросы доступа и запросы учета. Вопрос: каким же скриптом биллингу сверяться с NAS по вопросу списка сессий? Вставить ник Quote
eddy_mut Posted May 6, 2005 Author Posted May 6, 2005 Развиваю тему: этот же биллинг для сверки сессий с такой железкой как Lucent MAX6000 использует стандартную команду UNIX - finger. Получается что эту команду можно попробовать примениь и на NAS FreeBSD. Только вот у меня не получилось: выполняю "finger user@host" - получаю зависание и таймаут. Вставить ник Quote
-=nix=- Posted May 6, 2005 Posted May 6, 2005 http://www.open.com.au/radiator/ref.html#pgfId=332361 вот тут написано про radwho.cgi надо взять этот скрипт и посмотреть как он работает Вставить ник Quote
eddy_mut Posted May 6, 2005 Author Posted May 6, 2005 Там написано что этот скрипт работает с БД активных сессий - у нас такой нет. Вставить ник Quote
-=nix=- Posted May 6, 2005 Posted May 6, 2005 Там написано что этот скрипт работает с БД активных сессий - у нас такой нет. гы... как это нет... а как же по твоему радиус ограничивает по числу одновременных сессий ??? в доке по нему написано что он такое может... а значит и база такая есть. и вообще ... у тебя должна быть единая база биллинга и радиуса... а как следствие этого тебе надо посмотреть в СУБД не меняются ли значения каких либо полей в зависимости от того подключен пользоваетель или нет... Вставить ник Quote
eddy_mut Posted May 11, 2005 Author Posted May 11, 2005 Нет. Собственная БД радиуса нам не подходит. Задача такова, что необходимо всякий раз запрашивать список сессий ИМЕННО с NAS. Я пока что задерживаюсь на методе finger - разбираюсь как заставить эту команду работать с NAS на платформе FreeBSD. Вставить ник Quote
eddy_mut Posted May 11, 2005 Author Posted May 11, 2005 В директории /tools дистрибутива PoPToP нашел утилиты управления и мониторинга сервера VPN. Там есть утилита vpnwho.pl следующего содержания #!/usr/bin/perl # By Jason Collins-Webb (jason@rbaltd.co.uk) # usage: vpnwho # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Your copy is available at: http://www.gnu.org/licenses/gpl.html # $TDateM = substr(`/bin/date +"%b"`, 0, -1); $TDateD = substr(`/bin/date +"%e"`, 0, -1); $whoson = `/bin/ps -eo pid,bsdstart,cmd|/usr/bin/grep "pptpd ["`; if ($whoson ne "") { @logons = split(/n/, $whoson); foreach $l (@logons) { if ($l =~ /(d+)s+(d+:d+).*[(d+.d+.d+.d+)]/) { $PID = $1+1; $IP = $3; $STIME = $2; open MESSAGES, "</var/log/messages"; while(<MESSAGES>){ if ($_ =~ /.*spppd[$PID]:s+MSCHAP-v2s.*s(.+)*(.+)$/i) { $User = lc($2); } } close MESSAGES; print "Current VPN connection from $User ($IP), started at $STIMEn"; } } } else { print "There are no current VPN connections.n"; } Но при попытке запустить получил ошибки: test-nas# perl /usr/ports/net/poptop/work/poptop-1.1.4/tools/vpnwho.pl ps: bsdstart: keyword not found ps: cmd: keyword not found There are no current VPN connections. Объясните пожалуйста чайнику что тут не так? Вставить ник Quote
-=nix=- Posted May 11, 2005 Posted May 11, 2005 eddy_mut, хм... если ты используешь pppoe на user-level то мору подсказать одно решение. смотри: pppoe: set server /var/run/ppp/ppp%d "" 0177 далее ### BEGIN ls-user.sh ####!/bin/sh ppp=`ls /var/run/ppp` for str in $ppp do /usr/sbin/pppctl /var/run/ppp/$str ! echo USER UPTIME OCTETSIN OCTETSOUT done ### END ls-user.sh ### home/sergey/old2/oldhome/script > ./ls-user.sh reality 0:02:08 11477 147810 kseniya 0:02:02 13353 37651 у pppctl также есть CLOSE что позволяет закрыть соединение... man pppctl там много чаго полезного найдёшь... если тебе подойдёт такое решение Вставить ник Quote
eddy_mut Posted May 11, 2005 Author Posted May 11, 2005 я так понял, этот же можно применить и на мой случай - PPTP user level Вставить ник Quote
eddy_mut Posted May 11, 2005 Author Posted May 11, 2005 Я вот тут еще почитал повнимательней инструкцию к Radiator, тоже, мне кажется, вполне красивое решение, правда более громоздкое т. к. потребует инсталляции еще и web-сервера для выполнения скрипта radwho.cgi. В общем посмотрю еще эти варианты. Вставить ник Quote
eddy_mut Posted May 11, 2005 Author Posted May 11, 2005 test-nas# ./list-users.sh ppp=: Command not found. ppp: Undefined variable. test-nas# Вставить ник Quote
-=nix=- Posted May 11, 2005 Posted May 11, 2005 eddy_mut, незнаю я непробовал... но список активных сессий по pppoe я получаю именно так. не $whoson = `/bin/ps -eo pid,bsdstart,cmd|/usr/bin/grep "pptpd ["`; а $whoson = `/bin/ps -eo pid,start,command|/usr/bin/grep "pptpd ["`; Вставить ник Quote
-=nix=- Posted May 11, 2005 Posted May 11, 2005 test-nas# ./list-users.shppp=: Command not found. ppp: Undefined variable. test-nas# что за ppp= ??? надо pppctl покажи скрипт Вставить ник Quote
eddy_mut Posted May 11, 2005 Author Posted May 11, 2005 test-nas# less list-users.sh ### BEGIN ls-user.sh ### #!/bin/sh ppp=`ls /var/run/ppp` for str in $ppp do /usr/sbin/pppctl /var/run/ppp/$str ! echo USER UPTIME OCTETSIN OCTETSOUT done ### END ls-user.sh ### Вставить ник Quote
eddy_mut Posted May 11, 2005 Author Posted May 11, 2005 Проверил еще раз /etc/ppp/ppp.conf - и нашел ошибку. Теперь выдает так: test-nas# ./list-users.sh ppp=ppp0: Command not found. ppp: Undefined variable. Раньше нельзя было найти файл /var/run/ppp%d, а теперь наверное она не может его прочитать. Вставить ник Quote
Guest Posted May 12, 2005 Posted May 12, 2005 pppctl /var/run/ppp/pppX ! echo USER UPTIME OCTETSIN OCTETSOUT вот так попробуй... для начала и пришли ls /var/run/ppp/ Вставить ник Quote
Guest Posted May 12, 2005 Posted May 12, 2005 Гость, и права на скрипт 755 поставь Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.