如何与正在运行的python脚本进行交互

时间:2018-08-07 09:43:25

标签: python-2.6 interactive

作为一个开始,我得到了一个基本脚本,该脚本读取本地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。

0 个答案:

没有答案