summaryrefslogtreecommitdiffstats
path: root/amttool
blob: e9aa4a41f49fa7975fa754581fa0b8fbb095d6af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/perl
use strict;
use warnings;
use SOAP::Lite;

my $amt_host = shift;
my $amt_port = "16992";
$main::amt_user = "admin";
$main::amt_pass = $ENV{'AMT_PASSWORD'};

sub SOAP::Transport::HTTP::Client::get_basic_credentials {
	return $main::amt_user => $main::amt_pass;
}

#########################################################################################
#

my @ps = ("S0", "S1", "S2", "S3", "S4", "S5 (soft-off)", "S4/S5", "Off");

#########################################################################################
# main

if (!defined($amt_host)) {
	print STDERR <<EOF;

This utility can talk to Intel AMT managed machines.

usage: amttool [ options ] <hostname>
options:
  none yet, right now it just gathers and prints some infos.

Password is passed via AMT_PASSWORD environment variable.

EOF
	exit 1;
}

my $nas = SOAP::Lite->new(
	proxy => "http://$amt_host:$amt_port/NetworkAdministrationService",
	ns    => "http://schemas.intel.com/platform/client/NetworkAdministration/2004/01");
my $sas = SOAP::Lite->new(
	proxy => "http://$amt_host:$amt_port/SecurityAdministrationService",
	ns    => "http://schemas.intel.com/platform/client/SecurityAdministration/2004/01");
my $rcs = SOAP::Lite->new(
	proxy => "http://$amt_host:$amt_port/RemoteControlService",
	ns    => "http://schemas.intel.com/platform/client/RemoteControl/2004/01");

printf "### query host %s ###\n", $amt_host;

my $amt_version = $sas->GetCoreVersion()->paramsout;
printf "AMT version:  %s\n", $amt_version;

my $hostname = $nas->GetHostName()->paramsout;
my $domainname = $nas->GetDomainName()->paramsout;
printf "Hostname:     %s.%s\n", $hostname, $domainname;

my $powerstate = $rcs->GetSystemPowerState()->paramsout;
printf "Powerstate:   %s\n", $ps [ $powerstate & 0x0f ];

my @rccaps = $rcs->GetRemoteControlCapabilities()->paramsout;
printf "Remote Capabilities:\n";
printf "   IanaOemNumber                %x\n", $rccaps[0];
printf "   OemDefinedCapabilities       %s%s%s%s%s\n",
	$rccaps[1] & 0x01 ? "IDER "        : "",
	$rccaps[1] & 0x02 ? "SOL "         : "",
	$rccaps[1] & 0x04 ? "BiosReflash " : "",
	$rccaps[1] & 0x08 ? "BiosSetup "   : "",
	$rccaps[1] & 0x10 ? "BiosPause "   : "";

printf "   SpecialCommandsSupported     %s%s%s%s%s\n",
	$rccaps[2] & 0x0100 ? "PXE-boot "         : "",
	$rccaps[2] & 0x0200 ? "HD-boot "          : "",
	$rccaps[2] & 0x0400 ? "HD-boot-safemode " : "",
	$rccaps[2] & 0x0800 ? "diag-boot "        : "",
	$rccaps[2] & 0x1000 ? "cd-boot "          : "";

printf "   SystemCapabilitiesSupported  %s%s%s%s\n",
	$rccaps[3] & 0x01 ? "powercycle " : "",
	$rccaps[3] & 0x02 ? "powerdown "  : "",
	$rccaps[3] & 0x03 ? "powerup "    : "",
	$rccaps[3] & 0x04 ? "reset "      : "";

printf "   SystemFirmwareCapabilities   %x\n", $rccaps[4];