私はこれを行うことができるツールを見つけることができませんでしたので、このドキュメントの範囲を超えてtodd
という名前が付けられました。私はまだ存在するものをむしろ使っているので、これは私の理想的な解決策ではありません。
#!/usr/bin/env python
from socketserver import TCPServer
from http.server import BaseHTTPRequestHandler
import subprocess as sp
from sys import *
class ToddHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
# Do not start the command until after a connection has been made.
p = sp.Popen(argv[1:], stdout=sp.PIPE)
while True:
data = p.stdout.read(1024)
if len(data) == 0:
break
try:
self.wfile.write(data)
except BrokenPipeError:
break
except ConnectionResetError:
break
p.stdout.close()
p.wait() # Kill the zombie.
if len(argv) == 1:
stderr.write('usage: todd command [arg1 arg2 ...]\n')
# Create the server.
server = TCPServer(('', 10000), ToddHandler)
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()