У меня есть файл журнала на удаленном сервере 198.168.111.222 по адресу /a/logs/file.log, где каждая строка имеет вид, показанный ниже -
1538966781.794|7f5059db5940| 31aaa010| core-0: load 0% perf 1%/0.90 count 3600000
1538966791.798|7f5059db5940| 31aaa010| core-0: load 0% perf 2%/0.90 count 4600000
1538966801.803|7f5059db5940| 31aaa010| core-0: load 0% perf 3%/0.90 count 5600000
1538966811.809|7f5059db5940| 31aaa010| core-0: load 0% perf 4%/0.90 count 6600000
Каждая строка начинается сМетка времени UnixЯ заинтересован в получении всех таких строк, которые содержат строку «perf» и находятся между заданными параметрами startTime и endTime.В приведенном выше примере он должен вернуть -
1538966791.798|7f5059db5940| 31aaa010| core-0: load 0% perf 2%/0.90 count 4600000
1538966801.803|7f5059db5940| 31aaa010| core-0: load 0% perf 3%/0.90 count 5600000
Это то, что я пробовал -
import subprocess
ip = '198.168.111.222'
startTime = '1538966781.794'
endTime = '1538966811.809'
linetype = 'perf'
cmd = '''ssh -oHostKeyAlgorithms=+ssh-dss root@'''+ ip + ''' \'awk '$0 ~ "''' +
linetype + '''" && $0 > "''' + startTime + '''" && $0 < "''' + endTime + '''"'
/a/logs/file.log\''''
print(cmd)
loglines = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
output = loglines.stdout.read().decode('utf-8').strip()
print(output)
Вывод, который я получаю - -
ssh -oHostKeyAlgorithms=+ssh-dss root@198.168.111.222 'awk '$0 ~ "perf" && $0 >
"1538966781.794" && $0 < "1538966811.809"' /a/logs/file.log'
awk: fatal: cannot open file `/Users/ira' for reading (No such file or directory)
Я пробовал разные комбинации «,», «» и «», но не повезло.Пожалуйста, руководство.Спасибо!