/[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

Annotation of /lib/PXElator/amt.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 377 - (hide annotations)
Sun Aug 30 15:33:30 2009 UTC (14 years, 7 months ago) by dpavlin
File size: 1573 byte(s)
fix power state decoding
1 dpavlin 181 package amt;
2    
3     use warnings;
4     use strict;
5    
6 dpavlin 191 use lib '/srv/Intel-AMT/lib/';
7 dpavlin 181 use Intel::AMT::RemoteControl;
8     use Intel::AMT::NetworkAdministration;
9     use Data::Dump qw/dump/;
10 dpavlin 186 use Regexp::Common qw/net/;
11 dpavlin 181
12     use html;
13 dpavlin 330 use ping;
14 dpavlin 263 use CouchDB;
15 dpavlin 376 use Carp qw/confess/;
16 dpavlin 181
17 dpavlin 376 sub ip {
18     my $client_ip = shift || confess "no ip";
19     my ( $passwd, $ip ) = split(/\s+/, client::conf( $client_ip => 'amt' ));
20 dpavlin 186 ( $ip, $passwd ) = ( $passwd, $ip ) if $passwd =~ m/$RE{net}{IPv4}/;
21 dpavlin 181
22 dpavlin 262 $ip ||= $client_ip;
23    
24 dpavlin 330 if ( ! ping::host( $ip ) ) {
25 dpavlin 376 warn "W: ping $ip unreachable\n";
26 dpavlin 203 }
27    
28 dpavlin 186 warn "amt $ip ", '*' x length($passwd), "\n";
29    
30 dpavlin 376 $ENV{AMT_PASSWORD} = $passwd;
31 dpavlin 181 $ENV{AMT_HOST} = $ip;
32    
33 dpavlin 376 }
34    
35     sub power_on {
36     ip @_;
37 dpavlin 377 ( power_state() & 0x0f ) == 0;
38 dpavlin 376 }
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 dpavlin 336 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 dpavlin 263
57 dpavlin 181 my $out;
58 dpavlin 376 my $ip = $ENV{AMT_HOST};
59 dpavlin 181
60 dpavlin 263 $out =
61     qq| <a href="http://$ip:16992/" target="$ip">amt</a>|
62 dpavlin 183 . qq| <a href="http://$ip:16992/ip.htm" target="$ip">ip</a>|
63 dpavlin 181 . qq|<br>|
64 dpavlin 263 . html::pre_dump( $amt )
65 dpavlin 181 ;
66    
67     return $out;
68     }
69    
70 dpavlin 376
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 dpavlin 181 1;

  ViewVC Help
Powered by ViewVC 1.1.26