1
0

fix_net.pl 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #!/usr/bin/perl
  2. #
  3. # Copyright (C) Roman Dmitiriev, rnd@rajven.ru
  4. #
  5. use FindBin '$Bin';
  6. use lib "$Bin/";
  7. use strict;
  8. use DBI;
  9. use Time::Local;
  10. use Net::Patricia;
  11. use Data::Dumper;
  12. use Date::Parse;
  13. use Socket;
  14. use Rstat::config;
  15. use Rstat::main;
  16. use Rstat::net_utils;
  17. use Rstat::snmp;
  18. use Rstat::mysql;
  19. use NetAddr::IP;
  20. setpriority(0,0,19);
  21. #get userid list
  22. my $user_auth_list = $dbh->prepare( "SELECT id,ip FROM User_auth ORDER by ip" );
  23. if ( !defined $user_auth_list ) { die "Cannot prepare statement: $DBI::errstr\n"; }
  24. $user_auth_list->execute;
  25. my $authlist_ref = $user_auth_list->fetchall_arrayref();
  26. $user_auth_list->finish();
  27. my @batch_sql=();
  28. foreach my $row (@$authlist_ref) {
  29. my $ip=$row->[1];
  30. my $id=$row->[0];
  31. my $net=GetDhcpRange($ip);
  32. print "Auth id: $id Found network: $ip\n";
  33. print "NETWORK: $net->{network}\nBROADCAST: $net->{broadcast}\nMASK: $net->{mask}\n";
  34. my $ip_aton=StrToIp($net->{network});
  35. push(@batch_sql,"Update User_auth set ip_int=".$ip_aton." where id=".$id);
  36. }
  37. if (scalar @batch_sql) {
  38. $dbh->{AutoCommit} = 0;
  39. my $sth;
  40. foreach my $sSQL(@batch_sql) {
  41. print "$sSQL\n";
  42. $sth = $dbh->prepare($sSQL);
  43. $sth->execute;
  44. }
  45. $sth->finish;
  46. $dbh->{AutoCommit} = 1;
  47. }
  48. $dbh->disconnect;
  49. exit 0;