编写Python守护进程来管理多个远程尾部?

编写Python守护进程来管理多个远程尾部?,python,daemon,tail,Python,Daemon,Tail,我正在使用Python和Paramiko在远程服务器上的一大堆日志文件上运行tail-f,这是在前面一个线程的帮助下实现的: 我的最终脚本如下所示: #!/usr/bin/env python2 import paramiko import select import random tail_id = random.randint(0,500) username = 'victorhooi' client = paramiko.SSHClient() client.load_system_

我正在使用Python和Paramiko在远程服务器上的一大堆日志文件上运行
tail-f
,这是在前面一个线程的帮助下实现的:

我的最终脚本如下所示:

#!/usr/bin/env python2
import paramiko
import select
import random

tail_id = random.randint(0,500)
username = 'victorhooi'

client = paramiko.SSHClient()
client.load_system_host_keys()
client.connect('someserver.com', username='victorhooi', password='somepassword')
transport = client.get_transport()
#transport.set_keepalive(1)
channel = transport.open_session()

channel.exec_command("tail -%df /home/victorhooi/macbeth.txt" % tail_id)
while True:
    try:
        rl, wl, xl = select.select([channel],[],[],0.0)
        if len(rl) > 0:
            # Must be stdout
            print channel.recv(1024).strip()
    except KeyboardInterrupt:
        print("Caught control-C")
        client.get_transport().open_session().exec_command("kill -9 `ps -fu %s | grep 'tail -%df /home/victorhooi/macbeth.txt' | grep -v grep | awk '{print $2}'`" % (username, tail_id))
        #channel.close()
        #transport.close()
        client.close()
        exit(0)
我现在需要扩展它来处理背景,管理多个尾部,然后根据需要删除特定的尾部

理想情况下,我会有一个Python脚本,我可以启动它并将其作为背景(或者daemonize?Python守护进程?)。然后,这个过程可以读取一个配置文件,并启动单独的paramiko调用来跟踪每个远程日志文件

我还可以运行一个控制脚本,列出正在运行的远程尾部,杀死特定的尾部,或者杀死所有尾部,或者停止/重新启动守护进程

解决这个问题的好办法是什么?我应该使用线程或多处理,还是其他方法来实现每个Paramiko调用?是否有任何现有的脚本/程序可供我参考,以获取如何执行此操作的示例

让管理脚本与每个进程/线程通信的好方法是什么

干杯, 维克多

检查包裹