Einfacher Server, der Skripte auslöst und antwortet

Einfacher Server, der Skripte auslöst und antwortet

Ich muss einen laufenden Server haben, der Folgendes kann:

  1. Anruf beenden. Es löst ein Skript aus, wenn ein Anruf getätigt wird
  2. Das Skript prüft, ob die Datenbank läuft oder nicht.
  3. Wenn ausgeführt, antworten Sie dem Client, andernfalls Successantworten Sie als Fehler.

Ich möchte weder Apache noch einen anderen großen Webserver verwenden. Selbst einfache Skripte, die auf dem Port ausgeführt werden, reichen aus. Ich bin mir dessen bewusst, python -m SimpleHTTPServeraber ich vermute, dass es nur Dateizugriff bietet.

Ich kann ein einfaches Java-Programm schreiben, das auf einem Port läuft und antwortet, aber ich suche eine einfache Lösung

Antwort1

Einer der eher trivialen Dienste, die ich mir vorstellen kann, ist die Ausführung über xinetd. Das hat den Vorteil, dass xinetd selbst relativ leichtgewichtig ist, aber trotzdem alle Netzwerkaufgaben für Sie übernimmt, einschließlich Protokollierung und Sicherheitsbeschränkungen wie Anforderungsbegrenzungen, TCP-Wrapper usw.

Installieren Sie xinetd, sofern es noch nicht installiert ist, und definieren Sie einen benutzerdefinierten Dienst wie /etc/xinetd.d/helloworld:

service helloworld
{
    disable         = no
    port            = 1234
    socket_type     = stream
    protocol        = tcp
    wait            = no
    user            = nobody
    server          = /usr/local/bin/hello-world.sh
    server_args     = test
    instances       = 1
    type            = unlisted
}

Laden/starten Sie xinetd neu und Sie können es mit einem testen telnet localhost 1234.

Die Manualpage man xinetd.confenthält eine recht gute Beschreibung der verfügbaren Optionen.

Antwort2

Ich würde das in BASH mit Hilfe einiger einfacher ncBefehle tun:

#!/bin/bash

nc -k -l -p PORT > tempfile

while true
do
    if cat tempfile | grep request;
    then
        # Execute checker script
        # Reply back with nc
        : > tempfile # Clear tempfile
    fi
    sleep 1
done

Dies würde auch die Einrichtung des Clients erfordern nc. Möglicherweise ist auch die Einrichtung eines ncAbhörbefehls auf dem Client erforderlich, um die Erfolgsantwort zu erhalten.

Dieses Skript ist bei weitem nicht vollständig und Sie müssen auch den Client dafür schreiben, aber es könnte Ihnen einige Ideen geben.

Grundlegend ist hierbei der Einsatz von nc. Mit dessen Hilfe lassen sich einfache Client-Server-Architekturen aufbauen.

Antwort3

Als ich nach einer ähnlichen Lösung gesucht habe, bin ich auf Folgendes gestoßen:Gehen Sie aus.

Es ermöglicht das Auslösen einer Reihe von Aufgaben, einschließlich Shell, basierend auf HTTP-Aufrufen.

verwandte Informationen