gpt4 book ai didi

python - 按日期和时间从目标机器过滤/var/log/messages 文件数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:36 24 4
gpt4 key购买 nike

我正在使用下面的 python 脚本按日期和时间从目标机器的/var/log/messages 文件中过滤数据。但是出现语法错误

我正在使用 python 版本 2.7 & 将无法升级 python 版本

#!/usr/bin/python

import cgi, cgitb
import os

from subprocess import PIPE, Popen


def cmdline(command):
process = Popen(
args=command,
stdout=PIPE,
shell=True
)
return process.communicate()[0]

out4=cmdline('sshpass -p redhat ssh -o ConnectTimeout=6 -o NumberOfPasswordPrompts=2 -o StrictHostKeyChecking=no -tt ricky@192.168.0.50 "echo redhat | sudo -S zless /var/log/messages* | grep \'^Sep 9\' | awk \' \$3 > "09:30" && \$3 < "23:50" \' "')

print(out4)

执行此脚本时得到以下输出

Connection to 192.168.0.50 closed.
awk: $3 > 09:30 && $3 < 23:50
awk: ^ syntax error
awk: $3 > 09:30 && $3 < 23:50
awk: ^ syntax error
[sudo] password for ricky:

谁能帮我改一下

最佳答案

由于多个级别的特殊字符处理,您正在一个又一个地运行的多个 shell 中陷入引用 hell 。

你可以通过避免使用 shell=True 来减少你的厄运,这样它就可以少一个 shell 来逃避:

p = subprocess.run([
'sshpass', '-p', 'redhat'
'ssh',
'-o', 'ConnectTimeout=6',
'-o', 'NumberOfPasswordPrompts=2',
'-o', 'StrictHostKeyChecking=no',
'-tt', 'ricky@192.168.0.50'
"""sudo -S zless /var/log/messages* | grep '^Sep 9' | awk ' \$3 > "09:30" && \$3 < "23:50" '"""
], input='redhat\n', stdout=subprocess.PIPE)
out4 = p.stdout

关于python - 按日期和时间从目标机器过滤/var/log/messages 文件数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52486851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com