Hовая версия скрипта для телекома. ;) [сообщение #492239] |
, 11 2006 14:03 |
Dimmy Timchenko (fido)
Сообщений: 0 Зарегистрирован: 2002
|
|
|
|
Hовая версия скрипта. Главное отличие - можно использовать для открытия
сессии, если даже она закрыта: в предыдущей версии в этом случае скрипт выдавал
ошибку.
#---------------------------------------------------------------------
#
# A script to switch between NIGHT and DAY mode in MaxDSL Dynamic-2
#
# version 2. :)
#
# usage:
# dynamic [night|day]
#
# night|day... force 256 or 64 kilobit mode
# Изменения:
#
# 1) Если не задан параметр командной строки, скрипт выбирает режим
aвтоматически
# по алгоритму:
# - с понедельника по пятницу с 07:30 до 18:55 будет выбираться скорость
64k,
# - в остальное время - скорость 256k.
#
# 2) Если сессия не активирована (LogOFF даёт ошибку), скрипт продолжает работу
#
# 3) Сообщения скрипта выводятся в формате, удобном для записи в лог
# (пример использования: perl C:\dynamic.pl >> C:\dynamic.log )
# enter your login and password here!
$login = 'YOUR_LOGIN';
$passw = 'YOUR_PASSW';
# cisco control system base URL
$cisco = 'http://192.168.169.66:8080';
$ua = '';
$res = '';
$req = '';
#----------------------------------------
sub Log
{
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
printf ("%02d.%02d.%4d-%02d:%02d:%02d ",
$mday, ($mon+1), ($year+1900),
$hour, $min, $sec);
print ($_[0]."\n");
}
sub ErrCheck
{
if ($res =~ /^[45]/) {
Log ($res);
die "#### ABORTED ####" if ($_[0] ne "loose");
} else {
Log ("OK");
};
}
sub Query
{
$res = $ua->request($req)->as_string;
}
sub QueryStrict
{
Query;
ErrCheck("strict");
}
sub QueryLoose
{
Query;
ErrCheck("loose");
}
#----------------------------------------
Log (" ---BEGIN SWITCHING---" );
# retrieving & checking command line...
$mode = shift;
if ( ($mode ne "night") and ($mode ne "day")) {
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my $abs_min = $hour*60 + $min;
if (
($wday != 0) and ($wday != 6) and #not Sun, not Sat
($abs_min > (7*60+30)) and ($abs_min < (18*60+55)) #7:30..18:55
)
# then
{
$mode = "day";
}
else
{
$mode = "night";
}
Log ("Auto selected \"$mode\" mode");
}
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
$ua=LWP::UserAgent->new;
$ua->agent("Mozzila");
#------------------------------------------
Log ("Logging OUT\n");
$req = POST ($cisco.'/accountLogoff/home',
[confirmed => 'true'],
[submitButton => 'OK+' ] );
QueryLoose; #even if we were NOT logged in, continue
Log ("DELAYING...");
sleep (10);
Log ("Logging IN");
$req = POST ($cisco.'/home');
QueryStrict;
$req = POST ($cisco.'/home?confirmed=true&submitButton=OK+&username='
.$login.'&password='.$passw );
QueryStrict;
Log("Turning on RM");
$req = POST ($cisco.'/serviceStart/refresh/home?service=PrSer4&group=2');
QueryStrict;
if ($mode eq "night") {
Log ("Turning on 256k");
$req = POST ($cisco.'/serviceStart/refresh/home?service=PrWeek3&group=2');
} else {
Log ("Turning on 64k");
$req = POST ($cisco.'/serviceStart/refresh/home?service=PrWeek1&group=2');
}
QueryStrict;
Log (" ---DONE--------------");
print "\n";
|
|
|