Alle Beiträge von Don Matteo

lebt in der Schweiz, ist System Engineer MCP bei A-Enterprise GmbH. Mitglied des UNBLOG Network. Author und Blogger zu den Themen, Linux und Open Source. Tutorials für Windows, VMware, Synology, Fortinet.

Public IP mit PowerShell abrufen

Invoke-WebRequest Internet IP Abfrage

Das PowerShell Cmdlet Invoke-WebRequest ist die HTTP Abfrage ab PowerShell 3.0 für das Web. Dieses Cmdlet kann jedes HTTP-Verb wie GET POST PUT HEAD CONNECT u.a.m. mit HTTP-Parameter an einen WebServer senden und als HTTP-Header ausgeben. Invoke-WebRequest und Invite-RestMethod sind auch als Aliase anwendbar, wie diese von Unixoiden Systeme mit curl und wget bekannten sind.

Invoke-WebRequest sendet HTTP- und HTTPS-Anforderungen an eine Webseite auf einem WebServer. Es analysiert die Antwort und gibt Sammlungen von Links, Bildern und andere wichtige HTML-Elemente zurück.

Invoke-WebRequest kann beispielsweise in der PowerShell die eigene Public IP zurückgeben diese der Router vom ISP erhalten hat.

PS C:\> Invoke-WebRequest ipline.ch | Select-Object -Property Content | Format-List

Content : 12.34.56.7

Die HTTP-Header RAW Status Ausgabe mit Invoke-WebRequest.

PS C:\> Invoke-WebRequest echo.ipline.ch

StatusCode        : 200
StatusDescription : OK
Content           : 12.34.56.78

RawContent        : HTTP/1.1 200 OK
                    Keep-Alive: timeout=5, max=100
                    Connection: Keep-Alive
                    Content-Length: 12
                    Content-Type: text/html; charset=UTF-8
                    Date: Sun, 26 Jul 2020 10:08:48 GMT
                    Server: Apache/2.4.6 (CentOS) ...
Forms             : {}
Headers           : {[Keep-Alive, timeout=5, max=100], [Connection, Keep-Alive], [Content-Length, 12], [Content-Type, text/html;
                    charset=UTF-8]...}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 1

Wird folgender Fehler ausgegeben, muss der Internet-Explorer gestartet werden, oder mit Parameter UseBasicParsing ausführen.

Invoke-WebRequest : Der Antwortinhalt kann nicht analysiert werden, da das Internet Explorer-Modul nicht verfügbar ist, oder die Konfiguration beim ersten Start von Internet Explorer ist nicht abgeschlossen. Geben Sie den UseBasicParsing-Parameter an, und wiederholen Sie den Vorgang.

PS C:\> Invoke-WebRequest ipline.ch -UseBasicParsing

Die HTTP-Headers Ausgabe von Invoke-WebRequest alias curl.

PS C:\> curl unblog.ch/ifconfig | Select Headers

Headers
-------
{[Content-Length, 3109], [Content-Type, text/html; charset=UTF-8], [Date, Sun, 26 Jul 2020 10:15:46 GMT], [Server, Apache/2.4.6 (CentOS

Links von einer Webseite Abrufen

In diesem Beispiel werden die Links einer Webseite ausgegeben. Das Cmdlet ermöglicht den Inhalt einer Webseite mit den Links (href) zurückzugeben.

PS C:\> (Invoke-WebRequest -Uri "https://unblog.ch").Links.Href
https://unblog.ch/ifconfig/
https://think.unblog.ch/
#search-container

Senden einer Formulardatendatei

In diesem Beispiel wird das Aktualisieren eines Benutzerprofils veranschaulicht. multipart/form-data.

PS C:\> $Uri = 'https://api.contoso.com/v3/profile'
$Form = @{
    firstName  = 'Mike'
    lastName   = 'Smith'
    email      = 'mike.smith@contoso.com'
    avatar     = Get-Item -Path 'c:\Pictures\mike.png'
    birthday   = '1984-12-21'
    hobbies    = 'Cycling','Wakling','Jogging'
}
$Result = Invoke-WebRequest -Uri $Uri -Method Post -Form $For

Das Profilformular erfordert die Felder kommagetrennt wie folgt: , , , , u.s.w. Die API erwartet, dass ein Bild für das Benutzerprofilbild im Feld bereitgestellt wird. Die API akzeptiert auch mehrere Einträge, die im gleichen Formular übermittelt werden sollen. firstName lastName email avatar birthday hobbies.

Postfix E-Mail Weiterleitung zu Gmail

E-Mails mit Postfix (MTA) Mail Transfer Agent über Gmail Relayhost senden

EMails mit Postfix (MTA) Mail Transfer Agent über ein Google Mail Relayhost versenden. E-Mails werden dabei über ein Google Mailkonto ausgeliefert, die Clients im lokalen Netzwerk nutzen Postfix als lokalen SMTP-Gateway. Die vorgehensweise zeigt dieses Tutorial.

In Situationen bei diesen zum Beispiel Mutlifunktionsgeräte, oder Programme diese die Authentifizierung über Mail Submission und STARTTLS (Port 587) nicht unterstützen, können so über den lokalen Postfix Mailserver E-Mails versendet werden, ohne das eine Anmeldung am Mailserver erforderlich wäre.

Bei einem CentOS Linux werden hierzu die erforderlichen Pakete als root installiert.

yum update && yum install -y postfix mailx cyrus-sasl cyrus-sasl-plain

Auf einem Debian und Ubuntu ist die Paket installation wie folgt.

apt-get update && apt-get install -y postfix mailutils

Die Postfix Konfiguration ist zu editieren mit öffnen der Datei /etc/postfix/main.cf

mynetworks = 127.0.0.0/8 192.168.1.0/24
myhostname = 12.34.56.78.dynamic.yline.res.cust.isp.net
mydestination = $myhostname, localhost.$mydomain, localhost
inet_interfaces = all
inet_protocols = ipv4
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options =
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt

Bei mynetworks die lokalen Netzwerke eintragen. Als myhostname den im Internet auflösbaren PTR Resource Record, für die Ermittlung des PTR Eintrages, kann der folgende Befehl im Terminal ausgeführt werden, wie in folgendem Beispiel, oder aber hier.

$ curl -s ifconfig.co | xargs host
12.34.56.78.in-addr.arpa domain name pointer 12.34.56.78.dynamic.yline.res.cust.isp.net

Als nächstes wird eine Datei /etc/postfix/sasl_passwd mit folgendem Inhalt erstellt.

[smtp.gmail.com]:587    mein@gmail.com:password

Anstelle von mein@gmail.com das eigene Google Mailkonto einsetzen, bei password das Google Kennwort.

Mit postmap die Datei sasl_passwd als Berkeley DB erstellen.

postmap /etc/postfix/sasl_passwd

TIPP postmap nach jeder änderung ausführen.

Nun wird Postfix neu gestartet um die Konfiguration zu aktivieren.

systemctl restart postfix

Die Postfix Konfiguration testen, mit dieser Zeile im Terminal.

echo "Hier steht ein Text." | mail -v -s "Test subject" -r mein@gmail.com andere@domain.com

Als mein@gmail.com die gültige Gmail Adresse, und bei andere@domain.com eine gültige Empfänger E-Mail angeben.

Hinweis. Dieses Google-Konto erfordert deaktivierte Einstellungen unter Sicherheit – Bei Google anmelden – geht man zu Sicherheit
Bestätigung in zwei Schritten Aus, und der Zugriff auf das Google-Konto bei Zugriff durch weniger sichere Apps muss An sein.

Postfix protokolliert mit syslog in der Logdatei /var/log/maillog in dieser man sich vergwewissern kann, ob die E-Mail versendet und von smtp.gmail.com angenommen wurde.

tail -25 /var/log/maillog
mailq

Mit mailq die Queue auf allfällige abgelehnte Mails überprüfen.

Sind in maillog Fehler bei der authentifizierung zu finden, müssen die Google-Konto Sicherheitseinstellungen überprüft werden.

status=deferred (SASL authentication failed; server smtp.gmail.com[108.177.126.108] said: 534-5.7.9 Application-specific password required. Learn more at?534 5.7.9

TIPP Es kann passieren das nach mehreren Sendeversuche, sich dann abgewiesene (bounced) Mails in der Queue befinden, der Befehl mailq ziegt diese, mit postsuper -d löchst man Mails aus der Queue.

postsuper -d ALL