Initial release
This commit is contained in:
commit
f1235ba1a4
1
README.md
Normal file
1
README.md
Normal file
|
@ -0,0 +1 @@
|
|||
switch_conf_backup - Скрипт на perl, для резервного копирования конфигурации коммутаторов d-link и edgecore. Работает в связке с GLPI.
|
138
switch-backup
Executable file
138
switch-backup
Executable file
|
@ -0,0 +1,138 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use Net::Telnet ();
|
||||
use IO::File;
|
||||
use Getopt::Long;
|
||||
|
||||
# мегахак - функция удаления пробельных символов
|
||||
sub trim {
|
||||
my($string)=@_;
|
||||
for ($string) {
|
||||
s/^\s+//;
|
||||
s/\s+$//;
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
# Архивируем конфиги
|
||||
$date = `/bin/date "+%Y%m%d"`;
|
||||
$date = trim($date);
|
||||
$arch = "tar -czvf /var/srv/backup/conf/conf-".$date.".tgz /var/lib/tftpboot/";
|
||||
my $result = `$arch`;
|
||||
|
||||
# удаляем архивы давностью в неделю
|
||||
$del = '/bin/find /var/srv/backup/conf/ -ctime +7 -name conf-*.tgz -exec rm {} \; -print > /var/log/switch-conf_backup.log';
|
||||
my $delResult = `$del`;
|
||||
|
||||
# Собсвенно сливаем конфиги на фтп
|
||||
$dirETC = "/usr/local/etc/";
|
||||
|
||||
use DBI;
|
||||
|
||||
$dirETC = "./";
|
||||
|
||||
# конектимся к GLPI базе
|
||||
my $dsn = 'DBI:mysql:glpi:192.168.123.222';
|
||||
my $db_user_name = 'user';
|
||||
my $db_password = 'password';
|
||||
my ($id, $password);
|
||||
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
|
||||
|
||||
# выбираем все EdgeCore со статусом "Включен"
|
||||
|
||||
my $sth = $dbh->prepare(qq{SELECT ip FROM glpi_networkequipments WHERE manufacturers_id=1 AND states_id=1});
|
||||
$sth->execute();
|
||||
|
||||
while (my ($ip) =
|
||||
$sth->fetchrow_array())
|
||||
{
|
||||
# print "$ip\n";
|
||||
if ($ip eq "" || $ip =~ /^#+/) {
|
||||
|
||||
} else {
|
||||
connectSwitchEdgeCore("$ip");
|
||||
}
|
||||
}
|
||||
$sth->finish();
|
||||
|
||||
|
||||
|
||||
# выбираем все D-Link со статусом "Включен"
|
||||
|
||||
my $sth = $dbh->prepare(qq{SELECT ip FROM glpi_networkequipments WHERE manufacturers_id=3 AND states_id=1});
|
||||
$sth->execute();
|
||||
|
||||
while (my ($ip) =
|
||||
$sth->fetchrow_array())
|
||||
{
|
||||
# print "$ip\n";
|
||||
if ($ip eq "" || $ip =~ /^#+/) {
|
||||
|
||||
} else {
|
||||
connectSwitchDlink("$ip");
|
||||
}
|
||||
}
|
||||
$sth->finish();
|
||||
|
||||
$dbh->disconnect();
|
||||
|
||||
exit;
|
||||
|
||||
# telnet-ом цепляемся к коммутаторам и сливаем конфиг на tftp сервер
|
||||
|
||||
# слив конфигурации с коммутатора EdgeCore
|
||||
sub connectSwitchEdgeCore
|
||||
{
|
||||
# print "$_[0]\n";
|
||||
#return;
|
||||
$hostname = "$_[0]";
|
||||
$username = "user";
|
||||
$passwd = "password";
|
||||
$date = `/bin/date "+%Y%m%d"`;
|
||||
$str_fn=$hostname;
|
||||
print $str_fn;
|
||||
|
||||
$tftpserver="172.22.22.252";
|
||||
|
||||
$conn = new Net::Telnet ( Timeout=>3, Errmode=>'return', Prompt => '/\#.?$/i');
|
||||
$conn->open(Host => $hostname);
|
||||
|
||||
$conn->waitfor('/ame[: ]*$/');
|
||||
$conn->print($username);
|
||||
$conn->waitfor('/ord[: ]*$/');
|
||||
$conn->print($passwd);
|
||||
$conn->print("copy running-config tftp");
|
||||
$conn->waitfor('/ess[: ]*$/');
|
||||
$conn->print($tftpserver);
|
||||
$conn->waitfor('/ame[: ]*$/');
|
||||
$conn->print($str_fn);
|
||||
$conn->print("exit");
|
||||
$conn->print("logout");
|
||||
}
|
||||
|
||||
# слив конфигурации с коммутатора D-Link
|
||||
|
||||
sub connectSwitchDlink
|
||||
{
|
||||
# print "$_[0]\n";
|
||||
#return;
|
||||
$hostname = "$_[0]";
|
||||
$username = "user";
|
||||
$passwd = "password";
|
||||
$date = `/bin/date "+%Y%m%d"`;
|
||||
$str_fn=$hostname;
|
||||
print "$str_fn\n";
|
||||
|
||||
$tftpserver="172.22.22.252";
|
||||
|
||||
$conn = new Net::Telnet ( Timeout=>3, Errmode=>'return', Prompt => '/\#.?$/i');
|
||||
$conn->open(Host => $hostname);
|
||||
|
||||
$conn->waitfor('/ame[: ]*$/');
|
||||
$conn->print($username);
|
||||
$conn->waitfor('/ord[: ]*$/');
|
||||
$conn->print($passwd);
|
||||
$conn->print("upload cfg_toTFTP $tftpserver dest_file $hostname");
|
||||
$conn->waitfor('/Success/');
|
||||
$conn->print("logout");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user