Заменить команды 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)
→ Ссылка