作为一个开始,我得到了一个基本脚本,该脚本读取本地unix syslog(/ var / log / messages)
我想构建一个可以在本地打开套接字(19999)并允许发送/处理管理命令的工具。
作为我基本上可以构建的东西,我想在启动脚本时执行以下操作: -在本地开放端口19999 -开始读取存储“行”作为其已处理的最后一行的系统日志。 -看到“ printline”的管理命令时,打印“ line”的最后一个已知变量
我认为我已经完成了一些基础工作(下面的脚本),在其中打开了相关端口,并打印了从另一个客户端工具发送给它的命令,但是它从未开始读取系统日志。
#!/usr/bin/python
import socket
import subprocess
import sys
import time
from threading import Thread
MAX_LENGTH = 4096
def handle(clientsocket):
while 1:
buf = clientsocket.recv(MAX_LENGTH)
if buf == '': return #client terminated connection
print buf
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
PORT = 19999
HOST = '127.0.0.1'
serversocket.bind((HOST, PORT))
serversocket.listen(10)
while 1:
#accept connections from outside
(clientsocket, address) = serversocket.accept()
ct = Thread(target=handle, args=(clientsocket,))
ct.start()
def follow(thefile):
thefile.seek(0,2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
if __name__ == '__main__':
logfile = open("/capture/log/uifitz/messages","r")
loglines = follow(logfile)
for line in loglines:
print line,
任何帮助将不胜感激。顺便说一下,Python 2.6。