Код: Выделить всё
import sys
try:
data = ""
while True:
data += sys.stdin.read(1)
if data.endswith("\n"):
print(f"Py Readout: {data}")
data = ""
except Exception as e:
print("Exception caught")
1. Выполнение базового хвоста сверху работает и выводит на стандартный вывод.
2- давайте возьмем это и перенесем в Python:
Код: Выделить всё
busybox tail -F -n 0 MyLogs/*.txt | python3 test.py
В конце концов я сделаю хвост с -Fq, чтобы он не выгружал заголовок файла. информацию, когда я смогу подтвердить, что это работает правильно.
Я думал, что при появлении хвоста он будет выводиться на стандартный вывод, а затем Python продолжит его подхватывать. Должен ли я использовать это, делая что-то еще?
Другой вариант, который я думал, — заставить Python прослушивать порт, а затем инициализировать функционал Tail и вывести эту информацию в прослушиваемый порт.
Я знаю, что существуют приложения, которые обрабатывают подобные вещи, но я пытаюсь объединить всю обработку хвостатых журналов в Python. Со временем я заменю print методом, который будет обрабатывать строку и делать с ней то, что нужно.
Способ, который работает, но не уверен, что он мне понравится:
Создайте и запустите следующий скрипт Python:
Код: Выделить всё
import socket
def run_server():
# create a socket object
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_ip = "127.0.0.1"
port = 5555
# bind the socket to a specific address and port
server.bind((server_ip, port))
# listen for incoming connections
server.listen(0)
print(f"Listening on {server_ip}:{port}")
# accept incoming connections
client_socket, client_address = server.accept()
print(f"Accepted connection from {client_address[0]}:{client_address[1]}")
# receive data from the client
while True:
request = client_socket.recv(1024).decode("utf-16")
print(f"Raw: {request}")
#request = request.decode("utf-8") # convert bytes to string
# if we receive "close" from the client, then we break
# out of the loop and close the conneciton
if request.lower() == "close":
# send response to the client which acknowledges that the
# connection should be closed and break out of the loop
client_socket.send("closed".encode("utf-8"))
break
print(f"Received: {request}")
response = "accepted".encode("utf-8") # convert string to bytes
# convert and send accept response to the client
client_socket.send(response)
# close connection socket with the client
client_socket.close()
print("Connection to client closed")
# close server socket
server.close()
run_server()
Код: Выделить всё
busybox tail -Fq -n 0 Chatlogs/*.txt | busybox nc 127.0.0.1 5555Подробнее здесь: https://stackoverflow.com/questions/790 ... nto-python
Мобильная версия