From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1877 invoked by alias); 11 Feb 2009 14:21:51 -0000 Received: (qmail 1869 invoked by alias); 11 Feb 2009 14:21:51 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion.fedora.phx.redhat.com Subject: fence-agents: master - fence_wti: #481664 - fence_wti is unable to connect to (password-less) fencing device To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: fence-agents.git X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: ba86139894ba411fe9b359d3449e99344fa09862 X-Git-Newrev: 0c86ec57d983df1cbeaba12e48730b54f4cbff8a From: =?utf-8?q?Marek_Gr=C3=A1c?= Message-Id: <20090211142123.015FA120346@lists.fedorahosted.org> Date: Wed, 11 Feb 2009 14:21:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q1/txt/msg00427.txt.bz2 Gitweb: http://git.fedorahosted.org/git/fence-agents.git?p=fence-agents.git;a=commitdiff;h=0c86ec57d983df1cbeaba12e48730b54f4cbff8a Commit: 0c86ec57d983df1cbeaba12e48730b54f4cbff8a Parent: ba86139894ba411fe9b359d3449e99344fa09862 Author: Marek 'marx' Grac AuthorDate: Wed Feb 11 15:16:09 2009 +0100 Committer: Marek 'marx' Grac CommitterDate: Wed Feb 11 15:16:09 2009 +0100 fence_wti: #481664 - fence_wti is unable to connect to (password-less) fencing device Login mechanism was completely rewritten so now we support no-loginname, no-password and possibly any other configuration. --- fence/agents/wti/fence_wti.py | 22 +++++++++++++++------- 1 files changed, 15 insertions(+), 7 deletions(-) diff --git a/fence/agents/wti/fence_wti.py b/fence/agents/wti/fence_wti.py index 29aace7..9f5ec8f 100644 --- a/fence/agents/wti/fence_wti.py +++ b/fence/agents/wti/fence_wti.py @@ -75,7 +75,8 @@ def set_power_status(conn, options): def main(): device_opt = [ "help", "version", "agent", "quiet", "verbose", "debug", "action", "ipaddr", "login", "passwd", "passwd_script", - "cmd_prompt", "secure", "port", "no_login", "test" ] + "cmd_prompt", "secure", "port", "no_login", "no_password", + "test" ] options = check_input(device_opt, process_input(device_opt)) @@ -88,15 +89,22 @@ def main(): ## ## Operate the fencing device ## - ## @note: if there is not a login name then we assume that it is WTI-IPS - ## where no login name is used + ## @note: if it possible that this device does not need either login, password or both of them ##### - if (0 == options.has_key("-l")): + if 0 == options.has_key("-x"): try: conn = fspawn ('telnet ' + options["-a"]) - conn.log_expect(options, "Password: ", SHELL_TIMEOUT) - conn.send(options["-p"]+"\r\n") - conn.log_expect(options, options["-c"], SHELL_TIMEOUT) + re_login = re.compile("(login: )|(Login Name: )|(username: )|(User Name :)", re.IGNORECASE) + re_prompt = re.compile("|".join(map (lambda x: "(" + x + ")", options["-c"])), re.IGNORECASE) + + result = conn.log_expect(options, [ re_login, "Password: ", re_prompt ], SHELL_TIMEOUT) + if result == 0: + conn.send(options["-l"]+"\r\n") + result = conn.log_expect(options, [ re_login, "Password: ", re_prompt ], SHELL_TIMEOUT) + + if result == 1: + conn.send(options["-p"]+"\r\n") + conn.log_expect(options, options["-c"], SHELL_TIMEOUT) except pexpect.EOF: fail(EC_LOGIN_DENIED) except pexpect.TIMEOUT: