我正在使用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>
答案 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)