2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2025-06-01 19:17:06 +00:00
xcat-core/xCAT/postscripts/startsyncfiles.aix
2016-07-21 13:27:40 -04:00

59 lines
1.4 KiB
Perl

#!/usr/bin/env perl -w
# IBM(c) 2009 EPL license http://www.eclipse.org/legal/epl-v10.html
#####################################################
#
# xCAT post script for AIX nodes
# This script will send command "syncfiles" to the xcatd on
# management node or service node to initiate the sync file
# operation by xdcp command
#
#####################################################
use XML::Simple;
my $useSocketSSL = eval { require IO::Socket::SSL; };
if ($useSocketSSL) {
require IO::Socket::SSL;
}
my $port = "3001";
my $remote = IO::Socket::SSL->new(Proto => "tcp", PeerAddr => $ENV{MASTER}, PeerPort => $port,);
unless ($remote) {
`logger -t xcat -p local4.err "startsyncfiles: Cannot connect to host $ENV{MASTER}"`;
exit 0;
}
# Send Syncing File request to the xcatd
print $remote "<xcatrequest>\n";
print $remote " <command>syncfiles</command>\n";
print $remote "</xcatrequest>\n";
my $response = '';
my $rsp;
my $rc = 0;
while (<$remote>) {
$response .= $_;
if ($response =~ m/<\/xcatresponse>/) {
$rsp = eval { XMLin($response, SuppressEmpty => undef, ForceArray => 1) };
if ($rsp->{errorcode}) {
$rc = $rsp->{errorcode}[0];
} elsif ($rsp->{error}) {
$rc = $rsp->{error}[0];
}
if ($rsp->{serverdone}) {
close $remote;
if ($rc) { $rc = 1; }
exit $rc;
}
$response = '';
}
}
close $remote;
exit 0;