Suche
Suche Menü

Linux – DHCP Lease erneuern

fentlicht a
Vor kurzem habe ich einen Ubuntu-Server in ein neues VLAN verschoben. Da ich die IP-Adressen für Server auf dem DHCP-Server reserviere, ist die Netzwerkschnittstelle des Servers auf DHCP eingestellt.

Folgende 2 Befehle müssen ausgeführt werden, um die DHCP-Lease zu erneuern:

sudo dhclient -r  
sudo dhclient eth0

eth0 muss gegebenenfalls durch den Namen des Netzwerkinterfaces ersetzt werden.

EEPROM Update für den Raspberry Pi 4

Der Bootloader eines Raspberry Pi 4 kann über den Befehl rpi-eeprom-update aktualisiert werden. Mit dem Ausführen des Befehls sudo rpi-eeprom-update kann geprüft werden, ob ein Update für den Bootloader verfügbar ist.

pi@piwall:~$ sudo rpi-eeprom-update
*** UPDATE AVAILABLE ***
BOOTLOADER: update available   
   CURRENT: Do Sep  3 12:11:43 UTC 2020 (1599135103)
    LATEST: Di Jan 25 14:30:41 UTC 2022 (1643121041)
   RELEASE: default (/lib/firmware/raspberrypi/bootloader/default)
            Use raspi-config to change the release.
  VL805_FW: Dedicated VL805 EEPROM
     VL805: up to date
   CURRENT: 000138a1
    LATEST: 000138a1

Im obigen Beispiel gibt es eine aktuellere Version des Bootloaders. Die neuere Version kann über den Befehl sudo rpi-eeprom-update -d -a installiert werden.

pi@piwall:~$ sudo rpi-eeprom-update -d -a
*** INSTALLING EEPROM UPDATES 

***BOOTLOADER: update available
   CURRENT: Do Sep  3 12:11:43 UTC 2020 (1599135103)
    LATEST: Di Jan 25 14:30:41 UTC 2022 (1643121041)
   RELEASE: default (/lib/firmware/raspberrypi/bootloader/default)
            Use raspi-config to change the release.
  VL805_FW: Dedicated VL805 EEPROM
     VL805: up to date
   CURRENT: 000138a1
    LATEST: 000138a1
   CURRENT: Do Sep  3 12:11:43 UTC 2020 (1599135103)
    UPDATE: Di Jan 25 14:30:41 UTC 2022 (1643121041)
    BOOTFS: /boot

EEPROM updates pending. Please reboot to apply the update.
To cancel a pending update run "sudo rpi-eeprom-update -r".

Nach dem der Befehl ausgeführt wurde, muss das System mit sudo reboot neugestartet werden.

Nach dem Neustart des Systems den Befehl sudo rpi-eeprom-update nochmals ausführen um zu prüfen ob alles aktuell ist.

Eine Datei per SSH on-the-fly gzippen

Mit folgendem Befehl kann man eine Datei on-the-fly beim Übertragen per SSH gzippen.

gzip -c filename.log | ssh -C -l username 10.0.0.50 'cat > /home/username/filename.log.gz'

Erklärung:

gzip -c filename.log – gzippt filename.log und sendet das Resulat an stdout

ssh -l username 10.0.0.50 – verbindet per SSH mit dem User «username» auf den Remoteserver. -C komprimiert die Verbindung

'cat > /home/username/filename.log.gz' – cat zeichnet stdin auf (stdout vom vorherigen Befehl | ) und schreibt dies in den angegebenen Pfad.

Mac Terminal – wav-Dateien in mp3 umwandeln

Vor kurzem musste ich diverse wav-Dateien in mp3 umwandeln. Dazu gibt es im Mac Terminal einen einfachen Befehl. Voraussetzung ist die Installation von ffmpeg, welches über brew installiert werden kann.

Einzelne Datei konvertieren:

ffmpeg -i -codec:a libmp3lame -qscale:a 2 filename.wav filename.mp3

Alle Dateien im aktuellen Verzeichnis konvertieren:

for i in *.wav; do ffmpeg -i -codec:a libmp3lame -qscale:a 2 "$i" "${i%.*}.mp3"; done

Alle Dateien in einem Verzeichnis und allen Unterverzeichnissen konvertieren

find . -iname *.wav -type f -exec ffmpeg -i {} -codec:a libmp3lame -qscale:a 2 {}.mp3 -y \; 

Sollen mehrere mp3 Dateien nun in einer Datei zusammengefasst werden, kann der cat Befehlt genutzt werden:

cat file1.mp3 file2.mp3 file3.mp3 > newfile.mp3

Emoji in Windows und Mac einfügen

Windows

Mit dem Kurzbefehl

Windows + .

wird an jedem Ort mit Texteingabe eine vollständigen Emoji-Palette angezeigt.

Mac

Mit dem Kurzbefehl

Cmd + Ctrl + Leertaste

wird an jedem Ort mit Texteingabe eine vollständigen Emoji-Palette angezeigt. Über das >>-Symbol können weitere Sonderzeichen wie mathematische, technische oder logische Sonderzeichen einfügen, welche über die normale Tastatur nicht eingefügt werden können.

QNAP: E-Mail in einem Bashscript versenden

In QNAP funktioniert der Versand von E-Mails ein wenig anders als von anderen Linuxsystemen gewohnt. QNAP setzt eine eingeschränkte Version von Linux ein, welche das Tool «ssmtp» einsetzt.

Hier ein Beispiel wie in einem Bashscript ein E-Mail über ssmtp versandt werden kann:

email="mail@domain.ch"
from="server@domain.ch"
subject="Backup successful"
message=$(tail -1000 "$logfile")
echo -e "To:$email\nFrom:$from\nSubject:$subject\n\n$message" | ssmtp $email

Im obigen Beispiel sende ich nach erfolgreichem Backup ein E-Mail an mail@domain.ch und befülle den Inhalt mit einem tail der letzten 1000 Zeilen des Backup Logs.

ssmtp nutzt die in QNAP hinterlegten Zugangsdaten für den Mailversand, welche auf der Weboberfläche konfiguriert werden können.

PHP 8.1 auf einem Raspberry Pi installieren

Vor kurzem ist die neue PHP Version 8.1 herausgekommen. Hier die Beschreibung wie PHP 8.1 auf einem Raspberry Pi installiert werden kann.

PHP Installieren

Als erstes müssen die entsprechenden Sourcen hinzugefügt werden. Als erstes müssen die GnuPG Keys heruntergeladen werden um die Pakete der Sourcequelle verifizieren zu können:

sudo wget -qO /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Nun das Repository hinzufügen:

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Die Paketliste aktualisieren

sudo apt update

Nun kann PHP 8.1 sowie das Commandozeilen Interface (CLI) und weitere Extensions installiert werden. Der Platzhalter [ExtensionName] muss durch den Namen der jeweiligen Extension ersetzt werden.

sudo apt install -y php8.1-common php8.1-cli php8.1-[ExtensionName]

Beispiel mit gängigen Extensions:

sudo apt install -y php8.1-common php8.1-cli php8.1-mysql php8.1-xml php8.1-curl php8.1-zip php8.1-gd php8.1-imap 

Danach kontrollieren ob die PHP Version auch aktiv ist:

php --version

Mit folgendem Befehl kann geprüft werden, welche PHP Extensions installiert sind:

php -m

PHP in Apache Integrieren

sudo apt install -y libapache2-mod-php8.1

Sollte bereits eine Version von PHP in Apache aktiviert sein, so meldet die Installation

...
Creating config file /etc/php/8.1/apache2/php.ini with new versionlibapache2-mod-php8.1: php8.0 module already enabled, not enabling PHP 8.1

In diesem Fall muss die alte PHP Version deaktiviert werden und die neue Version aktiviert:

sudo a2dismod php8.0
sudo a2enmod php8.1

In diesem Fall ist die alte Verision die PHP Version 8.0.

Nun den Apache Webserver neustarten, damit die Anpassung aktiv wird.

sudo service apache2 restart

PHP Testen

Im public Verzeichnis des Webservers z.B. /var/www/html eine neue Datei phpinfo.php mit folgendem Inhalt erstellen:

<?php
phpinfo();

Nun kann kontrolliert werden, ob die korrekte PHP Version angezeigt wird. Die Datei sollte unbedingt nach dem Testen wieder gelöscht werden, sofern die Seite öffentlich zugänglich ist.

PHP deinstallieren

Wenn PHP wieder komplett entfernt werden soll, müssen folgende Befehle ausgeführt werden:

sudo apt purge --autoremove -y php-common mime-support

GPG Keys und Repositorys entfernen

sudo rm -rf /etc/apt/trusted.gpg.d/php.gpg
sudo rm -rf /etc/apt/sources.list.d/php.list

Weitere verknüpfte Datei entfernen:

sudo rm -rf /var/lib/systemd/timers/stamp-phpsessionclean.timer

Anrufkennung explizit unterdrücken oder anzeigen

Im Smartphone kann die Anzeige der eigenen Nummer global unterdrückt werden. Soll jedoch die Nummer nur vereinzelt unterdrückt oder angezeigt werden, so kann dies mit folgender Zeichenkette gemacht werden

Rufnummer für einzelnen Anruf unterdrücken

Mit der Zeichenfolge #31# zu beginn der Nummer wird die eigene Rufnummer für diesen Anruf unterdrückt.

Beispiel: #31#0621234567

Die Nummer kann so auch im Adressbuch gespeichert werden.

Rufnummer anzeigen

Wird die Rufnummer grundsätzlich unterdrückt, so kann diese für einzelne Anrufe auch wieder aktiviert werden. Dazu vor der Rufnummer mit der Zeichenfolge *31# beginnen.

Beispiel: *31#0621234567

Linux: mit grep Text in Dateien anzeigen

Um unter Linux Text in Dateien zu finden ist grep ein mächtiges Tool welches viele Optionen zum suchen ermöglicht.

grep -rnwi '/Pfad/zum/Ordner' -e 'Suchbegriff'

Bedeutung der Optionen:

  • -r bedeutet rekursiv, also über mehrere Ordnerebenen
  • -w wählt nur solche Zeilen aus, deren Treffer aus vollständigen Wörtern bestehen. So wird bei der Suche nach «Bad» keine «Badewanne» gefunden
  • -n gibt die Zeilennummer vor jedem Treffer aus
  • -i unterscheide nicht zwischen Groß- und Kleinschreibung.

Nur in bestimmten Dateitypen suchen / Dateitypen ausschliessen

Mit include und exclude kann in bestimmten Dateien gesucht werden, respektive bestimmte Dateitypen ausgeschlossen werden:

grep -rnwi --include=\*.{php,css} '/var/www/html/' -e "main"

grep -rnwi --exclude=\*.{php,css} '/var/www/html/' -e "main"

Bestimmte Ordner ausschliessen

Sollen beim Suchen bestimmte Ordner ausgeschlossen werden, so können diese über --exclude-dir ausgeschlossen werden. Wird dem Namen des Ordners ein * angehängt, kann auch nach allen Ordnern welche mit einem Namen beginnen oder enden gesucht werden.

grep -rwni --exclude-dir={lib,wp-*,admin} '/var/www/html/' -e "main"

Im obigen Beispiel werden die Ordner «lib», «admin» und alle Ordner welche mit «wp-» beginnen ausgeschlossen.

Weitere Optionen

  • -A gibt zusätzlich NUM Zeilen vor dem Kontext aus
  • -B gibt zusätzlich NUM Zeilen nach dem Kontext aus
  • -C gibt zusätzlich NUM Zeilen vor und nach dem Kontext aus. Zwischen zusammenhängende Gruppen von Treffern werden Zeilen mit «–» eingefügt
  • -c unterdrückt die normale Ausgabe und gibt stattdessen für jede Eingabedatei an, wieviele Zeilen auf die regular expression passen
  • -e verwende Muster als regular expression. Nützlich um Ausdrücke zu schützen, die mit einem - beginnen.
  • -H gibt den Dateinamen vor jedem Treffer aus.
  • -P verwendet Perl regular expressions.