#!/usr/bin/perl ## ## Copyright (C) 2005 Red Hat, Inc. All rights reserved.

## ## This copyrighted material is made available to anyone ## wishing to use, modify, copy, or redistribute it subject ## to the terms and conditions of the ## GNU General Public License v.2. ## use Getopt::Std; # Get the program name from $0 and strip directory names $_=$0; s/.*\///; my $pname = $_; # Default is to use ssh for connection to the host # for this to be effective you'll need to have an ssh key on the # VMs that can log in to the host without a passphrase. # If you device to use rsh then you'll need to # edit /root/.rhosts # # Also note that you'll need to set /proc/sys/kernel/sysrq to "1" # in the VMs for this to work at all. # $opt_c = "ssh"; $opt_u = "root"; # WARNING!! Do not add code bewteen "#BEGIN_VERSION_GENERATION" # and "#END_VERSION_GENERATION" It is generated by the Makefile #BEGIN_VERSION_GENERATION $FENCE_RELEASE_NAME="DEVEL.1105353156"; $REDHAT_COPYRIGHT=("Copyright (C) Red Hat, Inc. 2005 All rights reserved."); $BUILD_DATE="(built Mon Jan 10 10:35:41 GMT 2005)"; #END_VERSION_GENERATION sub usage { print "Usage:\n"; print "\n"; print "$pname [options]\n"; print "\n"; print "Options:\n"; print " -h This help message\n"; print " -s IP address or hostname of host system\n"; print " -d Domain name of system to fence\n"; print " -u User name (default root)\n"; print " -c Command to log into host (default ssh)\n"; exit 0; } sub fail { ($msg)=@_; print $msg."\n" unless defined $opt_q;

chomp.\n". } # DO NOTHING -. ($name.if (defined $t) { # make sure we don't get stuck in a loop due to errors $t->errmode('return'). $opt. } sub fail_usage { ($msg)=@_. exit 0."\n" if $msg. } sub get_options_stdin { my $opt. my $line = 0. exit 2. print "$SISTINA_COPYRIGHT\n" if ( $SISTINA_COPYRIGHT ). print STDERR "Please use '-h' for usage.$val)=split /\s*=\s*/. } . exit 1. # strip leading and trailing whitespace s/^\s*//. logout() if $logged_in. $opt=$_. s/\s*$//. if ( $name eq "" ) { print STDERR "parse error:illegal name in option $line\n". $t->close } exit 1. next unless $opt. } sub version { print "$pname $FENCE_RELEASE_NAME $BUILD_DATE\n". $line+=1. print STDERR $msg. # skip comments next if /^#/.this field is used by fenced elsif ($name eq "agent" ) { } elsif ($name eq "host" ) { $opt_s = $val. while( defined($in = <>) ) { $_ = $in.

. usage if defined $opt_h. fail "failed: no host system name" unless defined $opt_s. fail_usage "No '-d' flag specified." unless defined $opt_d. fail_usage "Unknown parameter. } elsif ($name eq "cmd" ) { $opt_c = $val... version if defined $opt_V. } # Maybe password. # Excess name/vals will fail else { fail "parse error: unknown option \"$opt\"". } else { get_options_stdin(). } elsif ($name eq "user" ) { $opt_u = $val. } } } ### MAIN ####################################################### if (@ARGV > 0) { getopts("hs:d:u:c:vV") fail_usage . } exit system ("$opt_c -l $opt_u $opt_s xm sysrq $opt_d b"). fail "failed: no domain to fence" unless defined $opt_d." if (@ARGV > 0)." unless defined $opt_s.elsif ($name eq "nodename" ) { $opt_d = $val. fail_usage "No '-s' flag specified.

Sign up to vote on this title
UsefulNot useful