gelöst Log über Verfügbarkeit einer Datei auf einem Web- und SFTP-Server

Mitglied: Nidavellir

Nidavellir (Level 1) - Jetzt verbinden

14.10.2020 um 17:39 Uhr, 271 Aufrufe, 9 Kommentare

Hallo zusammen,

eins vorweg: ich habe minimale Kenntnisse in Skripten und werde mich da auch mehr mit beschäftigen müssen.
Ich bitte euch um Hilfe bei folgendem Problem.

Ich muss die Erreichbarkeit eines Servers prüfen und loggen. Hintergrund: angeblich ist der Server häufig nicht erreichbar und die Dateien können nicht abgerufen werden.
Es greifen zwei verschiedene Anwendungen auf den Server zu:
1) es wird eine HTML-Datei, welche über einen Webservice (ich glaube Glassfish) bereitgestellt wird, abgerufen
2) eine PDF wird per SFTP nach lokal kopiert

Um das ganze nachzustellen, hat mir ein Kollege eine Textdatei auf dem Server bereit gestellt, welche ich per URL und SFTP erreichen kann.

Ich habe mit dem Punkt 1 begonnen und lade die txt mittels
herunter. Tritt kein Fehler auf, ist der Webservice verfügbar.
Versuche ich eine nicht vorhandene Datei abzurufen, erhalte ich Fehler 1, versuche ich das mit einem Tippfehler in der URL um einen nicht verfügbaren Server zu simulieren, erhalte ich Fehler 2.

Fehler 1:
Fehler 2:
Diese 3 Möglichkeiten möchte ich dann in ein Log schreiben. Weiß aber nicht wie ich es korrekt mache. Ich habe mit Try/Catch gespielt und konnte zumindest bei Fehlern einen Eintrag erzeugen. Da hatte ich das Problem das die erfolgreichen Zugriffe nicht geschrieben werden können, da ich vermutlich mit Sicherheit falsch vorgehe.

Ich habe ein tolles Beispiel für das Schreiben einer Log-Datei gefunden [1] und möchte das gern nutzen.
Kann mich jemand dabei unterstützen? Oder zumindest in die richtige Richtung schubsen?


Viele Grüße
Nidavellir


[1] https://germanpowershell.com/logdatei-erstellen/
Mitglied: erikro
14.10.2020 um 18:17 Uhr
Moin,


Zitat von Nidavellir:

Hallo zusammen,

eins vorweg: ich habe minimale Kenntnisse in Skripten und werde mich da auch mehr mit beschäftigen müssen.
Ich bitte euch um Hilfe bei folgendem Problem.

Ich muss die Erreichbarkeit eines Servers prüfen und loggen. Hintergrund: angeblich ist der Server häufig nicht erreichbar und die Dateien können nicht abgerufen werden.
Es greifen zwei verschiedene Anwendungen auf den Server zu:
1) es wird eine HTML-Datei, welche über einen Webservice (ich glaube Glassfish) bereitgestellt wird, abgerufen
2) eine PDF wird per SFTP nach lokal kopiert

Hast Du denn schon mal in die Logs des Servers geschaut, was da so steht? Und was steht in den Logs der betroffenen Clients? Was ist der Grund für die Nichterreichbarkeit. Wieso "angeblich"? Meiner Erfahrung nach denken User sich sowas in der Regel nicht aus.

Oder ist das nicht Dein Server? Hast Du dann schon die Kollegen informiert, die den Server betreiben? Meiner Erfahrung nach sind die allermeisten Kollegen, wenn man ihnen anständige Fehlerbeschreibungen mit Originalfehlermeldungen und Logeinträgen zur Verfügung stellt, gerne bereit, das Problem zu lösen.

So, nun die Antwort auf Deine Frage :
https://www.netz-weise-it.training/weisheiten/powershell-ausgabestroeme- ...

Liebe Grüße

Erik
Bitte warten ..
Mitglied: Nidavellir
14.10.2020 um 22:16 Uhr
Hallo Erik,

die Clients, welche Daten von dem Server laden, befinden sich bei einem Kunden im internen Netz. Der Server liegt bei einem Hoster und wird von uns gezahlt und betreut. Ist eine wichtige Information, habe ich aber scheinbar bei meiner Problemschilderung vergessen. Sorry dafür.

Der Kunde ist nicht einfach und fordert einen Vergleich "Erreichbarkeit aus dem internen Netz" und "Erreichbarkeit von extern", z. B. aus unserem Netz. Also wenn der Server von intern nicht erreichbar war, wie sah es von extern aus? Mehr ins Detail kann ich leider nicht gehen, ist aber auch für die Frage nicht weiter relevant.

Zu deinem Link:
So richtig komme ich damit nicht weiter. Muss ich mir morgen nochmal in Ruhe durchlesen.

Ich habe folgenden Weg grob im Kopf: der Download wird mittels "Invoke-WebRequest ..." versucht. Gibt es keinen Fehler wird eine entsprechende Meldung ins Log geschrieben. Falls es einen Fehler gibt, muss eine andere Meldung geschrieben werden. In einer Batch habe ich das vor Ewigkeiten über Errorlevel abgefragt. So etwas scheint es hier nicht zu geben?
Bitte warten ..
Mitglied: Nidavellir
15.10.2020 um 10:17 Uhr
Ich habe jetzt mit einer einfacheren Vorlage für die Log-Erstellung weiter gemacht [1], empfinde ich als übersichtlicher.

Dort habe ich mittels if/else die Logik vorbereitet, muss aber noch auf Basis einer eventuellen Fehlermeldung die Prüfung für das if bauen.
Also das Ergebnis des versuchten Abrufs auf die zwei verschiedenen Fehler prüfen. Da komme ich aktuell nicht weiter...

So sieht es im Moment aus:



[1] https://www.antary.de/2016/11/07/einfaches-logging-fuer-powershell-skrip ...
Bitte warten ..
Mitglied: Nidavellir
15.10.2020, aktualisiert um 13:57 Uhr
Ich denke mir fehlt "nur" noch ein Baustein. Wie bekomme ich den Fehler, welcher bei "Invoke-WebRequest" auftreten kann, korrekt in die Variable $output? Diese wollte ich dann auf die möglichen Meldungen prüfen.

Ich vermute der Link von erikro sollte mir an eben dieser Stelle helfen? Also das ich die Ausgabe mittels Write-Verbose für die Variable oder eine Pipe nutzbar mache?
Falls dem so ist: mit welchem Aufbau?

Ich habe es mit folgendem Aufbau versucht, da erhalte ich aber folgenden Fehler.
Wie bekomme ich also die Fehlermeldung für den -like Operator nutzbar?


EDIT:
Ich habe es mit der Variable $Error versucht, da dort ohnehin die Fehlermeldung landet. Um alte Fehler zu löschen, leere ich die Variable vor der Ausführung.
Ist der Inhalt kein auswertbarer Text?


Vollständiges Skript:

Bitte warten ..
Mitglied: Nidavellir
15.10.2020 um 14:32 Uhr
Ich hoffe das wird mir hier nicht übel genommen oder als Spam aufgefasst, aber ich selbst hasse es wenn Fragen/Probleme ewig ohne eine Lösung stehen bleiben, auch wenn der Fragesteller eine Lösung gefunden hat...

Ich habe mich hier [1] zu Fehlerbehandlung eingelesen und die Möglichkeit von "$error[0].Exception" gefunden. Die dort abgelegte Fehlermeldung kann ich mit dem -like Operator verarbeiten und damit funktioniert mein Skript.

Ich bin aber trotzdem dankbar, falls jemand noch seinen Senf dazugeben möchte! Dennoch schon mal danke das ich hier "laut denken" durfte.


[1] https://www.gngrninja.com/script-ninja/2016/6/5/powershell-getting-start ...

Vollständiges Skript:

Bitte warten ..
Mitglied: erikro
15.10.2020, aktualisiert um 20:44 Uhr
Moin,

Zitat von Nidavellir:

Ich vermute der Link von erikro sollte mir an eben dieser Stelle helfen?

So ist es. Du kannst Dir das ganze Gedöns mit dem If-else sparen und Dir die Fehlermeldungen direkt ins log schreiben. Pass auf:

Hier ist test.txt leer.

Und hier steht die komplette Fehlermeldung in test.txt.

Warum das so ist, steht in dem Link. Hier nochmal genauer von MS direkt:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

Liebe Grüße

Erik
Bitte warten ..
Mitglied: Nidavellir
15.10.2020 um 20:58 Uhr
Danke für deine Erklärung!
Für die Übersichtlichkeit wollte ich nicht die ganze Meldung, sondern nur eine Kurzfassung ins Log schreiben.

Auf jeden Fall hab ich durch die Bastelei ein paar Sachen gelernt.

Danke & Viele Grüße
Nidavellir
Bitte warten ..
Mitglied: erikro
15.10.2020 um 21:25 Uhr
Zitat von Nidavellir:

Danke für deine Erklärung!

Gerne.

Für die Übersichtlichkeit wollte ich nicht die ganze Meldung, sondern nur eine Kurzfassung ins Log schreiben.

Der Kunde wäre aber beeindruckt. Und wenn man so schwachsinnige Wünsche des Kunden erfüllen muss, dann muss man ihm auch geben, was er will. Dinge, die er nicht wirklich versteht. Vor allem hat aber die Methode den Vorteil, dass Du alle Fehlermeldungen bekommst und nicht nur die, die Du erwartest.

Trotzdem halte ich das Ansinnen weiter für zweifelhaft. Es sagt nichts über die Erreichbarkeit der Site aus, wenn Du es nur von einem Punkt aus misst. Dafür gibt es Dienstleister wie den hier z. B. (erster Treffer bei Tante Googel, keine Empfehlung):
https://www.uptrends.de/tools/uptime

Sinn macht das Messen einer externen Erreichbarkeit nämlich nur dann, wenn man das von allen möglichen Punkten aus unter verschiedenen Bandbreitenbedingungen testet. Wenn ich hier eine in Deutschland gehostete Site messe, sagt das über die Erreichbarkeit in Peru nichts aus.

Deshalb würde ich dem Kunden raten, dass er einfach mal ein paar Euro zahlt und so einen Dienst beauftragt. Alles andere ist sinnlos. Außerdem hat der Kunde ja Zweifel an Deiner Dienstleistung. Allein schon deshalb würde ich da auf einen externen Dienstleister bestehen. Wenn der Kunde partout darauf nicht eingeht, würde ich den je nach Situation vielleicht eine Weile selbst bezahlen, um einfach neutrale Zahlen zu haben, falls es darauf ankommt.

Auf jeden Fall hab ich durch die Bastelei ein paar Sachen gelernt.

Das ist immer gut. Dann noch ein kleiner Hinweis: Du hattest weiter ober erwähnt, dass Du es mit einem try-catch-Konstrukt versucht hast. Das ist eigentlich eine schicke Sache, wenn es um Fehlerbehandlung geht. Man muss dazu nur ein wissen. Du musst an den Befehl, dessen Erfolg Du testen willst, ein
anhängen, sonst funktioniert das nicht richtig. Kommt es nämlich zu einem abbrechenden Fehler, dann wird ohne den Zusatz der catch-Zweig nie ausgeführt, weil ja vorher schon abgebrochen wurde.

Liebe Grüße

Erik
Bitte warten ..
Mitglied: Nidavellir
19.10.2020 um 13:58 Uhr
Zitat von erikro:
Vor allem hat aber die Methode den Vorteil, dass Du alle Fehlermeldungen bekommst und nicht nur die, die Du erwartest.
Das ist ein guter Einwand! Mal sehen, ich könnte für auftretende Fehler noch ein zweites Log mit den ausführlichen Meldungen erzeugen lassen.

Trotzdem halte ich das Ansinnen weiter für zweifelhaft. Es sagt nichts über die Erreichbarkeit der Site aus, wenn Du es nur von einem Punkt aus misst. Dafür gibt es Dienstleister wie den hier z. B. (erster Treffer bei Tante Googel, keine Empfehlung):
Die gleiche Prüfung läuft noch von einem anderen Ort aus. Tritt beim Kunde ein Fehler auf, wird das mit dem Log vom zweiten Standort und dem Monitoring vom Server verglichen. Ich bin mir bewusst das das alles nichts ganzes und halbes ist, aber so soll es nun mal sein.

Danke für deine Beteiligung!
Bitte warten ..
Heiß diskutierte Inhalte
Ubuntu
HAProxy-Wi: Installation des Pakets geht nicht - ich hätte keine enabled Repos
itnirvanaFrageUbuntu37 Kommentare

Hallo, von der Seite möchte ich gerne HAProxy-Wi installieren ich führe das hier aus Dann kommt -> There ar ...

Multimedia
Fernseher im Empfang GEMA-pflichtig?
CaptainDuskyFrageMultimedia27 Kommentare

Guten Tag, wenn ich in einer Firma einen Fernseher im Empfang betreibe, dort aber nur Nachrichten laufen lasse, ist ...

LAN, WAN, Wireless
Wlan Messgerät
gelöst fizlibuzliFrageLAN, WAN, Wireless23 Kommentare

Hallo, gibt es erschwingliche Messgeräte um vorhanden W-Lan ausleuchtungen in ihrer Signalstärke und Bandbreite zu messen. Es sollen einfache ...

Windows Server
PowerShell Script für MailVersand mit Anhang
gelöst klausk94FrageWindows Server20 Kommentare

Hallo Zusammen, ich bin aktuell etwas am verzweifeln an einem PS Script für den Emailversand Das Script funktioniert, jedoch ...

Microsoft
Failover Cluster Network
samreinFrageMicrosoft20 Kommentare

Hallo zusammen, toller Freitag heute vielleicht kann mir jemand unter die Arme greifen. Ich habe einen Failover Cluster gebaut. ...

Router & Routing
Kaufempfehlung WLAN Router mit VLAN Unterstützung
ccreccFrageRouter & Routing18 Kommentare

Hallo zusammen, ich wollte mal nach einer Kaufempfehlung für einen WLAN Access Point mit halbwegs vernünftiger VLAN Unterstützung fragen. ...

Ähnliche Inhalte
Windows Server
SFTP Freeware
gelöst adminstFrageWindows Server8 Kommentare

Hallo zusammen Ich muss leider auf einem Windows Server einen SFTP Server betreiben für eine KMU. Die meisten Freeware ...

Windows Server

Powershell - suche nach gelöschter Datei aus LOG

krischeuFrageWindows Server15 Kommentare

Hi, da bin ich wieder. Ich suchte nach einer Möglichkeit, aus LOG-Dateien zu extrahieren, wo man das Löschen von ...

Router & Routing

SFTP durch Lancom Firewall

gelöst mcmaccaFrageRouter & Routing8 Kommentare

Hallo zusammen, ich habe hier folgendes Problem bei dem ich aktuell leider nicht weiterkomme: Auf einer Synology Box läuft ...

Batch & Shell

Batch Skript Log Datei Anzahl der gelöschten Dateien

gelöst ZERRRROOOOFrageBatch & Shell3 Kommentare

Hallo Admins, ich habe mir ein bat Skript "gebaut"(Kenn mich mit Batch gar nicht aus ^^): Es funktioniert auch ...

Utilities

SFTP: Synchronisationsclient a la Dropbox

eglipeterFrageUtilities2 Kommentare

Hallo zusammen, Ich möchte gerne Dateien, die per SFTP zugänglich sind, auf meinem Client automatisch synchron halten. Mir schwebt ...

Visual Studio

Datei aus dem Web mit VisualBasic 6 öffnen

SarekHLFrageVisual Studio9 Kommentare

Hallo zusammen, ich habe hier ein VB6-Programm, welches monatlich automatisch eine bestimmte PDF-Datei aus dem Web (z.B.) herunterladen und ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT