#!/usr/bin/perl

use haruca;
use strict;

haruca::prt_logdate("SYS_WRITEFAIL START");
 

my ($hostname,$result,$date,$cmd,$options,$dir);
my ($startup,$running,$cmd_diff);


$dir = $0;
$dir =~ s/sys_//g;
system("rm -f $dir/*");

foreach $hostname (split(/\n/,`${main::binpath}search . -h`)){
  $hostname =~ s/\ +//g;

  $running = `${main::binpath}router $hostname show running`;
  if(($running eq "")||($running !~ /end\n+$/)){
    $running = `${main::binpath}router $hostname show running`;
    if(($running eq "")||($running !~ /end\n+$/)){
      next;
    }
  }

  $startup = `${main::binpath}router $hostname show start`;
  if(($startup eq "")||($startup !~ /end\n+$/)){
    $startup = `${main::binpath}router $hostname show start`;
    if(($startup eq "")||($startup !~ /end\n+$/)){
      next;
    }
  }



  open(FILE,"> ${main::tmppath}running");
  print FILE $running;
  close(FILE);
  
  open(FILE,"> ${main::tmppath}startup");
  print FILE $startup;
  close(FILE);

  $cmd_diff  = " diff ${main::tmppath}running ${main::tmppath}startup | egrep '(^<|^>)' ";
  $cmd_diff .= " | egrep -v '(^[<>]\ *\$)'";
  $cmd_diff .= " | egrep -v '(^[<>]\ *show)'";
  $cmd_diff .= " | egrep -v '(^[<>]\ *Building)'";
  $cmd_diff .= " | egrep -v '(^[<>]\ *.+compressed)'";
  $cmd_diff .= " | egrep -v '(^[<>]\ *Current\ configuration)'";
  $cmd_diff .= " | egrep -v '(^[<>]\ *$hostname)'";
  $cmd_diff .= " | egrep -v '(#time|secret|community|snmp-server host|password|clock-period|authentication-key)'";
  $cmd_diff .= " | egrep -v '(Time source is NTP,|Load for five secs)'";
  $cmd_diff .= " | egrep -v '(^[<>]\ *\!|^[<>]\ *$main::delim|Using..*out of..*bytes)'";
  $result = `$cmd_diff`;



  system("rm -f ${main::tmppath}running ${main::tmppath}startup ");
  if($result){
    $date = haruca::get_localtime();
    open(FILE,"> $dir/${hostname}-$date");
    print FILE $result;
    close(FILE);
  }

}


haruca::prt_logdate("SYS_WRITEFAIL END");


exit;
