asyncssh模块-如何将调试消息记录到文件中?

时间:2019-03-27 21:25:30

标签: python-3.x

我正在使用assyncssh模块与Linux服务器建立一些简单的ssh连接,我想将日志从assycssh重定向到文件中。

我阅读了一些有关使用python中的日志记录模块的操作方法的教程,并且看到assyncssh正在使用此模块的适配器。我写了一个简单的应用程序,但无法将任何消息放入日志文件。

import asyncio, asyncssh, sys, os, logging

# create logger 
logger = logging.getLogger('assyncssh')
# create file handler 
fh = logging.FileHandler('exec.log')
# add the handlers to the logger
logger.addHandler(fh)

#Connect logger
asyncssh.logging._SSHLogger(parent=logger)
# set logging level and debug level
asyncssh.logging.set_log_level(2)
asyncssh.logging.set_debug_level(3)

# run a connection and some command
async def run_client():
    async with asyncssh.connect('x.x.x.x', username='a', password='b.', known_hosts=None) as conn:
        await conn.run('ls -l', input='1\n', stdout='tmp/stdout')

try:
    asyncio.get_event_loop().run_until_complete(run_client())
except (OSError, asyncssh.Error) as exc:
    sys.exit('SSH connection failed: ' + str(exc))

我想在这里实现的是从建立连接到文件中获取所有调试信息-任何想法我在这里做错了吗?还是我想念什么?

Asyncssh模块提供了基于python日志记录的日志记录适配器:asyncssh.readthedocs.io/en/latest/_modules/asyncssh/…,看来我没有正确使用它,以便将模块调试消息重定向到文件中。 / p>

1 个答案:

答案 0 :(得分:0)

收集结果的部分丢失。

不完整:await conn.run('ls -l', input='1\n', stdout='tmp/stdout')

应使用此代码:

result = await conn.run('ls -l', input='1\n', stdout='tmp/stdout')

然后将日志结果写入工作文件:

with open('workfile') as f:
    f.write(result)