
Ich muss einen laufenden Server haben, der Folgendes kann:
- Anruf beenden. Es löst ein Skript aus, wenn ein Anruf getätigt wird
- Das Skript prüft, ob die Datenbank läuft oder nicht.
- Wenn ausgeführt, antworten Sie dem Client, andernfalls
Success
antworten 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 SimpleHTTPServer
aber 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.conf
enthält eine recht gute Beschreibung der verfügbaren Optionen.
Antwort2
Ich würde das in BASH mit Hilfe einiger einfacher nc
Befehle 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 nc
Abhö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.