eddy_mut Опубликовано 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. Я думаю вполне информативно. Есть ли еще какиенибудь варианты? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
-=nix=- Опубликовано 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 просто изврат, ибо использовать надо стандартные методы, а не изобретать велосипед. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 6 мая, 2005 · Жалоба не смог найти этих команд ни на самом NAS ни на биллинге под Solaris. Что это за утилиты? где их взять? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
-=nix=- Опубликовано 6 мая, 2005 · Жалоба я использую gnu-radius, там этот есть. В freeradius тоже есть. это стандартные утилиты radius сервера... точна также как lasttaс у tacacs+ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 6 мая, 2005 · Жалоба В том то и дело что в моем биллинге используется коммерческий Radiator, написанный на перле. И в нем я таких вещей не обнаружил. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
-=nix=- Опубликовано 6 мая, 2005 · Жалоба eddy_mut, насколько я понимаю в это "Radiator" входит сервер радиуc.. так ?? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 6 мая, 2005 · Жалоба Коммерческий RADIUS сервер под названием Radiator www.open.com.au входящий в состав коммерческой же биллинговой системы. Оба продукта разных фирм. Radiator принимая запросы от NAS, выполняет внешний скрипт биллинга, обрабатывает таким образом и запросы доступа и запросы учета. Вопрос: каким же скриптом биллингу сверяться с NAS по вопросу списка сессий? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 6 мая, 2005 · Жалоба Развиваю тему: этот же биллинг для сверки сессий с такой железкой как Lucent MAX6000 использует стандартную команду UNIX - finger. Получается что эту команду можно попробовать примениь и на NAS FreeBSD. Только вот у меня не получилось: выполняю "finger user@host" - получаю зависание и таймаут. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
-=nix=- Опубликовано 6 мая, 2005 · Жалоба http://www.open.com.au/radiator/ref.html#pgfId=332361 вот тут написано про radwho.cgi надо взять этот скрипт и посмотреть как он работает Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 6 мая, 2005 · Жалоба Там написано что этот скрипт работает с БД активных сессий - у нас такой нет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
-=nix=- Опубликовано 6 мая, 2005 · Жалоба Там написано что этот скрипт работает с БД активных сессий - у нас такой нет. гы... как это нет... а как же по твоему радиус ограничивает по числу одновременных сессий ??? в доке по нему написано что он такое может... а значит и база такая есть. и вообще ... у тебя должна быть единая база биллинга и радиуса... а как следствие этого тебе надо посмотреть в СУБД не меняются ли значения каких либо полей в зависимости от того подключен пользоваетель или нет... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 11 мая, 2005 · Жалоба Нет. Собственная БД радиуса нам не подходит. Задача такова, что необходимо всякий раз запрашивать список сессий ИМЕННО с NAS. Я пока что задерживаюсь на методе finger - разбираюсь как заставить эту команду работать с NAS на платформе FreeBSD. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 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. Объясните пожалуйста чайнику что тут не так? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
-=nix=- Опубликовано 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 там много чаго полезного найдёшь... если тебе подойдёт такое решение Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 11 мая, 2005 · Жалоба я так понял, этот же можно применить и на мой случай - PPTP user level Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 11 мая, 2005 · Жалоба Я вот тут еще почитал повнимательней инструкцию к Radiator, тоже, мне кажется, вполне красивое решение, правда более громоздкое т. к. потребует инсталляции еще и web-сервера для выполнения скрипта radwho.cgi. В общем посмотрю еще эти варианты. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 11 мая, 2005 · Жалоба test-nas# ./list-users.sh ppp=: Command not found. ppp: Undefined variable. test-nas# Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
-=nix=- Опубликовано 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 ["`; Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
-=nix=- Опубликовано 11 мая, 2005 · Жалоба test-nas# ./list-users.shppp=: Command not found. ppp: Undefined variable. test-nas# что за ppp= ??? надо pppctl покажи скрипт Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 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 ### Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
eddy_mut Опубликовано 11 мая, 2005 · Жалоба Проверил еще раз /etc/ppp/ppp.conf - и нашел ошибку. Теперь выдает так: test-nas# ./list-users.sh ppp=ppp0: Command not found. ppp: Undefined variable. Раньше нельзя было найти файл /var/run/ppp%d, а теперь наверное она не может его прочитать. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Гость Опубликовано 12 мая, 2005 · Жалоба pppctl /var/run/ppp/pppX ! echo USER UPTIME OCTETSIN OCTETSOUT вот так попробуй... для начала и пришли ls /var/run/ppp/ Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Гость Опубликовано 12 мая, 2005 · Жалоба Гость, и права на скрипт 755 поставь Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...