Страница 1 из 1
mpd5
Добавлено: 2009-10-15 9:47:03
jam
Приветствую коллеги!
Стоит mpd5 на тазике с 6.2, нужно узнавать реальные IP с который коннектятся клиенты, и логгировать это. Когда сидел на poptop, проблем небыло, sockstat -4 | grep 1723 => получали список PIDов процессов и далее ifconfig, т.к. у всех tunX были прописаны opnened by PID, проблем небыло сопоставить. А как это сделать в mpd никто не подскажет ?
Re: mpd5
Добавлено: 2009-10-15 11:48:24
paradox
зачем?
Re: mpd5
Добавлено: 2009-10-15 11:51:21
hizel
через консоль или вебморду mpd
Re: mpd5
Добавлено: 2009-10-15 12:04:36
jam
Да, спасибо, уже разобрался... Просто теперь с Net::Telnet проблема, не хочет авторизовываться...
вот лог:
Код: Выделить всё
< 0x00000: 4d 75 6c 74 69 2d 6c 69 6e 6b 20 50 50 50 20 64 Multi-link PPP d
< 0x00010: 61 65 6d 6f 6e 20 66 6f 72 20 46 72 65 65 42 53 aemon for FreeBS
< 0x00020: 44 0d 0a 0d 0a ff fb 03 ff fd 03 ff fb 01 ff fd D....ЪШ.ЪЩ.ЪШ.ЪЩ
< 0x00030: 01 55 73 65 72 6e 61 6d 65 3a 20 .Username:
> 0x00000: ff fd 03 ff fc 03 ff fd 01 ff fc 01 ЪЩ.ЪЭ.ЪЩ.ЪЭ.
> 0x00000: 61 64 6d 69 6e 0d 0a admin..
< 0x00000: 61 64 6d 69 6e 0d 0a 50 61 73 73 77 6f 72 64 3a admin..Password:
< 0x00010: 20 0d 0a 4c 6f 67 69 6e 20 66 61 69 6c 65 64 0d ..Login failed.
< 0x00020: 0a 55 73 65 72 6e 61 6d 65 3a 20 .Username:
код очень простой пока:
Код: Выделить всё
#!/usr/bin/perl
use POSIX;
use Net::Telnet;
$username = "admin";
$passwd = "12345";
$t = new Net::Telnet (Host=>'127.0.0.1', Timeout => 2, Port => 5005, Dump_Log => 'dump.log
', Input_log => 'input.log');
$t->open("127.0.0.1");
$t->login($username, $passwd) or die "not authorized: ", $t->lastline;
#@lines = $t->cmd("show link") or die "error: ", $t->lastline;
#print @lines;
$t->close;
exit(0);
А грит timed-out waiting for password prompt at ./mpd_getip.pl line 11
Пароль, юзер правильные, с консоли телнетом захожу без проблем. В дампе видно что перед посылкой юзернэйма
идет оправка > 0x00000: ff fd 03 ff fc 03 ff fd 01 ff fc 01 ЪЩ.ЪЭ.ЪЩ.ЪЭ.
Что это за ????
Re: mpd5
Добавлено: 2009-10-15 12:19:29
paradox
Код: Выделить всё
#!/usr/bin/perl
use IO;
# mpd.kill $ip-server $nas-port $ip-client
#
if ($ARGV[2] eq ''){ die "Usage: mpd.kill nasip nasport userip"; }
$nasip = $ARGV[0];
$nasport = $ARGV[1];
$userip = $ARGV[2];
$nastelnetport = 5005;
$sock = IO::Socket::INET->new(
PeerAddr => $nasip,
PeerPort => $nastelnetport,
Proto => 'tcp') or die "Can not connect to mpd!\n$!";
$sock->autoflush(1);
# while (<$sock>){ print; last; }; ## ?????? ???? ?? ??????
# while (<$sock>){ print; last; }; ## ?????????? ???????????
# while (<$sock>){ print; last; }; ## ????? 3 ??????
print $sock "link pptp",$nasport,"\n"; ## ў?????? ????
print $sock "close\n";
print $sock "exit\n";
close $sock;
exit 0;
раньше вроде работало
Re: mpd5
Добавлено: 2009-10-15 12:43:20
jam
Неработает...
Принимает только
Multi-link PPP daemon for FreeBSD
и висит....
Кстати а как без пароля и юзера ты туда попадаешь ?
Re: mpd5
Добавлено: 2009-10-15 12:44:17
hizel
Код: Выделить всё
$t = new Net::Telnet (Timeout => 2,Port => $port,Binmode => '\015\012',Prompt => '/\[\]/');
http://forum.lissyara.su/viewtopic.php? ... ode#p63288
Re: mpd5
Добавлено: 2009-10-15 12:52:48
jam
СПАСИБО КАМРАД, выручил!
Домашний сервер сейчас недоступен, а на нем примеры лежали старые, там эта проблема тоже была и именно с binmode ))))