update_auth_wiki.pl 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/perl
  2. #
  3. # Copyright (C) Roman Dmitiriev, rnd@rajven.ru
  4. #
  5. use FindBin '$Bin';
  6. use lib "$Bin/";
  7. use Data::Dumper;
  8. use Rstat::config;
  9. use Rstat::main;
  10. use Rstat::mysql;
  11. use Rstat::net_utils;
  12. use strict;
  13. use warnings;
  14. use File::Find;
  15. use File::Basename;
  16. use Fcntl qw(:flock);
  17. open(SELF,"<",$0) or die "Cannot open $0 - $!";
  18. flock(SELF, LOCK_EX|LOCK_NB) or exit 1;
  19. if (!$config_ref{wiki_path}) { exit; }
  20. my %content;
  21. find( \&wanted, $config_ref{wiki_path});
  22. foreach my $fname (keys %content) {
  23. open (FF,"<$content{$fname}") or die "unable to open file $content{$fname}!" ;
  24. my @tmp=<FF>;
  25. close(FF);
  26. chomp(@tmp);
  27. my $ip;
  28. foreach my $row (@tmp) {
  29. if ($row=~/\%META\:FIELD\{name\=\"DeviceIP\"/) {
  30. if ($row=~/value\=\"([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\"/) { $ip = $1; }
  31. }
  32. }
  33. if (!$ip) { next; }
  34. my $auth = get_record_sql($dbh,"SELECT * FROM User_auth WHERE deleted=0 and ip='".$ip."'");
  35. if (!$auth) { next; }
  36. print "Update id: $auth->{id} $ip => $fname\n";
  37. my $auth_rec;
  38. $auth->{WikiName}=$fname;
  39. update_record($dbh,'User_auth',$auth,'id='.$auth->{id});
  40. }
  41. print "Done!\n";
  42. exit;
  43. sub wanted {
  44. my $filename = $File::Find::name;
  45. my $dev_name = basename($filename);
  46. if ($filename =~/\.txt$/ and $dev_name=~/^(Device|Switch|Router|Gateway|Ups|Sensor)/) {
  47. $dev_name=~s/\.txt$//;
  48. $content{$dev_name}=$filename;
  49. }
  50. return;
  51. }
  52. exit;