Этот скрипт на perl выгружает пользователей из базы данных биллинговой системы UTM5 и создает файл chap-secrets для сервера pppd
Так же обновляются соответствия IP адресов с именами пользователей для генератора отчетности SARG для логов SQUID
#!/usr/bin/perl
# This script gets NetUp users and updates /etc/ppp/chap-secrets and /var/www/sarg/usertab files
use DBI;
$USER = "utm5";
$DB = "UTM5";
$PASSWD = "xxxx";
$chap_secrets = "/etc/ppp/chap-secrets";
$usertab = "/etc/squid/sarg/usertab";
$dbh = DBI->connect("dbi:mysql:$DB", $USER, $PASSWD) or die $DBI::errstr;
$sth = $dbh->prepare("select distinct(u.login) as login, u.password as password, inet_ntoa(ig.ip&0xffffffff) as ip\
from users u, ip_groups ig,iptraffic_service_links il,accounts a,service_links sl\
where il.id=sl.id and il.ip_group_id=ig.ip_group_id and sl.is_deleted=0 and\
a.is_deleted=0 and ig.is_deleted=0 and u.id=sl.user_id");
$sth->execute or die ("Cannot select from database");
$i = $sth->rows;
if ($i) {
open fcs, ">$chap_secrets";
open fut, ">$usertab";
while ($i--){
$user = $sth->fetchrow_hashref;
if ($is_exist{$user->{login}}++) {
$user->{login} .= "-".$is_exist{$user->{login}};
}
print fcs "$user->{login} * $user->{password} $user->{ip}\n";
print fut "$user->{ip} $user->{login}\n";
}
close fut;
close fcs;
}
$sth->finish;