All of lore.kernel.org
 help / color / mirror / Atom feed
From: rmccabe@sourceware.org <rmccabe@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] cluster/fence/agents baytech/fence_baytech.pl  ...
Date: 27 Jun 2007 15:38:22 -0000	[thread overview]
Message-ID: <20070627153822.25311.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	cluster
Branch: 	RHEL5
Changes by:	rmccabe at sourceware.org	2007-06-27 15:38:19

Modified files:
	fence/agents/baytech: fence_baytech.pl 
	fence/agents/bladecenter: fence_bladecenter.pl 
	fence/agents/brocade: fence_brocade.pl 
	fence/agents/bullpap: fence_bullpap.pl 
	fence/agents/cpint: fence_cpint.pl 
	fence/agents/drac: fence_drac.pl 
	fence/agents/egenera: fence_egenera.pl 
	fence/agents/ibmblade: fence_ibmblade.pl 
	fence/agents/ipmilan: ipmilan.c 
	fence/agents/mcdata: fence_mcdata.pl 
	fence/agents/rackswitch: do_rack.c do_rack.h 
	fence/agents/rps10: rps10.c 
	fence/agents/rsa: fence_rsa.py 
	fence/agents/rsb: fence_rsb.py 
	fence/agents/sanbox2: fence_sanbox2.pl 
	fence/agents/vixel: fence_vixel.pl 
	fence/agents/vmware: fence_vmware.pl 
	fence/agents/wti: fence_wti.pl 
	fence/agents/xcat: fence_xcat.pl 
	fence/agents/xen: fence_xen.pl 
	fence/agents/zvm: fence_zvm.pl 

Log message:
	Fold in passwd_script support from HEAD

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/baytech/fence_baytech.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/bladecenter/fence_bladecenter.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/brocade/fence_brocade.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3&r2=1.3.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/bullpap/fence_bullpap.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.6&r2=1.6.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/cpint/fence_cpint.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1&r2=1.1.16.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/drac/fence_drac.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.8.2.1&r2=1.8.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/egenera/fence_egenera.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/ibmblade/fence_ibmblade.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2&r2=1.2.14.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/ipmilan/ipmilan.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.8.2.2&r2=1.8.2.3
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/mcdata/fence_mcdata.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/rackswitch/do_rack.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1&r2=1.1.16.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/rackswitch/do_rack.h.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1&r2=1.1.16.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/rps10/rps10.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2&r2=1.2.16.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/rsa/fence_rsa.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2.2.1&r2=1.2.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/rsb/fence_rsb.py.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/sanbox2/fence_sanbox2.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.3&r2=1.3.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/vixel/fence_vixel.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/vmware/fence_vmware.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1&r2=1.1.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/wti/fence_wti.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.5.2.1&r2=1.5.2.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/xcat/fence_xcat.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/xen/fence_xen.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.2&r2=1.2.2.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/zvm/fence_zvm.pl.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.1&r2=1.1.16.1

--- cluster/fence/agents/baytech/fence_baytech.pl	2006/08/16 19:13:26	1.2
+++ cluster/fence/agents/baytech/fence_baytech.pl	2007/06/27 15:38:16	1.2.2.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
@@ -32,7 +32,7 @@
 
 #BEGIN_VERSION_GENERATION
 $FENCE_RELEASE_NAME="";
-$SISTINA_COPYRIGHT="";
+$REDHAT_COPYRIGHT="";
 $BUILD_DATE="";
 #END_VERSION_GENERATION
 
@@ -70,6 +70,7 @@
     print " -o string      action: On,Off,Status or Reboot (default)\n";
     print " -n string      outlet name\n";
     print " -p string      password\n";
+    print " -S path        script to run to retrieve password\n";
     print " -V             version\n";
 
     exit 0;
@@ -94,7 +95,7 @@
 sub version
 {
   print "$pname $FENCE_RELEASE_NAME $BUILD_DATE\n";
-  print "$SISTINA_COPYRIGHT\n" if ( $SISTINA_COPYRIGHT );
+  print "$REDHAT_COPYRIGHT\n" if ( $REDHAT_COPYRIGHT );
 
   exit 0;
 }
@@ -104,7 +105,7 @@
 {
    $action = "Reboot";
    if (@ARGV > 0) {
-      getopts("n:l:p:o:a:VhD") || fail_usage ;
+      getopts("n:l:p:S:o:a:VhD") || fail_usage ;
 
       usage if defined $opt_h;
       version if defined $opt_V;
@@ -130,6 +131,13 @@
    $quiet=$opt_q if defined $opt_q;
    $user=$opt_l if defined $opt_l;
    $passwd=$opt_p if defined $opt_p;
+   if (defined $opt_S) {
+     $pwd_script_out = `$opt_S`;
+     chomp($pwd_script_out);
+     if ($pwd_script_out) {
+       $passwd=$pwd_script_out;
+     }
+   }
 
    if(defined $passwd && !defined $user)
    {
@@ -184,6 +192,10 @@
 	    $opt_p = $val;
 	} 
 
+    elsif ($name eq "passwd_script") {
+        $opt_S = $val;
+    }
+
 	elsif ($name eq "action" ) 
 	{
 	    $opt_o = $val;
--- cluster/fence/agents/bladecenter/fence_bladecenter.pl	2006/08/15 18:34:20	1.2
+++ cluster/fence/agents/bladecenter/fence_bladecenter.pl	2007/06/27 15:38:17	1.2.2.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
@@ -35,7 +35,7 @@
 
 #BEGIN_VERSION_GENERATION
 $FENCE_RELEASE_NAME="";
-$SISTINA_COPYRIGHT="";
+$REDHAT_COPYRIGHT="";
 $BUILD_DATE="";
 #END_VERSION_GENERATION
 
@@ -53,6 +53,7 @@
 	print "  -n <num>         blade number to operate on\n";
 	print "  -o <string>      Action:  on, off, reboot (default) or status\n";
 	print "  -p <string>      Password for login\n";
+	print "  -S <path>        Script to run to retrieve password\n";
 	print "  -q               quiet mode\n";
 	print "  -V               version\n";
 
@@ -78,7 +79,7 @@
 sub version
 {
 	print "$pname $FENCE_RELEASE_NAME $BUILD_DATE\n";
-	print "$SISTINA_COPYRIGHT\n" if ( $SISTINA_COPYRIGHT );
+	print "$REDHAT_COPYRIGHT\n" if ( $REDHAT_COPYRIGHT );
 
 	exit 0;
 }
@@ -129,7 +130,10 @@
 		elsif ($name eq "passwd" ) 
 		{
 			$passwd = $val;
-		} 
+		}
+		elsif ($name eq "passwd_script" ) {
+			$passwd_script = $val;
+		}
 		elsif ($name eq "blade" ) 
 		{
 			$bladenum = $val;
@@ -199,7 +203,7 @@
 
 if (@ARGV > 0) 
 {
-	getopts("a:hl:n:o:p:qv:V") || fail_usage ;
+	getopts("a:hl:n:o:p:S:qv:V") || fail_usage ;
 
 	usage if defined $opt_h;
 	version if defined $opt_V;
@@ -212,12 +216,20 @@
 	$verbose  = $opt_v if defined $opt_v;
 	$quiet    = $opt_q if defined $opt_q;
 
+	if (defined $opt_S) {
+		$pwd_script_output = `$opt_S`;
+		chomp($pwd_script_output);
+		if ($pwd_script_output) {
+			$passwd = $pwd_script_output;
+		}
+	}
+
 	fail_usage "Unknown parameter." if (@ARGV > 0);
 
 	fail_usage "No '-a' flag specified." unless defined $host;
 	fail_usage "No '-n' flag specified." unless defined $bladenum;
 	fail_usage "No '-l' flag specified." unless defined $login;
-	fail_usage "No '-p' flag specified." unless defined $passwd;
+	fail_usage "No '-p' or '-S' flag specified." unless defined $passwd;
 	fail_usage "Unrecognised action '$action' for '-o' flag"
 		unless $action =~ /^(on|off|reboot|status)$/i;
 } 
@@ -228,9 +240,17 @@
 	fail "failed: no IP address" unless defined $host;
 	fail "failed: no blade number" unless defined $bladenum;
 	fail "failed: no login name" unless defined $login;
-	fail "failed: no password" unless defined $passwd;
 	fail "failed: unrecognised action: $action"
 		unless $action =~ /^(on|off|reboot|status)$/i;
+
+	if (defined $passwd_script) {
+		$pwd_script_output = `$passwd_script`;
+		chomp($pwd_script_output);
+		if ($pwd_script_output) {
+			$passwd = $pwd_script_output;
+		}
+	}
+	fail "failed: no password" unless defined $passwd;
 }
 
 # convert $action to lower case 
--- cluster/fence/agents/brocade/fence_brocade.pl	2006/08/16 19:02:23	1.3
+++ cluster/fence/agents/brocade/fence_brocade.pl	2007/06/27 15:38:17	1.3.2.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
@@ -46,6 +46,7 @@
     print "  -n <num>         Port number to operate on\n";
     print "  -o <string>      Action:  disable (default) or enable\n";
     print "  -p <string>      Password for login\n";
+    print "  -S <path>        Script to run to retrieve password\n";
     print "  -q               quiet mode\n";
     print "  -V               version\n";
 
@@ -78,17 +79,25 @@
 
 
 if (@ARGV > 0) {
-   getopts("a:hl:n:o:p:qV") || fail_usage ;
+   getopts("a:hl:n:o:p:S:qV") || fail_usage ;
 
    usage if defined $opt_h;
    version if defined $opt_V;
 
    fail_usage "Unknown parameter." if (@ARGV > 0);
 
+   if (defined $opt_S) {
+     $pwd_script_out = `$opt_S`;
+     chomp($pwd_script_out);
+     if ($pwd_script_out) {
+       $opt_p = $pwd_script_out;
+     }
+   }
+
    fail_usage "No '-a' flag specified." unless defined $opt_a;
    fail_usage "No '-n' flag specified." unless defined $opt_n;
    fail_usage "No '-l' flag specified." unless defined $opt_l;
-   fail_usage "No '-p' flag specified." unless defined $opt_p;
+   fail_usage "No '-p' or '-S' flag specified." unless defined $opt_p;
    fail_usage "Unrecognised action '$opt_o' for '-o' flag"
       unless $opt_o =~ /^(disable|enable)$/i;
 
@@ -98,6 +107,15 @@
    fail "failed: no IP address" unless defined $opt_a;
    fail "failed: no plug number" unless defined $opt_n;
    fail "failed: no login name" unless defined $opt_l;
+
+   if (defined $opt_S) {
+     $pwd_script_out = `$opt_S`;
+     chomp($pwd_script_out);
+     if ($pwd_script_out) {
+       $opt_p = $pwd_script_out;
+     }
+   }
+
    fail "failed: no password" unless defined $opt_p;
    fail "failed: unrecognised action: $opt_o"
       unless $opt_o =~ /^(disable|enable)$/i;
@@ -226,6 +244,9 @@
 	{
             $opt_p = $val;
         } 
+	elsif ($name eq "passwd_script") {
+		$opt_S = $val;
+	}
 	elsif ($name eq "port" ) 
 	{
             $opt_n = $val;
--- cluster/fence/agents/bullpap/fence_bullpap.pl	2006/04/25 13:00:05	1.6
+++ cluster/fence/agents/bullpap/fence_bullpap.pl	2007/06/27 15:38:17	1.6.2.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
@@ -31,7 +31,7 @@
 
 #BEGIN_VERSION_GENERATION
 $FENCE_RELEASE_NAME="";
-$SISTINA_COPYRIGHT="";
+$REDHAT_COPYRIGHT="";
 $BUILD_DATE="";
 #END_VERSION_GENERATION
 
@@ -49,17 +49,19 @@
 	print "  -d <domain>      Domain to operate on\n";
 	print "  -o <string>      Action:  on, off, reboot (default) or status\n";
 	print "  -p <string>      Password for login\n";
+	print "  -S <path>        Script to run to retrieve password\n";
 	print "  -q               quiet mode\n";
 	print "  -V               version\n";
 	print "\n";
 	print "When run with no arguments, $pname takes arguments from ";
 	print "standard\ninput, one line per option.  They are as follows:\n";
 	print "\n";
-	print "  ipaddr=<ip>      Same as -a command line option\n";
-	print "  login=<name>     Same as -l command line option\n";
-	print "  domain=<domain>  Same as -d command line option\n";
-	print "  option=<string>  Same as -o command line option\n";
-	print "  passwd=<string>  Same as -p command line option\n\n";
+	print "  ipaddr=<ip>          Same as -a command line option\n";
+	print "  login=<name>         Same as -l command line option\n";
+	print "  domain=<domain>      Same as -d command line option\n";
+	print "  option=<string>      Same as -o command line option\n";
+	print "  passwd=<string>      Same as -p command line option\n";
+	print "  passwd_script=<path> Same as -S command line option\n\n";
 
 	exit 0;
 }
@@ -82,7 +84,7 @@
 sub version
 {
 	print "$pname $FENCE_RELEASE_NAME $BUILD_DATE\n";
-	print "$SISTINA_COPYRIGHT\n" if ( $SISTINA_COPYRIGHT );
+	print "$REDHAT_COPYRIGHT\n" if ( $REDHAT_COPYRIGHT );
 
 	exit 0;
 }
@@ -138,6 +140,9 @@
 		{
 			$passwd = $val;
 		} 
+		elsif ($name eq "passwd_script" ) {
+			$passwd_script = $val;
+		}
 		elsif ($name eq "domain" ) 
 		{
 			$domain = $val;
@@ -221,7 +226,7 @@
 
 if (@ARGV > 0) 
 {
-	getopts("a:hl:d:o:p:qv:V") || fail_usage ;
+	getopts("a:hl:d:o:p:S:qv:V") || fail_usage ;
 
 	usage if defined $opt_h;
 	version if defined $opt_V;
@@ -234,12 +239,20 @@
 	$verbose  = $opt_v if defined $opt_v;
 	$quiet    = $opt_q if defined $opt_q;
 
+	if (defined $opt_S) {
+		$pwd_script_out = `$opt_S`;
+		chomp($pwd_script_out);
+		if ($pwd_script_out) {
+			$passwd = $pwd_script_out;
+		}
+	}
+
 	fail_usage "Unknown parameter." if (@ARGV > 0);
 
 	fail_usage "No '-a' flag specified." unless defined $host;
 	fail_usage "No '-d' flag specified." unless defined $domain;
 	fail_usage "No '-l' flag specified." unless defined $login;
-	fail_usage "No '-p' flag specified." unless defined $passwd;
+	fail_usage "No '-p' or '-S' flag specified." unless defined $passwd;
 	fail_usage "Unrecognised action '$action' for '-o' flag"
 		unless $action =~ /^(on|off|reboot|status)$/i;
 } 
@@ -250,9 +263,17 @@
 	fail "failed: no IP address" unless defined $host;
 	fail "failed: no domain" unless defined $domain;
 	fail "failed: no login name" unless defined $login;
-	fail "failed: no password" unless defined $passwd;
 	fail "failed: unrecognized action: $action"
 		unless $action =~ /^(on|off|reboot|status)$/i;
+
+	if (defined $passwd_script) {
+		$pwd_script_out = `$passwd_script`;
+		chomp($pwd_script_out);
+		if ($pwd_script_out) {
+			$passwd = $pwd_script_out;
+		}
+	}
+	fail "failed: no password" unless defined $passwd;
 }
 
 # convert $action to lower case 
--- cluster/fence/agents/cpint/fence_cpint.pl	2004/06/24 08:53:13	1.1
+++ cluster/fence/agents/cpint/fence_cpint.pl	2007/06/27 15:38:17	1.1.16.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
--- cluster/fence/agents/drac/fence_drac.pl	2007/05/10 19:42:24	1.8.2.1
+++ cluster/fence/agents/drac/fence_drac.pl	2007/06/27 15:38:17	1.8.2.2
@@ -3,7 +3,7 @@
 ###############################################################################
 ###############################################################################
 ##
-##  Copyright (C) 2006 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2006-2007 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
@@ -79,15 +79,17 @@
 	print "  -m <modulename>  DRAC/MC module name\n";
 	print "  -o <string>      Action: reboot (default), off or on\n";
 	print "  -p <string>      Login password\n";
+	print "  -S <path>        Script to run to retrieve password\n";
 	print "  -q               quiet mode\n";
 	print "  -V               version\n";
 	print "\n";
 	print "CCS Options:\n";
-        print "  action = \"string\"      Action: reboot (default), off or on\n";
-        print "  debug  = \"debugfile\"   debugging output file\n";
+	print "  action = \"string\"      Action: reboot (default), off or on\n";
+	print "  debug  = \"debugfile\"   debugging output file\n";
 	print "  ipaddr = \"ip\"          IP address or hostname of DRAC\n";
 	print "  login  = \"name\"        Login name\n";
-        print "  passwd = \"string\"      Login password\n";
+	print "  passwd = \"string\"      Login password\n";
+	print "  passwd_script = \"path\" Script to run to retrieve password\n";
 
 	exit 0;
 }
@@ -125,7 +127,7 @@
 sub version
 {
 	print "$pname $FENCE_RELEASE_NAME $BUILD_DATE\n";
-	print "$SISTINA_COPYRIGHT\n" if ( $SISTINA_COPYRIGHT );
+	print "$REDHAT_COPYRIGHT\n" if ( $REDHAT_COPYRIGHT );
 	exit 0;
 }
 
@@ -540,7 +542,11 @@
 		elsif ($name eq "passwd" ) 
 		{
 			$passwd = $val;
-		} 
+		}
+		elsif ($name eq "passwd_script" )
+		{
+			$passwd_script = $val;
+		}
 		elsif ($name eq "debug" ) 
 		{
 			$debug = $val;
@@ -572,7 +578,7 @@
 # Check parameters
 #
 if (@ARGV > 0) {
-	getopts("a:c:d:D:hl:m:o:p:qVv") || fail_usage ;
+	getopts("a:c:d:D:hl:m:o:p:S:qVv") || fail_usage ;
 	
 	usage if defined $opt_h;
 	version if defined $opt_V;
@@ -590,7 +596,15 @@
 
 	$modulename = $opt_m if defined $opt_m;
 
-	fail_usage "No '-p' flag specified." unless defined $opt_p;
+	if (defined $opt_S) {
+		$pwd_script_out = `$opt_S`;
+		chomp($pwd_script_out);
+		if ($pwd_script_out) {
+			$opt_p = $pwd_script_out;
+		}
+	}
+
+	fail_usage "No '-p' or '-S' flag specified." unless defined $opt_p;
 	$passwd = $opt_p;
 
 	$verbose = $opt_v if defined $opt_v;
@@ -610,9 +624,18 @@
 
 	fail "failed: no IP address" unless defined $address;
 	fail "failed: no login name" unless defined $login;
+
+	if (defined $passwd_script) {
+		$pwd_script_out = `$passwd_script`;
+		chomp($pwd_script_out);
+		if ($pwd_script_out) {
+			$passwd = $pwd_script_out;
+		}
+	}
+
 	fail "failed: no password" unless defined $passwd;
 	fail "failed: unrecognised action: $action"
-	unless $action =~ /^(Off|On|Reboot|status)$/i;
+		unless $action =~ /^(Off|On|Reboot|status)$/i;
 } 
 
 
--- cluster/fence/agents/egenera/fence_egenera.pl	2006/08/16 19:14:50	1.2
+++ cluster/fence/agents/egenera/fence_egenera.pl	2007/06/27 15:38:17	1.2.2.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
--- cluster/fence/agents/ibmblade/fence_ibmblade.pl	2004/09/10 15:44:32	1.2
+++ cluster/fence/agents/ibmblade/fence_ibmblade.pl	2007/06/27 15:38:17	1.2.14.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
--- cluster/fence/agents/ipmilan/ipmilan.c	2007/01/29 20:33:03	1.8.2.2
+++ cluster/fence/agents/ipmilan/ipmilan.c	2007/06/27 15:38:17	1.8.2.3
@@ -8,7 +8,7 @@
  *
  *  http://ipmitool.sourceforge.net
  *
- * Copyright 2005 Red Hat, Inc.
+ * Copyright 2005-2007 Red Hat, Inc.
  *  author: Lon Hohberger <lhh@redhat.com>
  *
  * This library is free software; you can redistribute it and/or
@@ -32,6 +32,7 @@
 #include <signal.h>
 #include <string.h>
 #include <errno.h>
+#include <limits.h>
 #include <sys/wait.h>
 #include <sys/stat.h>
 #include <libintl.h>
@@ -664,6 +665,7 @@
 	char *end = NULL;
 	struct ipmi *i;
 	size_t len;
+	int lanplus = 0;
 
 	if (!ISIPMI(s))
 		return S_OOPS;
@@ -678,6 +680,10 @@
 	if (user) {
 		*user = 0;
 		user++;
+		if (*user && *user == '+') {
+			lanplus = 1;
+			user++;
+		}
 	}
 
 	/* No separator or end of string reached */
@@ -709,7 +715,7 @@
 		user = NULL;
 
 	/* IPMI auth type not supported on RHEL3 */
-	i = ipmi_init(i, host, NULL, user, passwd, 0, 0);
+	i = ipmi_init(i, host, NULL, user, passwd, lanplus, 0);
 	if (!i)
 		return S_OOPS;
 	i->i_config = 1;
@@ -765,7 +771,7 @@
 cleanup(char *line, size_t linelen)
 {
 	char *p;
-	int x;
+	size_t x;
 
 	/* Remove leading whitespace. */
 	p = line;
@@ -812,6 +818,7 @@
 get_options_stdin(char *ip, size_t iplen,
 		  char *authtype, size_t atlen,
 		  char *passwd, size_t pwlen,
+		  char *pwd_script, size_t pwd_script_len,
 		  char *user, size_t userlen,
 		  char *op, size_t oplen,
 		  int *lanplus, int *verbose)
@@ -862,14 +869,18 @@
 			else
 				passwd[0] = 0;
 
-		} else if (!strcasecmp(name, "user") ||
-			   !strcasecmp(name, "login")) {
+		} else if (!strcasecmp(name, "passwd_script")) {
+			if (val) {
+				strncpy(pwd_script, val, pwd_script_len);
+				pwd_script[pwd_script_len - 1] = '\0';
+			} else
+				pwd_script[0] = '\0';
+		} else if (!strcasecmp(name, "user") || !strcasecmp(name, "login")) {
 			/* username */
 			if (val)
 				strncpy(user, val, userlen);
 			else
 				user[0] = 0;
-
 		} else if (!strcasecmp(name, "lanplus")) {
 			(*lanplus) = 1;
 		} else if (!strcasecmp(name, "option") ||
@@ -905,6 +916,8 @@
 printf("   -i <ipaddr>    IPMI Lan IP to talk to (deprecated, use -i)\n");
 printf("   -p <password>  Password (if required) to control power on\n"
        "                  IPMI device\n");
+printf("   -P             Use Lanplus\n");
+printf("   -S <path>      Script to retrieve password (if required)\n");
 printf("   -l <login>     Username/Login (if required) to control power\n"
        "                  on IPMI device\n");
 printf("   -o <op>        Operation to perform.\n");
@@ -913,14 +926,16 @@
 printf("   -v             Verbose mode\n\n");
 printf("If no options are specified, the following options will be read\n");
 printf("from standard input (one per line):\n\n");
-printf("   auth=<auth>    Same as -A\n");
-printf("   ipaddr=<#>     Same as -a\n");
-printf("   passwd=<pass>  Same as -p\n");
-printf("   login=<login>  Same as -u\n");
-printf("   option=<op>    Same as -o\n");
-printf("   operation=<op> Same as -o\n");
-printf("   action=<op>    Same as -o\n");
-printf("   verbose        Same as -v\n\n");
+printf("   auth=<auth>           Same as -A\n");
+printf("   ipaddr=<#>            Same as -a\n");
+printf("   passwd=<pass>         Same as -p\n");
+printf("   passwd_script=<path>  Same as -S\n");
+printf("   lanplus               Same as -P\n");
+printf("   login=<login>         Same as -u\n");
+printf("   option=<op>           Same as -o\n");
+printf("   operation=<op>        Same as -o\n");
+printf("   action=<op>           Same as -o\n");
+printf("   verbose               Same as -v\n\n");
 	exit(1);
 }
 
@@ -935,6 +950,7 @@
 	char passwd[64];
 	char user[64];
 	char op[64];
+	char pwd_script[PATH_MAX] = { 0, };
 	int lanplus=0;
 	int verbose=0;
 	char *pname = basename(argv[0]);
@@ -950,7 +966,7 @@
 		/*
 		   Parse command line options if any were specified
 		 */
-		while ((opt = getopt(argc, argv, "A:a:i:l:p:Po:vV?hH")) != EOF) {
+		while ((opt = getopt(argc, argv, "A:a:i:l:p:S:Po:vV?hH")) != EOF) {
 			switch(opt) {
 			case 'A':
 				/* Auth type */
@@ -972,6 +988,10 @@
 			case 'P':
 				lanplus = 1;
 				break;
+			case 'S':
+				strncpy(pwd_script, optarg, sizeof(pwd_script));
+				pwd_script[sizeof(pwd_script) - 1] = '\0';
+				break;
 			case 'o':
 				/* Operation */
 				strncpy(op, optarg, sizeof(op));
@@ -997,11 +1017,33 @@
 		if (get_options_stdin(ip, sizeof(ip),
 				      authtype, sizeof(authtype),
 				      passwd, sizeof(passwd),
+					  pwd_script, sizeof(pwd_script),
 				      user, sizeof(user),
 				      op, sizeof(op), &lanplus, &verbose) != 0)
 			return 1;
 	}
 
+	if (pwd_script[0] != '\0') {
+		char pwd_buf[1024];
+		FILE *fp;
+		fp = popen(pwd_script, "r");
+		if (fp != NULL) {
+			ssize_t len = fread(pwd_buf, 1, sizeof(pwd_buf), fp);
+			if (len > 0) {
+				char *p;
+				p = strchr(pwd_buf, '\n');
+				if (p != NULL)
+					*p = '\0';
+				p = strchr(pwd_buf, '\r');
+				if (p != NULL)
+					*p = '\0';
+				strncpy(passwd, pwd_buf, sizeof(passwd));
+				passwd[sizeof(passwd) - 1] = '\0';
+			}
+			pclose(fp);
+		}
+	}
+
 	/*
 	   Validate the operating parameters
 	 */
--- cluster/fence/agents/mcdata/fence_mcdata.pl	2006/08/16 19:05:25	1.2
+++ cluster/fence/agents/mcdata/fence_mcdata.pl	2007/06/27 15:38:18	1.2.2.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
@@ -53,6 +53,7 @@
     print "  -n <num>         Port number to disable\n";
     print "  -o <string>      Action:  disable (default) or enable\n";
     print "  -p <string>      Password for login\n";
+    print "  -S <path>        Script to run to retrieve login password\n";
     print "  -q               quiet mode\n";
     print "  -V               version\n";
 
@@ -129,7 +130,11 @@
 	elsif ($name eq "passwd" ) 
 	{
             $opt_p = $val;
-        } 
+        }
+	elsif ($name eq "passwd_script" )
+	{
+		$opt_S = $val;
+	}
 	elsif ($name eq "port" ) 
 	{
             $opt_n = $val;
@@ -146,7 +151,7 @@
 # MAIN
 
 if (@ARGV > 0) {
-   getopts("a:hl:n:o:p:qV") || fail_usage ;
+   getopts("a:hl:n:o:p:S:qV") || fail_usage ;
 
    usage if defined $opt_h;
    version if defined $opt_V;
@@ -156,7 +161,16 @@
    fail_usage "No '-a' flag specified." unless defined $opt_a;
    fail_usage "No '-n' flag specified." unless defined $opt_n;
    fail_usage "No '-l' flag specified." unless defined $opt_l;
-   fail_usage "No '-p' flag specified." unless defined $opt_p;
+
+   if (defined $opt_S) {
+     $pwd_script_out = `$opt_S`;
+     chomp($pwd_script_out);
+     if ($pwd_script_out) {
+        $opt_p = $pwd_script_out;
+     }
+   }
+
+   fail_usage "No '-p' or '-S' flag specified." unless defined $opt_p;
    fail_usage "Unrecognised action '$opt_o' for '-o' flag"
       unless $opt_o =~ /^(disable|enable)$/i;
 
@@ -166,6 +180,15 @@
    fail "failed: no IP address" unless defined $opt_a;
    fail "failed: no plug number" unless defined $opt_n;
    fail "failed: no login name" unless defined $opt_l;
+
+   if (defined $opt_S) {
+     $pwd_script_out = `$opt_S`;
+     chomp($pwd_script_out);
+     if ($pwd_script_out) {
+        $opt_p = $pwd_script_out;
+     }
+   }
+
    fail "failed: no password" unless defined $opt_p;
    fail "failed: unrecognised action: $opt_o"
       unless $opt_o =~ /^(disable|enable)$/i;
--- cluster/fence/agents/rackswitch/do_rack.c	2004/06/24 08:53:14	1.1
+++ cluster/fence/agents/rackswitch/do_rack.c	2007/06/27 15:38:18	1.1.16.1
@@ -2,7 +2,7 @@
 *******************************************************************************
 **
 **  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-**  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+**  Copyright (C) 2004-2007 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
@@ -24,6 +24,7 @@
 char password[256];
 char arg[256];
 char name[256];
+char pwd_script[PATH_MAX] = { 0, };
 
 char readbuf[MAXBUF];
 char writebuf[MAXBUF];
@@ -159,6 +160,7 @@
 	 "  -n <dec num>     Physical plug number on RackSwitch\n"
 	 "  -l <string>      Username\n"
 	 "  -p <string>      Password\n"
+	 "  -S <path>        Script to retrieve password\n"
 	 "  -v               Verbose\n"
 	 "  -q               Quiet\n"
          "  -V               Version information\n", pname);
@@ -175,7 +177,7 @@
     /*
      * Command line input
      */
-    while ((c = getopt(argc, argv, "ha:n:l:p:vqVd")) != -1)
+    while ((c = getopt(argc, argv, "ha:n:l:p:S:vqVd")) != -1)
       {
 	switch(c)
 	  {
@@ -199,6 +201,11 @@
 	    strncpy(password,optarg,254);
 	    break;
 
+	  case 'S':
+		strncpy(pwd_script, optarg, sizeof(pwd_script));
+		pwd_script[sizeof(pwd_script) - 1] = '\0';
+		break;
+
 	  case 'v':
 	    verbose_flag = 1;
 	    break;
@@ -265,10 +272,37 @@
       
       if (!strcmp(arg, "password"))
         strcpy(password, value);
+
+	  if (!strcasecmp(arg, "passwd_script")) {
+		strncpy(pwd_script, optarg, sizeof(pwd_script));
+		pwd_script[sizeof(pwd_script) - 1] = '\0';
+	  }
     }
     errno = 0;
     
   }
+
+  if (pwd_script[0] != '\0') {
+	FILE *fp;
+	char pwd_buf[1024];
+
+	fp = popen(pwd_script, "r");
+	if (fp != NULL) {
+		ssize_t len = fread(pwd_buf, 1, sizeof(pwd_buf), fp);
+		if (len > 0) {
+			char *p;
+			p = strchr(pwd_buf, '\n');
+			if (p != NULL)
+				*p = '\0';
+			p = strchr(pwd_buf, '\r');
+			if (p != NULL)
+				*p = '\0';
+			strncpy(password, pwd_buf, sizeof(password));
+			password[sizeof(password) - 1] = '\0';
+		}
+		pclose(fp);
+	}
+  }
 }
 
 static void sig_alarm(int sig)
--- cluster/fence/agents/rackswitch/do_rack.h	2004/06/24 08:53:14	1.1
+++ cluster/fence/agents/rackswitch/do_rack.h	2007/06/27 15:38:18	1.1.16.1
@@ -3,6 +3,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <limits.h>
 #include <fcntl.h>
 #include <errno.h>
 #include <ctype.h>
--- cluster/fence/agents/rps10/rps10.c	2004/11/16 19:39:35	1.2
+++ cluster/fence/agents/rps10/rps10.c	2007/06/27 15:38:18	1.2.16.1
@@ -1,5 +1,5 @@
 /*
-  Copyright Red Hat, Inc. 2002-2004
+  Copyright Red Hat, Inc. 2002-2007
 
   This program is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published by the
--- cluster/fence/agents/rsa/fence_rsa.py	2007/01/31 20:16:49	1.2.2.1
+++ cluster/fence/agents/rsa/fence_rsa.py	2007/06/27 15:38:18	1.2.2.2
@@ -32,17 +32,18 @@
 #END_VERSION_GENERATION
 
 def usage():
-  print "Usage:\n"
-  print "fence_rsa [options]\n"
-  print "Options:\n"
-  print "   -a <ipaddress>           ip or hostname of rsa II port\n"
-  print "   -h                       print out help\n"
-  print "   -l [login]               login name\n"
-  print "   -p [password]            password\n"
-  print "   -o [action]              Reboot (default), Off, On, or Status\n"
-  print "   -v Verbose               Verbose mode\n"
-  print "   -V                       Print Version, then exit\n"
-
+  print "Usage:"
+  print "fence_rsa [options]"
+  print "Options:"
+  print "   -a <ipaddress>           ip or hostname of rsa II port"
+  print "   -h                       print out help"
+  print "   -l [login]               login name"
+  print "   -p [password]            password"
+  print "   -S [path]                script to run to retrieve password"
+  print "   -o [action]              Reboot (default), Off, On, or Status"
+  print "   -v Verbose               Verbose mode"
+  print "   -V                       Print Version, then exit"
+  
   sys.exit (0)
 
 def version():
@@ -60,6 +61,7 @@
   address = ""
   login = ""
   passwd = ""
+  passwd_script = ""
   action = POWER_REBOOT   #default action
   verbose = False
 
@@ -80,7 +82,7 @@
 
   if len(sys.argv) > 1:
     try:
-      opts, args = getopt.getopt(sys.argv[1:], "a:hl:o:p:vV", ["help", "output="])
+      opts, args = getopt.getopt(sys.argv[1:], "a:hl:o:p:S:vV", ["help", "output="])
     except getopt.GetoptError:
       #print help info and quit
       usage()
@@ -94,11 +96,13 @@
         version()
       if o in ("-h", "--help"):
         usage()
-        sys.exit()
+        sys.exit(0)
       if o == "-l":
         login = a
       if o == "-p":
         passwd = a
+      if o == "-S":
+        passwd_script = a
       if o  == "-o":
         if a == "Off" or a == "OFF" or a == "off":
           action = POWER_OFF
@@ -110,35 +114,44 @@
           action = POWER_REBOOT
         else:
           usage()
-          sys.exit()
+          sys.exit(1)
       if o == "-a":
         address = a
-    if address == "" or login == "" or passwd == "":
+    if address == "" or login == "" or (passwd == "" and passwd_script == ""):
       usage()
-      sys.exit()
+      sys.exit(1)
 
   else: #Take args from stdin...
     params = {}
     #place params in dict
     for line in sys.stdin:
       val = line.split("=")
-      params[val[0]] = val[1]
-
+      if len(val) == 2:
+        params[val[0].strip()] = val[1].strip()
+    
     try:
       address = params["ipaddr"]
     except KeyError, e:
       os.write(standard_err, "FENCE: Missing ipaddr param for fence_rsa...exiting")
+      sys.exit(1)
+    
     try:
       login = params["login"]
     except KeyError, e:
       os.write(standard_err, "FENCE: Missing login param for fence_rsa...exiting")
-
+      sys.exit(1)
+    
     try:
-      passwd = params["passwd"]
+      if 'passwd' in params:
+        passwd = params["passwd"]
+      if 'passwd_script' in params:
+        passwd_script = params['passwd_script']
+      if passwd == "" and passwd_script == "":
+        raise "missing password"
     except KeyError, e:
       os.write(standard_err, "FENCE: Missing passwd param for fence_rsa...exiting")
-
-
+      sys.exit(1)
+    
     try:
       a = params["option"]
       if a == "Off" or a == "OFF" or a == "off":
@@ -149,9 +162,67 @@
         action = POWER_REBOOT
     except KeyError, e:
       action = POWER_REBOOT
-
+    
     ####End of stdin section
-
+  
+  
+  # retrieve passwd from passwd_script (if specified)
+  passwd_scr = ''
+  if len(passwd_script):
+    try:
+      if not os.access(passwd_script, os.X_OK):
+        raise 'script not executable'
+      p = os.popen(passwd_script, 'r', 1024)
+      passwd_scr = p.readline().strip()
+      if p.close() != None:
+        raise 'script failed'
+    except:
+      sys.stderr.write('password-script "%s" failed\n' % passwd_script)
+      passwd_scr = ''
+  
+  if passwd == "" and passwd_scr == "":
+    sys.stderr.write('password not available, exiting...')
+    sys.exit(1)
+  elif passwd == passwd_scr:
+    pass
+  elif passwd and passwd_scr:
+    # execute self, with password_scr as passwd,
+    # if that fails, continue with "passwd" argument as password
+    if len(sys.argv) > 1:
+      comm = sys.argv[0]
+      skip_next = False
+      for w in sys.argv[1:]:
+        if skip_next:
+          skip_next = False
+        elif w in ['-p', '-S']:
+          skip_next = True
+        else:
+          comm += ' ' + w
+      comm += ' -p ' + passwd_scr
+      ret = os.system(comm)
+      if ret != -1 and os.WIFEXITED(ret) and os.WEXITSTATUS(ret) == 0:
+        # success
+        sys.exit(0)
+      else:
+        sys.stderr.write('Use of password from "passwd_script" failed, trying "passwd" argument\n')
+    else: # use stdin
+      p = os.popen(sys.argv[0], 'w', 1024)
+      for par in params:
+        if par not in ['passwd', 'passwd_script']:
+          p.write(par + '=' + params[par] + '\n')
+      p.write('passwd=' + passwd_scr + '\n')
+      p.flush()
+      if p.close() == None:
+        # success
+        sys.exit(0)
+      else:
+        sys.stderr.write('Use of password from "passwd_script" failed, trying "passwd" argument\n')
+  elif passwd_scr:
+    passwd = passwd_scr
+  # passwd all set
+  
+  
+  
   ##Time to open telnet session and log in. 
   try:
     sock = Telnet(address.strip())
--- cluster/fence/agents/rsb/fence_rsb.py	2006/04/19 19:39:01	1.1
+++ cluster/fence/agents/rsb/fence_rsb.py	2007/06/27 15:38:18	1.1.2.1
@@ -33,17 +33,18 @@
 #END_VERSION_GENERATION
 
 def usage():
-  print "Usage:\n"
-  print "fence_rsb [options]\n"
-  print "Options:\n"
-  print "   -a <ipaddress>           ip or hostname of rsb\n"
-  print "   -h                       print out help\n"
-  print "   -l [login]               login name\n"
-  print "   -n [telnet port]         telnet port\n"
-  print "   -p [password]            password\n"
-  print "   -o [action]              Reboot (default), Off, On, or Status\n"
-  print "   -v Verbose               Verbose mode\n"
-  print "   -V                       Print Version, then exit\n"
+  print "Usage:"
+  print "fence_rsb [options]"
+  print "Options:"
+  print "   -a <ipaddress>           ip or hostname of rsb"
+  print "   -h                       print out help"
+  print "   -l [login]               login name"
+  print "   -n [telnet port]         telnet port"
+  print "   -p [password]            password"
+  print "   -S [path]                script to run to retrieve password"
+  print "   -o [action]              Reboot (default), Off, On, or Status"
+  print "   -v Verbose               Verbose mode"
+  print "   -V                       Print Version, then exit"
 
   sys.exit (0)
 
@@ -64,6 +65,7 @@
   address = ""
   login = ""
   passwd = ""
+  passwd_script = ""
   action = POWER_REBOOT   #default action
   telnet_port = 3172
   verbose = False
@@ -93,7 +95,7 @@
 
   if len(sys.argv) > 1:
     try:
-      opts, args = getopt.getopt(sys.argv[1:], "a:hl:n:o:p:vV", ["help", "output="])
+      opts, args = getopt.getopt(sys.argv[1:], "a:hl:n:o:p:S:vV", ["help", "output="])
     except getopt.GetoptError:
       #print help info and quit
       usage()
@@ -106,13 +108,15 @@
         version()
       if o in ("-h", "--help"):
         usage()
-        sys.exit()
+        sys.exit(0)
       if o == "-l":
         login = a
       if o == "-n":
         telnet_port = a
       if o == "-p":
         passwd = a
+      if o == "-S":
+        passwd_script = a
       if o  == "-o":
         if a == "Off" or a == "OFF" or a == "off":
           action = POWER_OFF
@@ -124,34 +128,44 @@
           action = POWER_REBOOT
         else:
           usage()
-          sys.exit()
+          sys.exit(1)
       if o == "-a":
         address = a
-    if address == "" or login == "" or passwd == "":
+    if address == "" or login == "" or (passwd == "" and passwd_script == ""):
       usage()
-      sys.exit()
+      sys.exit(1)
 
   else: #Take args from stdin...
     params = {}
     #place params in dict
     for line in sys.stdin:
       val = line.split("=")
-      params[val[0]] = val[1]
+      if len(val) == 2:
+        params[val[0].strip()] = val[1].strip()
 
     try:
       address = params["ipaddr"]
     except KeyError, e:
       os.write(standard_err, "FENCE: Missing ipaddr param for fence_rsb...exiting")
+      sys.exit(1)
+    
     try:
       login = params["login"]
     except KeyError, e:
       os.write(standard_err, "FENCE: Missing login param for fence_rsb...exiting")
-
+      sys.exit(1)
+    
     try:
-      passwd = params["passwd"]
+      if 'passwd' in params:
+        passwd = params["passwd"]
+      if 'passwd_script' in params:
+        passwd_script = params['passwd_script']
+      if passwd == "" and passwd_script == "":
+        raise "missing password"
     except KeyError, e:
       os.write(standard_err, "FENCE: Missing passwd param for fence_rsb...exiting")
-
+      sys.exit(1)
+    
     try:
       telnet_port = params["telnet_port"]
     except KeyError, e:
@@ -169,7 +183,65 @@
       action = POWER_REBOOT
 
     ####End of stdin section
-
+  
+  
+  # retrieve passwd from passwd_script (if specified)
+  passwd_scr = ''
+  if len(passwd_script):
+    try:
+      if not os.access(passwd_script, os.X_OK):
+        raise 'script not executable'
+      p = os.popen(passwd_script, 'r', 1024)
+      passwd_scr = p.readline().strip()
+      if p.close() != None:
+        raise 'script failed'
+    except:
+      sys.stderr.write('password-script "%s" failed\n' % passwd_script)
+      passwd_scr = ''
+  
+  if passwd == "" and passwd_scr == "":
+    sys.stderr.write('password not available, exiting...')
+    sys.exit(1)
+  elif passwd == passwd_scr:
+    pass
+  elif passwd and passwd_scr:
+    # execute self, with password_scr as passwd,
+    # if that fails, continue with "passwd" argument as password
+    if len(sys.argv) > 1:
+      comm = sys.argv[0]
+      skip_next = False
+      for w in sys.argv[1:]:
+        if skip_next:
+          skip_next = False
+        elif w in ['-p', '-S']:
+          skip_next = True
+        else:
+          comm += ' ' + w
+      comm += ' -p ' + passwd_scr
+      ret = os.system(comm)
+      if ret != -1 and os.WIFEXITED(ret) and os.WEXITSTATUS(ret) == 0:
+        # success
+        sys.exit(0)
+      else:
+        sys.stderr.write('Use of password from "passwd_script" failed, trying "passwd" argument\n')
+    else: # use stdin
+      p = os.popen(sys.argv[0], 'w', 1024)
+      for par in params:
+        if par not in ['passwd', 'passwd_script']:
+          p.write(par + '=' + params[par] + '\n')
+      p.write('passwd=' + passwd_scr + '\n')
+      p.flush()
+      if p.close() == None:
+        # success
+        sys.exit(0)
+      else:
+        sys.stderr.write('Use of password from "passwd_script" failed, trying "passwd" argument\n')
+  elif passwd_scr:
+    passwd = passwd_scr
+  # passwd all set
+  
+  
+  
   try:
     telnet_port = int(telnet_port)
   except:
--- cluster/fence/agents/sanbox2/fence_sanbox2.pl	2006/08/16 19:06:05	1.3
+++ cluster/fence/agents/sanbox2/fence_sanbox2.pl	2007/06/27 15:38:18	1.3.2.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
@@ -46,6 +46,7 @@
     print "  -n <num>         Port number to disable\n";
     print "  -o <string>      Action:  disable (default) or enable\n";
     print "  -p <string>      Password for login\n";
+    print "  -S <path>        Script to run to retrieve login password\n";
     print "  -q               quiet mode\n";
     print "  -V               version\n";
 
@@ -78,7 +79,7 @@
 
 
 if (@ARGV > 0) {
-   getopts("a:hl:n:o:p:qV") || fail_usage ;
+   getopts("a:hl:n:o:p:S:qV") || fail_usage ;
 
    usage if defined $opt_h;
    version if defined $opt_V;
@@ -88,7 +89,16 @@
    fail_usage "No '-a' flag specified." unless defined $opt_a;
    fail_usage "No '-n' flag specified." unless defined $opt_n;
    fail_usage "No '-l' flag specified." unless defined $opt_l;
-   fail_usage "No '-p' flag specified." unless defined $opt_p;
+
+   if (defined $opt_S) {
+      $pwd_script_out = `$opt_S`;
+      chomp($pwd_script_out);
+      if ($pwd_script_out) {
+          $opt_p = $pwd_script_out;
+      }
+   }
+
+   fail_usage "No '-p' or '-S' flag specified." unless defined $opt_p;
    fail_usage "Unrecognised action '$opt_o' for '-o' flag"
       unless $opt_o =~ /^(disable|enable)$/i;
 
@@ -98,6 +108,15 @@
    fail "failed: no IP address" unless defined $opt_a;
    fail "failed: no plug number" unless defined $opt_n;
    fail "failed: no login name" unless defined $opt_l;
+
+   if (defined $opt_S) {
+      $pwd_script_out = `$opt_S`;
+      chomp($pwd_script_out);
+      if ($pwd_script_out) {
+          $opt_p = $pwd_script_out;
+      }
+   }
+
    fail "failed: no password" unless defined $opt_p;
    fail "failed: unrecognised action: $opt_o"
       unless $opt_o =~ /^(disable|enable)$/i;
@@ -222,7 +241,11 @@
 	elsif ($name eq "passwd" ) 
 	{
             $opt_p = $val;
-        } 
+        }
+	elsif ($name eq "passwd_script" )
+	{
+		$opt_S = $val;
+	}
 	elsif ($name eq "port" ) 
 	{
             $opt_n = $val;
--- cluster/fence/agents/vixel/fence_vixel.pl	2006/08/16 19:06:43	1.2
+++ cluster/fence/agents/vixel/fence_vixel.pl	2007/06/27 15:38:18	1.2.2.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
@@ -40,6 +40,7 @@
     print "  -h               Usage\n";
     print "  -n <num>         Port number to disable\n";
     print "  -p <string>      Password for login\n";
+    print "  -S <path>        Script to run to retrieve login password\n";
     print "  -V               version\n\n";
 
     exit 0;
@@ -70,7 +71,7 @@
 }
 
 if (@ARGV > 0) {
-    getopts("a:hn:p:V") || fail_usage ;
+    getopts("a:hn:p:S:V") || fail_usage ;
 
     usage if defined $opt_h;
     version if defined $opt_V;
@@ -78,13 +79,31 @@
     fail_usage "Unknown parameter." if (@ARGV > 0);
 
     fail_usage "No '-a' flag specified." unless defined $opt_a;
-    fail_usage "No '-p' flag specified." unless defined $opt_p;
+
+	if (defined $opt_S) {
+		$pwd_script_out = `$opt_S`;
+		chomp($pwd_script_out);
+		if ($pwd_script_out) {
+			$opt_p = $pwd_script_out;
+		}
+	}
+
+    fail_usage "No '-p' or '-S' flag specified." unless defined $opt_p;
     fail_usage "No '-n' flag specified." unless defined $opt_n;
 
 } else {
     get_options_stdin();
 
     fail "failed: no IP address for the Vixel." unless defined $opt_a;
+
+	if (defined $opt_S) {
+		$pwd_script_out = `$opt_S`;
+		chomp($pwd_script_out);
+		if ($pwd_script_out) {
+			$opt_p = $pwd_script_out;
+		}
+	}
+
     fail "failed: no password provided." unless defined $opt_p;
     fail "failed: no port number specified." unless defined $opt_n;
 }
@@ -130,7 +149,7 @@
 
 ($text, $match) = $t->waitfor('/\>/');
 if ($text !~ /[Oo][Kk]/) {
-  fail "failed: error from switch\n";
+	fail "failed: error from switch\n";
 }
 
 $t->print("exit");
@@ -141,57 +160,57 @@
 
 sub get_options_stdin
 {
-    my $opt;
-    my $line = 0;
-
-    while( defined($in = <>) )
-    {   
-        $_ = $in;
-	chomp;
-        
-        # strip leading and trailing whitespace
-        s/^\s*//;
-        s/\s*$//;
-
-        # skip comments
-        next if /^#/;
-
-        $line+=1;
-        $opt=$_;
-        next unless $opt;
-
-        ($name,$val)=split /\s*=\s*/, $opt;
-
-        if ( $name eq "" ) {
-           print("parse error: illegal name in option $line\n");
-           exit 2;
-        } 
-
-        # DO NOTHING -- this field is used by fenced
-	elsif ($name eq "agent" ) { }
-
-	# FIXME -- depricated.  use "port" instead.
-	elsif ($name eq "fm" ) {
-            (my $dummy,$opt_n) = split /\s+/,$val;
-	    print STDERR "Depricated \"fm\" entry detected.  refer to man page.\n";
-        } 
+	my $opt;
+	my $line = 0;
 
-	elsif ($name eq "ipaddr" ) 
+	while( defined($in = <>) )
 	{
-            $opt_a = $val;
-        } 
+		$_ = $in;
+		chomp;
 
-	elsif ($name eq "name" ) { }
-
-        elsif ($name eq "passwd" ) 
-	{
-            $opt_p = $val;
-        } 
-
-        elsif ($name eq "port" ) 
-	{
-            $opt_n = $val;
-        } 
-    }
+		# strip leading and trailing whitespace
+		s/^\s*//;
+		s/\s*$//;
+
+		# skip comments
+		next if /^#/;
+
+		$line+=1;
+		$opt=$_;
+		next unless $opt;
+
+		($name,$val)=split /\s*=\s*/, $opt;
+
+		if ( $name eq "" ) {
+			print("parse error: illegal name in option $line\n");
+			exit 2;
+		} 
+
+		# DO NOTHING -- this field is used by fenced
+		elsif ($name eq "agent" ) { }
+
+		# FIXME -- depricated.  use "port" instead.
+		elsif ($name eq "fm" ) {
+			(my $dummy,$opt_n) = split /\s+/,$val;
+			print STDERR "Depricated \"fm\" entry detected. Refer to man page.\n";
+		} 
+		elsif ($name eq "ipaddr" ) 
+		{
+			$opt_a = $val;
+		} 
+		elsif ($name eq "name" ) { }
+		elsif ($name eq "passwd" ) 
+		{
+			$opt_p = $val;
+		}
+		elsif ($name eq "passwd_script" )
+		{
+			$opt_S = $val;
+		} 
+		elsif ($name eq "port" ) 
+		{
+			$opt_n = $val;
+		} 
+	}
 }
 
--- cluster/fence/agents/vmware/fence_vmware.pl	2005/09/01 18:25:42	1.1
+++ cluster/fence/agents/vmware/fence_vmware.pl	2007/06/27 15:38:18	1.1.2.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
@@ -21,7 +21,7 @@
 use VMware::VmPerl::VM;
 use VMware::VmPerl::Server;
 use VMware::VmPerl::ConnectParams;
-use vars qw( $opt_L $opt_v $opt_V $opt_h $opt_T $opt_n $opt_o $opt_p $opt_P $opt_l $opt_a $opt_q $vm_product $vm_platform $vm_build $vm_version_major $vm_version_minor $vm_version_revision );
+use vars qw( $opt_L $opt_v $opt_V $opt_h $opt_T $opt_n $opt_o $opt_p $opt_P $opt_S $opt_l $opt_a $opt_q $vm_product $vm_platform $vm_build $vm_version_major $vm_version_minor $vm_version_revision );
 
 # Get the program name from $0 and strip directory names
 $_=$0;
@@ -62,6 +62,7 @@
 	print "  -h               usage\n";
 	print "  -l <name>        Login name\n";
 	print "  -p <string>      Login password\n";
+	print "  -S <path>        Script to run to retrieve login password\n";
 	print "  -n <name>        Name of VM to change \n";
 	print "  -o <string>      Action: Reboot (default), Off or On\n";
 	print "  -q               quiet mode\n";
@@ -99,7 +100,7 @@
 sub version
 {
 	print "$pname $FENCE_RELEASE_NAME $BUILD_DATE\n";
-	print "$SISTINA_COPYRIGHT\n" if ( $SISTINA_COPYRIGHT );
+	print "$REDHAT_COPYRIGHT\n" if ( $REDHAT_COPYRIGHT );
 	exit 0;
 }
 
@@ -240,7 +241,11 @@
 		elsif ($name eq "passwd" ) 
 		{
 			$opt_p = $val;
-		} 
+		}
+		elsif ($name eq "passwd_script" )
+		{
+			$opt_S = $val;
+		}
 		elsif ($name eq "port" ) 
 		{
 			$opt_n = $val;
@@ -275,7 +280,7 @@
 ### MAIN #######################################################
 
 if (@ARGV > 0) {
-	getopts("a:hl:n:o:p:qTvVL") || fail_usage ;
+	getopts("a:hl:n:o:p:S:qTvVL") || fail_usage ;
 	
 	usage if defined $opt_h;
 	version if defined $opt_V;
@@ -285,9 +290,18 @@
 	fail_usage "No '-a' flag specified." unless defined $opt_a;
 	fail_usage "No '-n' flag specified." unless defined $opt_n or defined $opt_L;
 	fail_usage "No '-l' flag specified." unless defined $opt_l;
-	fail_usage "No '-p' flag specified." unless defined $opt_p;
-	fail_usage "Unrecognised action '$opt_o' for '-o' flag"
-	unless $opt_o =~ /^(Off|On|Reboot)$/i;
+
+	if (defined $opt_S) {
+		$pwd_script_out = `$opt_S`;
+		chomp($pwd_script_out);
+		if ($pwd_script_out) {
+			$opt_p = $pwd_script_out;
+		}
+	}
+
+	fail_usage "No '-p' or '-S' flag specified." unless defined $opt_p;
+	fail_usage "Unrecognized action '$opt_o' for '-o' flag"
+		unless $opt_o =~ /^(Off|On|Reboot)$/i;
 
 	($opt_a, $opt_P) = split(/:/, $opt_a);
 	fail_usage "No port number specified." unless defined $opt_P;
@@ -298,9 +312,18 @@
 	fail "failed: no IP address" unless defined $opt_a;
 	fail "failed: no vm name" unless defined $opt_n;
 	fail "failed: no login name" unless defined $opt_l;
+
+	if (defined $opt_S) {
+		$pwd_script_out = `$opt_S`;
+		chomp($pwd_script_out);
+		if ($pwd_script_out) {
+			$opt_p = $pwd_script_out;
+		}
+	}
+
 	fail "failed: no password" unless defined $opt_p;
-	fail "failed: unrecognised action: $opt_o"
-	unless $opt_o =~ /^(Off|On|Reboot)$/i;
+	fail "failed: unrecognized action: $opt_o"
+		unless $opt_o =~ /^(Off|On|Reboot)$/i;
 } 
 
 &login;
--- cluster/fence/agents/wti/fence_wti.pl	2007/01/31 20:20:48	1.5.2.1
+++ cluster/fence/agents/wti/fence_wti.pl	2007/06/27 15:38:19	1.5.2.2
@@ -43,6 +43,7 @@
     print "  -h               usage\n";
     print "  -n <num>         Physical plug number on NPS\n";
     print "  -p <string>      Password if NPS requires one\n";
+    print "  -S <path>        Script to run to retrieve login password\n";
     print "  -o <operation>   Operation to perform (on, off, reboot)\n";
     print "  -q               quiet mode\n";
     print "  -T               test reports state of plug (no power cycle)\n";
@@ -77,7 +78,7 @@
 
 $opt_o = "reboot";
 if (@ARGV > 0) {
-   getopts("a:hn:p:qTVo:") || fail_usage ;
+   getopts("a:hn:p:S:qTVo:") || fail_usage ;
 
    usage if defined $opt_h;
    version if defined $opt_V;
@@ -86,13 +87,31 @@
 
    fail_usage "No '-a' flag specified." unless defined $opt_a;
    fail_usage "No '-n' flag specified." unless defined $opt_n;
-   fail_usage "No '-p' flag specified." unless defined $opt_p;
+
+   if (defined $opt_S) {
+       $pwd_script_out = `$opt_S`;
+       chomp($pwd_script_out);
+       if ($pwd_script_out) {
+           $opt_p = $pwd_script_out;
+       }
+   }
+
+   fail_usage "No '-p' or '-S' flag specified." unless defined $opt_p;
 
 } else {
    get_options_stdin();
 
    fail "failed: no IP address" unless defined $opt_a;
    fail "failed: no plug number" unless defined $opt_n;
+
+   if (defined $opt_S) {
+       $pwd_script_out = `$opt_S`;
+       chomp($pwd_script_out);
+       if ($pwd_script_out) {
+           $opt_p = $pwd_script_out;
+       }
+   }
+
    fail "failed: no password" unless defined $opt_p;
 }
 
@@ -338,6 +357,10 @@
         {
             $opt_p = $val;
         }
+		elsif ($name eq "passwd_script" )
+		{
+			$opt_S = $val;
+		}
         elsif ($name eq "port" )
         {
             $opt_n = $val;
--- cluster/fence/agents/xcat/fence_xcat.pl	2006/08/16 19:18:44	1.2
+++ cluster/fence/agents/xcat/fence_xcat.pl	2007/06/27 15:38:19	1.2.2.1
@@ -4,6 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
+##  Copyright (C) 2004-2007 Red Hat, Inc.  All rights reserved.
 ##
 ###############################################################################
 ###############################################################################
--- cluster/fence/agents/xen/fence_xen.pl	2005/06/16 15:05:42	1.2
+++ cluster/fence/agents/xen/fence_xen.pl	2007/06/27 15:38:19	1.2.2.1
@@ -3,7 +3,7 @@
 ###############################################################################
 ###############################################################################
 ##
-##  Copyright (C) 2005 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2005-2007 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
@@ -35,9 +35,9 @@
 # "#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)";
+$FENCE_RELEASE_NAME="";
+$REDHAT_COPYRIGHT="";
+$BUILD_DATE="";
 #END_VERSION_GENERATION
 
 sub usage
@@ -83,7 +83,7 @@
 sub version
 {
 	print "$pname $FENCE_RELEASE_NAME $BUILD_DATE\n";
-	print "$SISTINA_COPYRIGHT\n" if ( $SISTINA_COPYRIGHT );
+	print "$REDHAT_COPYRIGHT\n" if ( $REDHAT_COPYRIGHT );
 	exit 0;
 }
 
--- cluster/fence/agents/zvm/fence_zvm.pl	2004/06/24 08:53:17	1.1
+++ cluster/fence/agents/zvm/fence_zvm.pl	2007/06/27 15:38:19	1.1.16.1
@@ -4,7 +4,7 @@
 ###############################################################################
 ##
 ##  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
-##  Copyright (C) 2004 Red Hat, Inc.  All rights reserved.
+##  Copyright (C) 2004-2007 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
@@ -45,7 +45,8 @@
     print "  -a <ip>          IP address or hostname of the physical s390\n";
     print "  -h               usage\n";
     print "  -u <string>      userid of the virtual machine to fence\n";
-    print "  -p <string>      Password\n"; 
+    print "  -p <string>      Password\n";
+    print "  -S <path>        Script to run to retrieve login password\n";
     print "  -q               quiet mode\n";
     print "  -r <devnum>      ipl device <devnum>\n";
     print "  -V               Version\n";
@@ -267,6 +268,10 @@
         {
             $opt_p = $val;
         }
+		elsif ($name eq "passwd_script" )
+		{
+			$opt_S = $val;
+		}
 	      elsif ($name eq "userid" )
         {
             $opt_u = $val;
@@ -281,14 +286,23 @@
 }
 
 if (@ARGV > 0){
-    getopts("a:hp:qr:u:V") || fail_usage;
+    getopts("a:hp:S:qr:u:V") || fail_usage;
     usage if defined $opt_h;
     version if defined $opt_V;
 
     fail_usage "Unkown parameter." if (@ARGV > 0);
 
     fail_usage "No '-a' flag specified." unless defined $opt_a;
-    fail_usage "No '-p' flag specified." unless defined $opt_p;
+
+    if (defined $opt_S) {
+        $pwd_script_out = `$opt_S`;
+        chomp($pwd_script_out);
+        if ($pwd_script_out) {
+            $opt_p = $pwd_script_out;
+        }
+    }
+
+    fail_usage "No '-p' or '-S' flag specified." unless defined $opt_p;
     fail_usage "No '-u' flag specified." unless defined $opt_u;
 
 } else {
@@ -296,6 +310,15 @@
 
     fail "no IP address" unless defined $opt_a;
     fail "no userid" unless defined $opt_u;
+
+    if (defined $opt_S) {
+        $pwd_script_out = `$opt_S`;
+        chomp($pwd_script_out);
+        if ($pwd_script_out) {
+            $opt_p = $pwd_script_out;
+        }
+    }
+
     fail "no password" unless defined $opt_p;
 }
 



             reply	other threads:[~2007-06-27 15:38 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-27 15:38 rmccabe [this message]
  -- strict thread matches above, loose matches on Subject: below --
2007-02-12 20:34 [Cluster-devel] cluster/fence/agents baytech/fence_baytech.pl rmccabe
2007-02-12 20:17 rmccabe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070627153822.25311.qmail@sourceware.org \
    --to=rmccabe@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.