Заменить команды bash на python
Хочу заменить output = subprocess.check_output("tail -n1 /var/log/syslog | grep usb | grep Bad | awk '{ print $2 }' | tr '\n' ' ' | cut -c 1", shell=True).decode("utf-8") на python.
Сейчас скрипт выглядит так:
#!/usr/bin/python3
import subprocess, time
from slack_sdk.webhook import WebhookClient
output = subprocess.check_output("tail -n1 /var/log/syslog | grep usb | grep Bad | awk '{ print $2 }' | tr '\n' ' ' | cut -c 1", shell=True).decode("utf-8")
if output:
print("Bad :-(")
exit(0)
Это возможно?
Ответы (1 шт):
Автор решения: Yan Wolf
→ Ссылка
Я попробовал воспроизвести идею по другому:
f = open('syslog.txt')
p = 0
word = 'Bad usb'
while True:
f.seek(p)
latest_data = f.read()
p = f.tell()
if latest_data:
print(latest_data)
print(str(p).center(10).center(80, '='))
if word in latest_data:
output = word
if output:
print("Bad :-(")
Программка постоянно считывает лог, в реальном времени как говориться. Условия поиска слова, вы можете подкорректировать сами.
Если все же нужен ручной запуск, чтоб программа останавливалась когда не обнаружит "Bad Usb" , посмотрите этот код:
f = open('syslog.txt')
p = 0
word = 'Bad usb'
while True:
f.seek(p)
latest_data = f.read()
p = f.tell()
if latest_data:
print(latest_data)
print(str(p).center(10).center(80, '='))
if word in latest_data:
output = word
if output:
print("Bad :-(")
else:
print("Bad usb не обнаружен. Завершение программы")
f.close() # Не забывайте закрывать файл...
exit(0)