Freitag, 9. Oktober 2020

Linux - Statische Kopie einer Webseite anlegen mit wget

Bereits in anderen Artikeln habe ich auf die Verwendungsmöglichkeiten von wget hingewiesen. Siehe z.B. Rund um Linux - Einige nützliche Befehle für die Shell II (Download mit wget und seq), Webservice Abfrage per Konsole mit wget und Erreichbarkeit von Webseiten oder Servern mit wget überpfüfen inkl. E-Mail Versand. Mit wget lassen sich sehr gut statische Kopien von Websites erstellen.


Ein einfaches wget [url] ist leider nicht ausreichend, da u.a. verschiedene Ressourcen pauschal nicht mitgeladen werden. 

Damit dies vollumfänglich funktioniert, sind die folgenden Parameter notwendig (siehe auch http://www.gnu.org/software/wget/manual/wget.html):

wget -p -nh -H -k -E -w 1 -r -l 1 [URL]

Siehe auch c't 21/2020 S. 154 Praxis Websites kopieren.

‘-p’ => ‘--page-requisites’
This option causes Wget to download all the files that are necessary to properly display a given HTML page. This includes such things as inlined images, sounds, and referenced stylesheets.

‘-nH’ => ‘--no-host-directories’
Disable generation of host-prefixed directories. By default, invoking Wget with ‘-r http://fly.srk.fer.hr/’ will create a structure of directories beginning with fly.srk.fer.hr/. This option disables such behavior.

‘-H’ => ‘--span-hosts’
Enable spanning across hosts when doing recursive retrieving (see Spanning Hosts).

‘-k’ => ‘--convert-links’
After the download is complete, convert the links in the document to make them suitable for local viewing

‘-E’ => ‘--adjust-extension’

If a file of type ‘application/xhtml+xml’ or ‘text/html’ is downloaded and the URL does not end with the regexp ‘\.[Hh][Tt][Mm][Ll]?’, this option will cause the suffix ‘.html’ to be appended to the local filename.

‘-w seconds’ => ‘--wait=seconds’
Wait the specified number of seconds between the retrievals. Use of this option is recommended, as it lightens the server load by making the requests less frequent.

‘-r’ => ‘--recursive’
Turn on recursive retrieving. See Recursive Download, for more details. The default maximum depth is 5.

‘-l depth’ => ‘--level=depth’
Specify recursion maximum depth level depth (see Recursive Download).


Allgemein nützliche Informationen zu wget finden sich auch hier: Frequently Asked Questions About GNU Wget.

Donnerstag, 24. September 2020

Linux - Anzeigen des TIMESTAMP in der history mit Hilfe von HISTTIMEFORMAT

Ruft man die history (Verlauf über die Befehlszeile) auf, werden normalerweise die Befehle mit #ID und der Befehl selber angezeigt. Es kann aber vorteilhaft sein, den Zeitstempel zusammen mit dem Befehl anzuzeigen.


Umgebungsvariable HISTTIMEFORMAT

HISTTIMEFORMAT in der ~/.bashrc mit dem folgenden Inhalt setzen:

HISTTIMEFORMAT="%F %T "

Hinweis: Der Zeitstempel kann nicht rückwirkend gesetzt, er wirkt sich nur auf die neu hinzugefügten Befehle aus!

 

Sonntag, 13. September 2020

Linux - PDF Dokumente zusammenfügen / Merge PDF files

Mit Hilfe von poppler-utils ist es möglich per Kommandozeile PDF  Dokumente in andere Formate umzuwandeln zu manipulieren oder auch zusammenfügen.

Installation (wenn Paket noch nicht vorhanden):
sudo apt-get install poppler-utils

Mit dem Befehl pdfunite ist das das Zusammenfügen von PDF Dateien per Kommandozeile ein Kinderspiel:
pdfunite Datei1.pdf Datei2.pdf AusgabeDatei.pdf

Weitere nützliche Tools:

  • pdftotext - Entnahme von Text
  • pdftoppm - Umwandlung von PDF nach PPM/PNG/JPEG
  • pdfimages - Entnahme von Bildern

Detailierte Infos zur Verwendung unter https://wiki.ubuntuusers.de/poppler-utils/.

Hinweis: Auch unter Windows ist eine Verwendung zum Beispiel mit Hilfe des Windows-Subsystem für Linux (WSL) möglich.

Freitag, 11. September 2020

Windows-Subsystem für Linux (WSL) - Installation

Mit Hilfe des Windows-Subsystem für Linux (WSL) können die enthaltenen Anwendungen des Ubuntu Images nativ unter Windows ausgeführt werden.

Damit eine Installation erfolgen kann, muss zuvor das optionale Feature „Windows-Subsystem für Linux“ aktiviert werden. 

Dies geht am schnellsten über den folgenden PowerShell (als Administrator ausführen) Befehl:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Alternativ geht dies auch per GUI:

Start Menu öffnen und nach "OptionalFeatures" suchen:

"Windows Subsystem für Linux" auswählen => "OK" klicken

Danach muss der PC neugestartet werden!


Anschließend können per Microsoft Store die folgenden Versionen installiert werden.

Hierfür kann man einfach nach "Ubuntu" suchen oder die nachfolgenden Links aufrufen:

Ubuntu 16.04 LTS: https://www.microsoft.com/de-de/p/ubuntu-1604/9pjn388hp8c9
Ubuntu 18.04 LTS: https://www.microsoft.com/de-de/p/ubuntu-1804/9n9tngvndl3q
Ubuntu 20.04 LTS: https://www.microsoft.com/de-de/p/ubuntu-2004/9n6svws3rx71

Weitere Informationen gibt es im Ubuntu Wiki: https://wiki.ubuntu.com/WSL


Montag, 7. September 2020

Linux - Netzwerkverbindung bzw. Erreichbarkeit von Ports testen

Mit der Hilfe von netcat lassen sich TCP/UDP Verbindungen bzw. Erreichbarkeit von Ports unter Linux testen.

Netcat ist in der Regel bereits vorinstalliert, kann ansonsten per netcat-openbsd installiert werden.

Netcat hat zwei Modi

  • Server: nc -l lokalport (nc -l 1234)

Netcat lauscht auf dem angegebenen Port für unbegrenzte Zeit auf eine eingehende Verbindung. 

  • nc 127.0.0.1 1234

Wurde eine Verbindung aufgebaut und wieder geschlossen wurde, beendet sich Netcat.

  • Client: nc zielserver zielport (nc -vz 192.168.1.110 80)

Mit der IP-Adresse 192.168.1.110 und dem Port 80 soll sich Netcat verbinden. In dem Client-Modus muss auf dem Zielrechner und -port schon eine Server-Anwendung warten, andernfalls beendet sich Netcat mit einem Fehler.


Hinweis: Funktioniert natürlich nur, solange keine Firewall zwischen den jeweiligen Netzwerken der Systeme die Verbindungen blockiert!

Wichtige Parameter:

  • -v  => aktiviert ausführlichere Ausgaben
  • -z  => nc scannt nur nach lauschenden ("listening") Diensten (Portscan)
  • -l  => nc wartet auf eingehende Verbindungen ("listen")

Auch ein simpler Dateitransfer ist möglich, siehe https://de.wikipedia.org/wiki/Netcat#Einfaches_Dateikopieren.

Auch ein einfacher Portscan ist mit netcat möglich:

nc -zv localhost 20-23

Siehe auch Liste der standardisierten Ports https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports.

  • 22 - TCP/UDP => Secure Shell (SSH) wird für verschlüsselte Fernwartung und Dateiübertragung genutzt (scp, sftp) sowie für getunnelte Portweiterleitun. 

 

Samstag, 29. August 2020

DSGVO - Was sind personenbezogene Daten?

Personenbezogenen Daten sind alle Informationen, die sich auf eine identifizierte oder identifizierbare Person beziehen.

Beispiele für personenbezogene Daten:

Bankdaten

  • Kreditkarte, Kontonummer, Einkommen, Kontostände

Physische Merkmale

  • Geschlecht, Haut-, Harr-, Augenfarbe, Statur, Kleidergröße

Kenn-Nummern

  • Identifikationsnummer, Personalausweisnummer, Sozialversicherungsnummer

Besitzmerkmale

  • Fahrzeug-, Immobilieneigentum, Grundbucheintrag

Onlinedaten

  • Standortdaten, IP-Adresse, E-Mail-Adresse, Cookie-Kennung

Gesundheits-Informationen

  • Genetische Daten, Krankendaten

Werturteile

  • Schul- und Arbeitszeugnisse

Allgemeine Personendaten

  • Name, Alter, Geburtsdatum, Anschrift, Familienstand

 

Siehe auch Bundesdatenschutzgesetz (BDSG) § 46 Abs. 1 https://www.gesetze-im-internet.de/bdsg_2018/__46.html .

Montag, 24. August 2020

Fritz!Box - Anrufe per Python mit TR-064 und fritzconnection

Mit Hilfe von fritzconnection lassen sich Anrufe per TR-064 initiieren als auch beenden. Siehe auch https://avm.de/service/schnittstellen bzw. "AVM TR-064 – First Steps". Mit wenigen Zeilen Python-Quellcode kann man so z.B. auf Ereignisse bei einem Raspberry Pi reagieren.


Vorbereitung: Ein FRITZ!Box-Benutzerkonto erstellen

Siehe auch https://service.avm.de/help/de/FRITZ-Box-7590/018/hilfe_system_user_konzept.


Installation von fritzconnection (unter Python3)

Hinweis: Die hier gezeigte Lösung funktioniert nur mit Python3!
 
Package installer for Python (pip), wenn noch nicht vorhanden:
sudo apt-get install python3-pip

Damit die Python .whl files installiert werden können, müssen folgenden Packete vorhanden sein:
sudo apt-get install libxml2-dev libxslt-dev python-dev
Error: Please make sure the libxml2 and libxslt development packages are installed.

Installation von fritzconnection package via pip
sudo pip3 install fritzconnection
Hinweis: Da die Python .whl files (wheels) installiert werden müssen, dauert die Installation ca. 5-10min.

Script 

#!/usr/bin/python
from time import sleep
from fritzconnection import FritzConnection

fc = FritzConnection(
        address='192.168.1.1',
        user="ring",
        password="123456",
        )

print(fc)  # print router model informations
#fc.reconnect()  # get a new external ip from the provider

# call_action takes two required arguments: the service- and the action-name
# https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_voip-avm.pdf
fc.call_action("X_VoIP1","X_AVM-DE_DialNumber",
                arguments={"NewX_AVM-DE_PhoneNumber ": "**9"})
# **9 (Rundruf) Alle angeschlossenen Telefone klingeln
sleep(5)
# Disconnect the dialling process.
fc.call_action("X_VoIP1","X_AVM-DE_DialHangup")


Fehler die auftreten können:

fritzconnection.core.exceptions.FritzActionFailedError: UPnPError:
errorCode: 501
errorDescription: Action Failed


=> Bei der FRITZ!Box muss unter 'Telefonie/Telefonbuch/Wählhilfe' der Punkt 'Wählhilfe verwenden' ausgewählt werden. ErrorCode 501 erscheint beim Fehlen der Wählhilfe. 

fritzconnection.core.exceptions.FritzSecurityError: UPnPError:
errorCode: 606
errorDescription: Action Not Authorized

=> Der Benutzer der FRITZ!Box hat nicht die notwendigen Rechte einen Anruf zu tätigen.