#!/usr/bin/perl # Backup billion routers config daily, put one on backup server and # a copy of the most current in roots homedir # Copyright © Noel Butler 2011-2018 # Licence: GPL v3.0 see https://www.gnu.org/licenses/gpl-3.0.en.html ##################################################################### use Net::Telnet (); use Sys::Syslog; $DATE = `date +'%Y-%m-%d'`; chomp($DATE); $host = "ROUTER.IP.ADDR.HERE"; $log = "/PATH/TO/tftp/billion/MODEL/config/billion.".$host.".".$DATE.".cf"; $radmin = "ADMIN_USER"; $rapass = "ADMIN_PASS"; STARTOVER: open(LOG, "> $log"); sleep(1); $t = new Net::Telnet (Timeout => 20, , Prompt => '/> $/'); $t->open($host); $t->waitfor('/login: ?$/i'); $t->print($radmin); $t->waitfor('/password: ?$/i'); $t->print($rapass); $t->prompt('/> $/'); $t->errmode("return"); @lines = $t->cmd("dumpcfg"); shift @lines; print LOG @lines[1..$#lines-1]; $t=>close; close LOG; $dsize = (stat($log))[7]; if ($dsize < "50000") { print "Oops, somthing went wrong, check size, trying again... " . $dsize ."\n"; syslog('info',"Oops, somthing went wrong, check size, trying again... " . $dsize); sleep(3); goto STARTOVER; } open (INLOG, "< $log"); open (OUTLOG, "> /root/billion_daily.conf"); while() { print OUTLOG $_; } close INLOG; close OUTLOG; exit;