Skripting unter Linux

Aus tmuehlenkamp
Wechseln zu: Navigation, Suche

Grundlagen

Die grundlegenden Funktion von Skripten unter Linux werden ausführlich in einer Sektion der Wiki-Seite der Ubuntuusers beschrieben [1] beschrieben. Dort gibt es auch eine Auflistung von bereits fertigen Skripten, die bestimmte Aufgaben übernehmen [2]

In den folgenden Sektionen sollen Skripte vorgestellt werden, die von mir auf eigenen Servern verwendet werden, um Abläufe zu Automatisieren oder Kommandozeilen-Programm effektiv zu bedienen.

Cron-Jobs

Der Cron-Daemon ist ein Dienst, der automatisch Skripte und Programme zu vorgegebenen Zeiten starten kann. Einträge können mit root-Berechtigung in der systemweit gültigen Tabelle unter /etc/crontab bearbeitet (hinzufügen/ändern/löschen) werden. Jeder Benutzer kann auch seine eigenen Cron-Tabellen unter /var/spool/cron/crontabs pflegen.

Netzlaufwerke

Um Netzlaufwerke ohne Umstände beim Systemstart verfügbar zu machen, kann das folgende Skript dies ermöglichen:

#!/bin/bash
mount -t cifs //192.168.1.1/backup /media/network_share/backup -o user=username,password=password,uid=1000,gid=1000,file_mode=0660,dir_mode=0770

Eingetragen wird dieses Skript (bzw. eine Verlinkung) in der Datei /etc/rc.local [1]. Die Verwendung von sudo entfällt, da die Einträge immer mit Root-Rechten ausgeführt werden.

Um sich vertrauter mit dem Einbinden von Freigaben mit dem virtuellen Dateisystem in das lokale Linux-Dateisystem zu machen, empfiehlt es sich diesen Artikel zu lesen. Damit wird auch die Übergabe der aufgeführten Parameter klar.

DNS-Probleme

Bei der manuellen Konfiguration von Netzwerkverbindungen unter Linux kommt es häufig zu Problemen bei der Namensauflösung[1]. Diese Probleme können mit einfachen Konfigurationsänderungen behoben werden. Eine Möglichkeit wird im folgendem beschrieben.

1. Kopie der Datei /etc/resolv.conf mit dem Befehl sudo cp /etc/resolv.conf /etc/resolv.default erstellen.

2. Skript mit beliebigen Dateinamen (hier: startdnsdefault) im Ordner /etc/network/if-up.d mit dem Befehl nano /etc/network/if-up.d/startdnsdefault anlegen.

3. Den folgenden Inhalt hineinkopieren:

#!/bin/sh
cp /etc/resolv.default /etc/resolv.conf

4. Das Skript mit dem Befehl chmod +x /etc/network/if-up.d/startdnsdefault ausführbar machen.

5. Die Datei /etc/resolv.default mit dem Befehl nano /etc/resolv.default bearbeiten und beliebige feste DNS-Server eintragen. Zum Beispiel:

nameserver 192.168.178.1 nameserver 8.8.8.8 nameserver 8.8.4.4

6. Änderungen durch einen Reboot des Servers bestätigen.

Skripte für Kommandozeilenprogramme

HandBrake

Mit dem folgenden Skript werden Videodateien, die im Matroska-Containerformat (.mkv) vorliegen, in das MP4-Videoformat (.mp4) konvertiert. Übergeben werden in dem Skript auch einige variablen, welche die Videoqualität im Zielformat definieren.

#!/bin/bash
for InputItem in *;do
HandBrakeCLI -i "$InputItem" -o /home/convert/"$OUT/${InputItem%.mkv}.mp4" -e x264 -q 20.0 -r 30 --pfr -a 1 -E faac -B 160 -6 dpl2 -R Auto -D 0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -4 -X 1280 -Y 720 --loose-anamorphic --modulus 2 -m --x264-preset medium --h264-profile high --h264-level 3.1;
done &

Glossary

Akronym Bedeutung Hinweis
CLI Command Line Interface Kommandozeile
Bash Bourne-again shell Freie Unix-Shell