marcimarc85
Goto Top

Webseite inkl. Port Abfragen per batch

Hallo,

Ich möchte gern den Inhalt einer Webseite (127.0.0.1:8085) abfragen.
Hintergrund.: Wenn die Webseite nicht erreichbar ist (wegen Wartungsarbeiten) läuft eine zweite Tomcat Instanz mit einer Wartungswebseite. Nun möchte ich ein Batch Script laufen lassen, dass o.A. IP inkl diesem Port so lange (alle 10 sekunden) prüft und wenn diese erreichbar ist, den Wartungsdienst stoppt und den regulären Tomcat Dienst wieder startet.
Ich weiß nicht, wie ich die Abfrage realisieren soll. Wenn die Webseite unter dem Port erreichbar ist, gibt sie lediglich

<!doctype html><html><body><h1>403 Forbidden</h1></body></html>

im Seitenquelltext bzw "403 Forbidden" auf der Seite direkt aus.
Kann man das irgendwie per batch abfragen? Ansonsten reicht auch einfach nur die Erreichbarkeit der Seite zu prüfen. Damit wäre mir schon sehr geholfen. Momentan stehe ich da echt etwas auf dem Schlauch.
Danke schonmal.

Content-Key: 666737

Url: https://administrator.de/contentid/666737

Printed on: April 25, 2024 at 08:04 o'clock

Member: SlainteMhath
SlainteMhath May 14, 2021 at 11:58:15 (UTC)
Goto Top
Moin,

den Inhalt der Website kannst du per wget oder curl abfragen und temporär auf Platte schreiben und/oder per grep oder awk auswerten und dann den anderen Tomcat entsprechend starten/stoppen

lg,
Slainte
Member: wiesi200
wiesi200 May 14, 2021 at 12:42:54 (UTC)
Goto Top
Hallo,

rein Theoretisch könntest du auch einen Reverse Proxy davor schalten, was auch andere Vorteile bringt, und ein entsprechendes Error Handling einbauen.

Ist aber nur ein Gedanke und nicht getestet.
Member: manuel-r
manuel-r May 14, 2021 updated at 13:17:37 (UTC)
Goto Top
Mit
(invoke-webrequest -uri "127.0.0.1:8085).statuscode  
sollte das kein Problem sein. Noch ein bisschen if, ein Quäntchen start-sleep und eine Prise do while|until fertig ist das Script.

Manuel

Edit:
Und natürlich je nach Bedarf noch etwas start-service oder stop-service dazugeben.
Mitglied: 148121
148121 May 14, 2021 updated at 14:45:24 (UTC)
Goto Top
Würde ich zwar auch mit nem ReverseProxy abfackeln (der macht das mit Wartungsseite automatisch bei Nichterreichbarkeit des Backends) aber wenn du unbedingt willst ... PS bsp.
$result = $null
while($true){
    try{
        $result = iwr 'http://127.0.0.1:8085' -TimeoutSec 2 -EA Stop  
    }catch{}
    if($result.StatusCode -eq 403){
        while ((gsv "Wartungsdienst").Status -ne "Stopped"){  
            spsv -Name "Wartungsdienst" -Force  
        }
        sasv -Name "BlaBlubTomcat"  
        break
    }
    sleep 10
}
Gruß w.
Member: erikro
erikro May 14, 2021 at 14:05:08 (UTC)
Goto Top
Moin,

wenn ich das richtig verstanden habe, dann reicht es, dass geprüft wird, ob der Port offen ist. Das kannst Du entweder unter Windows mit tcping oder unter Linux mit netcat machen. In beiden Fällen ist der errorlevel 0, wenn er offen, und 1, wenn er geschlossen ist.

hth

Erik
Member: mbehrens
mbehrens May 14, 2021 at 15:40:46 (UTC)
Goto Top
Zitat von @MarciMarc85:

Hallo,

Ich möchte gern den Inhalt einer Webseite (127.0.0.1:8085) abfragen.

Kann man das irgendwie per batch abfragen? Ansonsten reicht auch einfach nur die Erreichbarkeit der Seite zu prüfen. Damit wäre mir schon sehr geholfen. Momentan stehe ich da echt etwas auf dem Schlauch.

Nutze Test-NetConnection und prüfe das Ergebnis von TcpTestSucceeded.