好的,我正在努力获取任何超时,连接失败,密码被拒绝...以记录日志。我在我的控制台中收到TIMEOUT
的警告,但没有其他工作正在进行,我现在正在获得TypeError: 'int' object is not callable
。我知道我接近破解这个,但现在我的车轮旋转。任何帮助是极大的赞赏。谢谢!
CODE
import pexpect
import pxssh
import getpass
import sys
import os
import re
import traceback
from pyparsing import *
import logging
lgr = logging.getLogger('error_config')
lgr.setLevel(logging.DEBUG)
ec = logging.FileHandler('error_config.log')
ec.setLevel(logging.WARNING)
frmt = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ec.setFormatter(frmt)
lgr.addHandler(ec)
def die(s, errstr):
logging.warning(errstr)
logging.warning(s.before, s.after)
s.terminate()
sys.exit(1)
def main():
s = pxssh.pxssh(timeout=60, maxread=2000000)
s.force_password = True
hostname = raw_input('Hostname: ')
username = raw_input('Username: ')
password = getpass.getpass('password: ')
s.PROMPT = 'SSH> '
s.login(hostname, username, password, auto_prompt_reset=False)
logging.info("test")
logging.info("Logged in")
i = s.expect([pexpect.TIMEOUT, 'Permission denied', pexpect.EOF])
if i == 0:
die(s, 'Timed out. SSH log:')
elif i == 1:
die(s, 'Incorrect password. SSH log:')
elif i == 2:
print s.before
STACK TRACE
Traceback (most recent call last):
File "logging/__init__.py", line 731, in emit
File "logging/__init__.py", line 617, in format
File "logging/__init__.py", line 405, in format
File "logging/__init__.py", line 276, in getMessage
TypeError: not all arguments converted during string formatting
1
Traceback (most recent call last):
File "error_config.py", line 91, in ?
main()
File "error_config.py", line 43, in main
die(s, 'Time out. SSH log:')
File "error_config.py", line 27, in die
sys.exit(1)
SystemExit: 1
答案 0 :(得分:1)
logging.WARNING
是int
所以你不能这样做:
logging.WARNING(errstr)
logging.WARNING(s.before, s.after)
我认为您打算使用logging.warning
代替:
logging.warning(errstr)
logging.warning(s.before, s.after)
编辑后,似乎exit
被覆盖,可能是from pyparsing import *
。
尝试添加import sys
并使用sys.exit
exit
内容