Перейти к содержимому
Калькуляторы

Получение списка активных сессий на NAS FreeBSD

В продолжение темы отключения 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. Я думаю вполне информативно. Есть ли еще какиенибудь варианты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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  

 

просто изврат, ибо использовать надо стандартные методы, а не изобретать велосипед.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не смог найти этих команд ни на самом NAS ни на биллинге под Solaris. Что это за утилиты? где их взять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я использую gnu-radius, там этот есть. В freeradius тоже есть.

это стандартные утилиты radius сервера... точна также как lasttaс у tacacs+

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В том то и дело что в моем биллинге используется коммерческий Radiator, написанный на перле. И в нем я таких вещей не обнаружил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

eddy_mut,

насколько я понимаю в это "Radiator" входит сервер радиуc.. так ??

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Коммерческий RADIUS сервер под названием Radiator www.open.com.au входящий в состав коммерческой же биллинговой системы. Оба продукта разных фирм. Radiator принимая запросы от NAS, выполняет внешний скрипт биллинга, обрабатывает таким образом и запросы доступа и запросы учета. Вопрос: каким же скриптом биллингу сверяться с NAS по вопросу списка сессий?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Развиваю тему: этот же биллинг для сверки сессий с такой железкой как Lucent MAX6000 использует стандартную команду UNIX - finger. Получается что эту команду можно попробовать примениь и на NAS FreeBSD. Только вот у меня не получилось: выполняю "finger user@host" - получаю зависание и таймаут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

http://www.open.com.au/radiator/ref.html#pgfId=332361

вот тут написано про radwho.cgi

надо взять этот скрипт и посмотреть как он работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Там написано что этот скрипт работает с БД активных сессий - у нас такой нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Там написано что этот скрипт работает с БД активных сессий - у нас такой нет.

 

гы... как это нет... а как же по твоему радиус ограничивает по числу одновременных сессий ???

в доке по нему написано что он такое может... а значит и база такая есть.

и вообще ... у тебя должна быть единая база биллинга и радиуса... а как следствие этого тебе надо посмотреть в СУБД не меняются ли значения каких либо полей в зависимости от того подключен пользоваетель или нет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нет. Собственная БД радиуса нам не подходит. Задача такова, что необходимо всякий раз запрашивать список сессий ИМЕННО с NAS. Я пока что задерживаюсь на методе finger - разбираюсь как заставить эту команду работать с NAS на платформе FreeBSD.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В директории /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.

 

 

Объясните пожалуйста чайнику что тут не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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 там много чаго полезного найдёшь... если тебе подойдёт такое решение

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я так понял, этот же можно применить и на мой случай - PPTP user level

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я вот тут еще почитал повнимательней инструкцию к Radiator, тоже, мне кажется, вполне красивое решение, правда более громоздкое т. к. потребует инсталляции еще и web-сервера для выполнения скрипта radwho.cgi.

 

В общем посмотрю еще эти варианты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

test-nas# ./list-users.sh

ppp=: Command not found.

ppp: Undefined variable.

test-nas#

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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 ["`;

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

test-nas# ./list-users.sh

ppp=: Command not found.

ppp: Undefined variable.

test-nas#

что за ppp= ???

надо pppctl

покажи скрипт

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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 ###

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Проверил еще раз /etc/ppp/ppp.conf - и нашел ошибку. Теперь выдает так:

 

test-nas# ./list-users.sh

ppp=ppp0: Command not found.

ppp: Undefined variable.

 

Раньше нельзя было найти файл /var/run/ppp%d, а теперь наверное она не может его прочитать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.