mfi.pm 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package Rstat::mfi;
  2. #use v5.28;
  3. use utf8;
  4. use open ":encoding(utf8)";
  5. use strict;
  6. use English;
  7. use FindBin '$Bin';
  8. use lib "$Bin";
  9. use base 'Exporter';
  10. use vars qw(@EXPORT @ISA);
  11. use Rstat::config;
  12. use Rstat::main;
  13. use Rstat::cmd;
  14. use Net::Telnet;
  15. use Data::Dumper;
  16. @ISA = qw(Exporter);
  17. @EXPORT = qw(
  18. get_mfi_config
  19. );
  20. BEGIN
  21. {
  22. sub get_mfi_config {
  23. my $ip = shift;
  24. my $login = 'admin';
  25. my $password = 'werkraft';
  26. my $result;
  27. my $ROUTER_PROMPT = qr/[-\w]+\#.$/;
  28. eval {
  29. my $t = new Net::Telnet (Timeout => 30, Port => 23, Prompt =>"/$ROUTER_PROMPT/");
  30. #MFI02dc9fdb144bd3 login: admin
  31. #Password:
  32. #MF.v2.1.11#
  33. $t->open($ip);
  34. $t->waitfor('/login\:/');
  35. $t->print($login);
  36. $t->waitfor('/Password\:/');
  37. $t->print($password);
  38. $t->waitfor('/[#>\?]/');
  39. my @mca_status=log_cmd($t,'cat /etc/board.info');
  40. sleep(1);
  41. my @tmp = log_cmd($t,'grep 1 /proc/analog/enabled*');
  42. push(@mca_status,@tmp);
  43. sleep(1);
  44. @tmp = log_cmd($t,'cat /etc/persistent/cfg/config_file');
  45. $t->close();
  46. push(@mca_status,@tmp);
  47. @tmp = grep (/board.name/,@mca_status);
  48. my $board_type;
  49. if ($tmp[0]=~/=(.*)/) {
  50. $board_type = $1 if ($1);
  51. }
  52. return if (!$board_type);
  53. return if (!($board_type=~/mPort/i));
  54. my $sens_list;
  55. @tmp = grep (/enabled/,@mca_status);
  56. foreach my $sens (@tmp) {
  57. next if (!$sens);
  58. my $sens_id;
  59. my $index;
  60. if ($sens=~/enabled(\d):1/) {
  61. $index = $1;
  62. $sens_id = $index - 1;
  63. }
  64. next if(!defined $sens_id);
  65. my @sens_info = grep (/AI.$sens_id.label/,@mca_status);
  66. my $sens_name = $sens_info[0];
  67. next if (!$sens_name);
  68. if ($sens_name=~/label=(.*)/) { $sens_name=$1; } else { undef $sens_name; }
  69. next if (!$sens_name);
  70. my $type = 'temp';
  71. if ($sens_name=~/HUM/i) { $type = 'hum'; }
  72. $result->{$sens_name}->{'name'}=$sens_name;
  73. $result->{$sens_name}->{'type'}=$type;
  74. $result->{$sens_name}->{'index'}=$index;
  75. }
  76. };
  77. return $result;
  78. }
  79. 1;
  80. }