[LINUX] Python-Skript, das den Status des Servers über den Browser überprüfen kann

Erläuterung

Überwachen Sie den Status des Servers über den Browser. Ich habe es mit einer kleinen Verbesserung gemacht und mich auf das Einführungsbuch über Python bezogen. Es ist keine große Sache, aber ich habe es so viel gemacht, dass ich es behalten werde.

Bildschirm

Bei der Ausführung auf dem Server wird Port 8000 überwacht. Beim Öffnen in einem Browser wird ein Menü angezeigt.

無題.png

Klicken Sie auf den Befehl, um das Ergebnis im Browser anzuzeigen.

無題2.png

Quellcode

# coding: UTF-8

import BaseHTTPServer, shutil, os
from cStringIO import StringIO

class  MyHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):

HTTP-Pfad und Befehlszeilenbefehl des bereitgestellten Dienstes

    cmds = { '/free': 'free',
            '/cpuinfo' : 'cat /proc/cpuinfo',
            '/netstat' : 'netstat -anp',
            '/netstat-nlt' : 'netstat -nlt',
            '/uptime' : 'uptime',
            '/vmstat' : 'vmstat',
            '/df' : 'df -h',
            '/sar' : 'sar',
            '/hostname' : 'hostname',
            '/date' : 'date',
            '/ps' : 'ps aux',
            '/iostat' : 'iostat',
            '/pstree' : 'pstree',
            '/ifconfig' : 'ifconfig',
            '/who' : 'who'}

    def do_GET(self):

#Service to GET Anfrage

Rufen Sie die head-Methode auf, um die Antwort und den Inhaltstyp anzugeben.

        f = self.send_head()

#Wenn das Dateiobjekt zurückgegeben wird, besteht die Antwortprüfung und 200 ist in Ordnung. Erstellen Sie also den Body.

Diesmal ist es GET, verwenden Sie also nicht f oben und überschreiben Sie es wie folgt.

        if f:
            f = StringIO()

Holen Sie sich den Computernamen

            machine = os.popen("hostname").readlines()[0]

/ Dann erstelle einfach einen Index und kehre zurück

            if self.path == "/":
                heading = "Select a command to run on %s" % (machine)
                body = self.getMenu()

Wenn der Befehl # angegeben wird, wird der Befehl tatsächlich ausgeführt und zurückgegeben. else: heading = "Execution of ``%s'' on %s" % ( self.cmds[self.path], machine ) cmd = self.cmds[self.path] body = 'Main Menu

%s
\n' % os.popen(cmd).read()

            f.write("<html><head><title>%s</title></head>\n" % (heading) )
            f.write("<body><h1>%s</h1>\n" % (heading))
            f.write(body)
            f.write("</body></html>\n")
            f.seek(0)
            self.copyfile(f, self.wfile)
            f.close()
        return f

    def do_HEAD(self):

HEAD Request Service

        f = self.send_head()
        if f:
            f.close()

    def send_head(self):
        path = self.path
        if not path in ["/"] + self.cmds.keys():
            head = 'Command "%s" not found. Try one of these:<ul>' % path
            msg = head + self.getMenu()
            self.send_error(404, msg)
            return None
        self.send_response(200)
        self.send_header("Content-type", "text/html; charset=UTF-8")
        self.end_headers()
        f = StringIO()
        f.write("A test %s\n" % self.path)
        f.seek(0)
        return f

    def getMenu(self):
        keys = self.cmds.keys()
        keys.sort()
        msg = []
        for k in keys:
            msg.append('<li><a href="%s">%s => %s</a></li>' % (k,k, self.cmds[k]))

        msg.append("</ul>")
        return "\n".join(msg)

    def copyfile(self, source, outputfile):
        shutil.copyfileobj(source, outputfile)

def main(HandlerClass = MyHTTPRequestHandler, ServerClass = BaseHTTPServer.HTTPServer):
    BaseHTTPServer.test(HandlerClass, ServerClass)

if __name__ == '__main__':
    main()

Recommended Posts

Python-Skript, das den Status des Servers über den Browser überprüfen kann
Python-Skript, das den Inhalt zweier Verzeichnisse vergleicht
Lern-Roadmap, mit der Sie Services mit Python von Grund auf neu entwickeln und veröffentlichen können
Python-Skript, das von der Google-Suche zum sofortigen Speichern der Suchergebnisseite führt
So überprüfen Sie die Speichergröße einer Variablen in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
Ein Skript, das 0, 1 an die erste Python-Primzahl zurückgibt
[Python] Ein Hinweis, dass ich das Verhalten von matplotlib.pyplot zu verstehen begann
[Python] Ein Programm, das den Inhalt der Liste nach links dreht
[Python] Ein Programm, das die Anzahl der gepaarten Socken berechnet
Ein Hinweis, mit dem Sie die Python-Umgebung von Pineapple mit pyenv ändern können
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Aus einem Buch, das die Denkweise des Programmierers interessanterweise gelernt hat (Python)
Richten Sie mit Python einen Dummy-SMTP-Server ein und überprüfen Sie den Sendevorgang von Action Mailer
Einführung von "Scikit-Mobility", einer Bibliothek, mit der Sie menschliche Flussdaten mit Python einfach analysieren können (Teil 1)
Senden Sie eine Nachricht von Slack an einen Python-Server
So öffnen Sie einen Webbrowser über Python
"Python Kit", das Python-Skripte von Swift aufruft
Überprüfen Sie den Status der Daten mit pandas_profiling
Erstellen Sie ein Plugin, mit dem Sie in Python nach Registerkarten für Sublime Text 3 suchen können
Python-Skript zum Abrufen einer Liste von Eingabebeispielen für den AtCoder-Wettbewerb
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
Ich habe ein Skript erstellt, um zu überprüfen, ob an der angegebenen Position der JSON-Datei in Python Englisch eingegeben wird.
Einfache Möglichkeit, die Quelle der Python-Module zu überprüfen
Die Geschichte des Starts eines Minecraft-Servers von Discord
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
[Python] Ein Programm, das die Anzahl der Täler zählt
Vorlage des Python-Skripts zum Lesen des Inhalts der Datei
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
[Python] Ein Programm, das die Positionen von Kängurus vergleicht.
Python Hinweis: Das Rätsel, einer Variablen eine Variable zuzuweisen
Python-Skript, das das Azure-Status-RSS crawlt und an Hipchat sendet
Erstellen Sie ein Python-Skript, um zu überprüfen, ob der Link unter der angegebenen URL gültig ist
[Einführung in Python] Grundlegende Verwendung der Bibliothek scipy, die Sie unbedingt kennen müssen
Ein Skript, das Stresstests entsprechend der Anzahl der CPU-Kerne durchführen kann
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
So finden Sie das erste Element, das den Kriterien in der Python-Liste entspricht
Einführung in das Buch "Erstellen einer profitablen KI mit Python", mit dem Sie in kürzester Zeit maschinelles Lernen erlernen können
Jedi-vim-Verknüpfungsbefehl, mit dem Sie auf die Definitionsquelle und das Definitionsziel in Python verweisen können
Eine Bibliothek, die Leben und Tod anderer Maschinen durch Ping von Python aus überwacht
So starten Sie einen einfachen WEB-Server, der CGI von PHP und Python ausführen kann
Ein Python-Skript, das ein GTK-Bild (Clipboard) in einer Datei speichert.
So führen Sie ein Python-Programm in einem Shell-Skript aus
Anders als der Importtyp von Python. Bedeutung von aus A Import B.
Starten Sie einen einfachen WEB-Server, der den Header überprüfen kann
Überprüfen Sie den Speicherstatus des Servers mit dem Befehl Linux free
Ich möchte viele Prozesse von Python aus starten
Erstellen eines Python-Skripts, das die e-Stat-API unterstützt (Version 2)
[OCI] Python-Skript zum Abrufen der IP-Adresse einer Recheninstanz in Cloud Shell
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Überprüfen Sie den Betriebsstatus des Servers mit dem Linux-Befehl top
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Verfahren von der Umgebungskonstruktion bis zum Betriebstest von testinfra, einem von Python erstellten Testwerkzeug für die Serverumgebung
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern