我有一个文本文件,它是一个名为 solaris_h.txt 的服务器列表。此列表中的某些服务器,我无法进行身份验证,可能是因为我没有帐户或密码不正确。当列表上的特定服务器上的身份验证失败时,脚本将中止。所以,有人建议try
和except
阻止。我希望脚本完成 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
答案 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作为身份验证代码。因此,如果有任何错误,它们将被捕获,循环将继续使用下一个服务器名称。