添加try块并写入两个日志文件

时间:2018-02-19 02:12:04

标签: python pxssh

我有一个文本文件,它是一个名为 solaris_h.txt 的服务器列表。此列表中的某些服务器,我无法进行身份验证,可能是因为我没有帐户或密码不正确。当列表上的特定服务器上的身份验证失败时,脚本将中止。所以,有人建议tryexcept阻止。我希望脚本完成 solaris_h.txt 中的服务器列表,并将成功登录写入日志文件,并将无法进行身份验证的服务器写入另一个日志文件。添加try块后,在执行脚本时,它会立即退出而不会出现错误。如何让我的脚本将一个日志文件写入成功的登录名,将另一个日志文件写入不成功的登录名?

#!/usr/bin/python

import pxssh
import sys

log = open("myprog.log", "a")
sys.stdout = log

s = pxssh.pxssh(timeout=30, maxread=2000000)
s.SSH_OPTS += "-o StrictHostKeyChecking=no"
s.SSH_OPTS += "-o UserKnownHostsFile=/dev/null"
s.SSH_OPTS += "PubkeyAuthentication=no"

f=open('solaris_h.txt','r')
for line in f:

try:
    s.login(line,'xxxx','xxxxxx')
    z = s.sendline('uname -a')
    s.prompt()
    y = s.before
    print("%s %s" % (line, y))
    s.logout()
except pxssh.ExceptionPxssh:
    pass

验证失败时出现错误。

Traceback (most recent call last):
File "./z.py", line 17, in <module>
 s.login(line,'username','password')
File "/usr/lib/python2.7/site-packages/pxssh.py", line 226, in login
  raise ExceptionPxssh ('password refused')
pxssh.ExceptionPxssh: password refused

2 个答案:

答案 0 :(得分:0)

如果您想忽略登录失败的错误,可以在登录时执行try/except阻止,例如:

try:
    s.login(line, 'username', 'password')
    z = s.sendline('uname -a')
    s.prompt()
    y = s.before
    print("%s %s" % (line, y))

    s.logout()
except pxssh.ExceptionPxssh:
    pass

答案 1 :(得分:0)

仅使用try except blocks作为身份验证代码。因此,如果有任何错误,它们将被捕获,循环将继续使用下一个服务器名称。