python - 使用 paramiko exec 命令获取日志文件内容
问题描述
鉴于:
import os
import sys
import paramiko
from os.path import expanduser
import json
def getToken(hostname):
home = expanduser("~")
print(home)
command = """python getLog.py 834214214"""
conf = paramiko.SSHConfig()
# print(os.path.expanduser(home+'/.ssh/config'))
conf.parse(open(home + '/.ssh/config'))
host = conf.lookup(hostname)
client = paramiko.SSHClient()
client.load_system_host_keys()
print(host)
# client.set_missing_host_key_policy('AutoAddPolicy')
client.connect(
host['hostname'], username=host['user'],
key_filename=host['identityfile'],
banner_timeout=30, auth_timeout=10,
sock=paramiko.ProxyCommand(host.get('proxycommand'))
)
print("dupa conectare")
stdin, stdout, stderr = client.exec_command(command)
print('exec comanda')
stdin.write('Yes\n')
paramiko.util.log_to_file("paramiko.log")
print('logged paramiko')
r_stdout = stdout.read().decode("utf-8").rstrip()
print('got STDOUT')
client.close()
# print(r_stdout)
with open("log.txt", 'w') as file:
file.write(str(r_stdout))
print('wrote 2 file')
return r_stdout
if __name__ == "__main__":
getToken('dex2')
getLog.py 内容:
import os
import subprocess
import sys
def getLog(identifier):
import sys
#identifier = sys.argv[1]
os.chdir('/users/gen/dexpwrk1/DIGITAL/logs/')
fileName = subprocess.check_output("grep -il '{}' *".format(identifier), shell=True)
fileName = fileName.split(" ")[-1]
f = open(fileName.replace('\n', ''), "r")
print f.read()
return str(f.read())
#if __name__ == '__main__':
getLog(sys.argv[1])
我想要完成的是通过隧道连接到 linux 机器,使用 paramiko 并获取完整的日志文件,这可能非常大,上面的代码示例有效,但速度非常慢。
这段代码耗时最长:
r_stdout = stdout.read().decode("utf-8").rstrip()
我将在休息服务中使用它,以开始执行顺便说一句,就像 fyi
解决方案
推荐阅读
- python - Beam 支持融合模式注册表和 avro 消息
- mysql - 使用mysql将纪元时间转换为gmt
- paypal - 离线支付网关提供商
- tensorflow - Tensorflow Keras 输出层形状奇怪的错误
- python - Remove rows based on a Pandas groupby() result
- c# - 通过微服务创建 Unity Streamingassets
- php - 是否有一个函数或钩子可以用来跟踪 WordPress 中的简单插件更改?
- css - 交互式图像 - 反应
- swift - 如何创建一个可以删除 Swift 中所有 UserDefaults 数据的函数?
- java - 房间 (android) 中的数据访问对象类不起作用