Python程序通过HTTP提供命令输出

时间:2012-10-17 21:41:22

标签: python

我想知道是否有人可以帮助我增强一个运行各种应用程序状态命令的python脚本:

/app/app1/bin/status.sh
/app/app2/bin/status.sh

脚本中的check()函数会创建一个哈希:

results = check_function()

results['app1']['status'] = 'running'
results['app2']['status'] = 'stopped'

我目前的解决方案仅限终端,并且display_results()函数使用适当的转义序列将环境状态打印到终端,以对其进行着色:

display_results(results)

我想“启用”该命令,以便它可以通过网络报告结果字典。

我想我可以让它在套接字上侦听并通过字符串模板编写HTML,或者让BaseHTTPServer进行监听更好,但是如何让它为命令的输出而不是索引提供服务文件系统上的.html文件?

这不是一个生产应用程序,它被用作开发人员对应用程序状态进行批量检查的工具。

终端版本适用于python 2.4(Centos 5.8),但没有什么可以阻止我使用python 2.7

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

不编写整个代码,为什么不使用这样的东西:

import BaseHTTPServer

class MyHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
        def do_GET(self):
                self.send_response(200)
                self.send_header("Content-type", "text/html")
                self.end_headers()
                self.wfile.write("<html><body>You accessed path: {}</body></html>".format(self.path))

BaseHTTPServer.HTTPServer(('', 80), MyHTTPRequestHandler).serve_forever()

MyHTTPRequestHandler代码添加到调用某些脚本或使用self.path作为参数的任何内容并将结果添加到格式化页面时,没有问题。对于如此简单的任务,电池的问题在哪里?此外,subprocess模块可能有所帮助,尤其是subprocess.Popen(["echo", "test"]).communicate()