/[pxelator]/lib/PXElator/amt.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /lib/PXElator/amt.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 203 by dpavlin, Wed Aug 12 11:35:15 2009 UTC revision 376 by dpavlin, Sun Aug 30 15:22:41 2009 UTC
# Line 8  use Intel::AMT::RemoteControl; Line 8  use Intel::AMT::RemoteControl;
8  use Intel::AMT::NetworkAdministration;  use Intel::AMT::NetworkAdministration;
9  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
10  use Regexp::Common qw/net/;  use Regexp::Common qw/net/;
 use Net::Ping;  
11    
12  use html;  use html;
13    use ping;
14  sub info {  use CouchDB;
15          my $amt = shift;  use Carp qw/confess/;
16          my ( $passwd, $ip ) = split(/\s+/, $amt);  
17    sub ip {
18            my $client_ip = shift || confess "no ip";
19            my ( $passwd, $ip ) = split(/\s+/, client::conf( $client_ip => 'amt' ));
20          ( $ip, $passwd ) = ( $passwd, $ip ) if $passwd =~ m/$RE{net}{IPv4}/;          ( $ip, $passwd ) = ( $passwd, $ip ) if $passwd =~ m/$RE{net}{IPv4}/;
21    
22          my $p = Net::Ping->new;          $ip ||= $client_ip;
23    
24          if ( ! $p->ping( $ip, 0.7 ) ) {          if ( ! ping::host( $ip ) ) {
25                  return "$ip unreachable";                  warn "W: ping $ip unreachable\n";
26          }          }
27    
28          warn "amt $ip ", '*' x length($passwd), "\n";          warn "amt $ip ", '*' x length($passwd), "\n";
29    
         $ENV{AMT_HOST} = $ip;  
30          $ENV{AMT_PASSWORD} = $passwd;          $ENV{AMT_PASSWORD} = $passwd;
31            $ENV{AMT_HOST} = $ip;
32    
33    }
34    
35    sub power_on {
36            ip @_;
37            power_state() == 0;
38    }
39    
40    sub power_state {
41            my $state = eval { Intel::AMT::RemoteControl::SystemPowerState };
42            CouchDB::audit('SystemPowerState', { ip => $ENV{AMT_HOST}, SystemPowerState => $state });
43            return $state;
44    }
45    
46    sub info {
47            ip @_;
48    
49            my $amt;
50            eval {
51                    $amt = Intel::AMT::NetworkAdministration::network_settings;
52                    $amt->{power_state} = Intel::AMT::RemoteControl::SystemPowerState;
53                    CouchDB::audit('network', $amt );
54            };
55            warn "ERROR amt $@" if $@;
56    
57          my $out;          my $out;
58            my $ip = $ENV{AMT_HOST};
59    
60          $out = qq|power: S| . Intel::AMT::RemoteControl::SystemPowerState          $out =
61                  . qq|<br>|                    qq| <a href="http://$ip:16992/" target="$ip">amt</a>|
                 . qq| <a href="http://$ip:16992/" target="$ip">amt</a>|  
62                  . qq| <a href="http://$ip:16992/ip.htm" target="$ip">ip</a>|                  . qq| <a href="http://$ip:16992/ip.htm" target="$ip">ip</a>|
63                  . qq|<br>|                  . qq|<br>|
64                  . html::pre_dump( Intel::AMT::NetworkAdministration::network_settings )                  . html::pre_dump( $amt )
65                  ;                  ;
66    
67          return $out;          return $out;
68  }  }
69    
70    
71    sub RemoteControl {
72            ip shift;
73            my $command = shift;
74            eval { Intel::AMT::RemoteControl::run( $command ) };
75            CouchDB::audit( $command, { ip => $ENV{AMT_HOST}, error => $@ } );
76            warn "ERROR $@" if $@;
77    }
78    
79  1;  1;

Legend:
Removed from v.203  
changed lines
  Added in v.376

  ViewVC Help
Powered by ViewVC 1.1.26