UbuntuコンピュータにCollectdをインストールしました。 Python サーバーはデフォルトでインストールされます。すべてのシステム指標をブラウザにプッシュするには、Collectdを使用する必要があります。これを行うには、Pythonサーバーを実行する必要があります。ただし、実行しようとするとエラーが発生します。
助けてください。
以下は私のコードです
#!/usr/bin/env python
import CGIHTTPServer
import BaseHTTPServer
from optparse import OptionParser
class Handler(CGIHTTPServer.CGIHTTPRequestHandler):
cgi_directories = ["/cgi-bin"]
PORT = 8888
def main():
parser = OptionParser()
opts, args = parser.parse_args()
if args:
httpd = BaseHTTPServer.HTTPServer((args[0], int(args[1])), Handler)
print "Collectd-web server running at http://%s:%s/" % (args[0], args[1])
else:
httpd = BaseHTTPServer.HTTPServer(("127.0.0.1", PORT), Handler)
print "Collectd-web server running at http://%s:%s/" % ("0.0.0.0", PORT)
httpd.serve_forever()
if __name__ == "__main__":
main()
私がコマンドを実行するとpython runserver.py
私が得た結果は次のとおりです。
Traceback (most recent call last):
File "runserver.py", line 24, in <module>
main()
File "runserver.py", line 19, in main
httpd = BaseHTTPServer.HTTPServer(("127.0.0.1", PORT), Handler)
File "/usr/lib/python2.7/SocketServer.py", line 417, in __init__
self.server_bind()
File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bind
SocketServer.TCPServer.server_bind(self)
File "/usr/lib/python2.7/SocketServer.py", line 431, in server_bind
self.socket.bind(self.server_address)
File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
[1]+ Exit 127 runserver.py
答え1
errorで明らかですAddress already in use
。これは、指定されたインターフェース/ポートを受信する他のプログラムがすでに存在することを意味します。
ポート(8888)を受信する他のプログラムがないことを確認してください。次のことができます。
netstat -plnt | grep 8888
プロセスを停止します。
それ以外の場合は、ポート番号を変更してください。また、1024 未満のポート番号を使用するには、root 権限が必要です。 1024より大きいポートの場合は必要ありません。