#!/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 "\n"; print $remote " syncfiles\n"; print $remote "\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;