Linux & Co.

Auch faul? Linux-Umgebung per Skript einrichten

Faulheit kann ein Antrieb sein: Ich brauche ständig neue virtuelle Maschinen für irgendwelche Projekte. Und auch Rechner bespiele ich regelmäßig mit irgendwelchen Linuxen. Nach der Installation immer dasselbe: Tools installieren, Netzwerkfreigaben einrichten, git einrichten, Docker, Alias, Einstellungen. Das nervt. Es nervt immer die immerselben Dinge mehrfach zu machen. Dank Skript gehts nun mit einem Befehl.

Es folgt ausnahmsweise mal keine wirkliche Anleitung, sondern nur mein persönliches Skript: Als Denkanstoß für eigene Projekte und kleine Hilfe für Syntax und typische Problemchen. Nachbauen kann das wirklich jeder, denn im Skript ist keinerlei Logik untergebracht (update: eine kleine if-Abfrage …), es werden nur ein paar Befehle hintereinander ausgeführt. Mit kleinen Tricks für die Einfachheit. Funktioniert mit Ubuntu und Mint und Debian.

Das Skript

Das Skript ist Work in Progress, es werden sich vor allem noch einige Einstellungen und Profile hinzugesellen. Derzeit passiert Folgendes:

  • Einstellungen in .bashrc eintragen.
  • Benutzer zu sudo hinzufügen (Debian).
  • Systemupdate/-upgrade.
  • Programme installieren.
  • Docker einrichten.
  • Netzwerkfreigabe mounten.
  • git-Einstellungen vornehmen.
  • Programm-Profile kopieren.
  • Würdige Verabschiedung.

Hier also erst mal das Skript:

###!/bin/bash 

### Set .bashrc
cat ml_bashrc >> ~/.bashrc

### Add mirco to sudo - Debian only
if [[ $(lsb_release -i) = *"Debian"* ]]; then
su root -c 'apt-get install sudo'
su root -c 'adduser mirco sudo'
fi

### Install packets
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install cowsay fortune terminator gitk git lxde cifs-utils telegram-desktop finger -y

### Install docker
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update -y
sudo apt-get install docker-ce -y

### Mount network share
mkdir /home/mirco/Backup_HDD
cp smbcredentials /home/mirco/smbcredentials
echo //192.168.178.75/Backup_HDD /home/mirco/Backup_HDD cifs defaults,uid=1000,credentials=/home/mirco/smbcredentials | sudo tee --append /etc/fstab
sudo mount -a 

### Gizlog-Git 
# mkdir /home/mirco/git
# cd /home/mirco/git
# git clone https://mirco@git.example.com/repo
git config --global user.name "Mirco"
git config --global user.email "lang@gizlog.de"

### Profile
mkdir ~/.config/terminator
cp -rf ./configs/terminator/config ~/.config/terminator/


echo Done. Time for Muuuhhhh-Beer.|cowsay
sleep 5
clear

Ganz oben bei Set .bashrc wird der Inhalt der Datei ml_bashrc an die Datei .bashrc im Home-Verzeichnis angehängt. Darin finden sich derzeit Aliasse und eine Prompt-Definition:

# ml_Alias
alias ml_user='for f in $(cut -d: -f1 /etc/passwd) ; do finger $f | grep  -B1 bash ; done'
alias ml_deletelastline='sed -i '\''$d'\'' '
alias ml_deutsch='setxkbmap de'
alias ml_notiz='read p && echo "- "$p >> ~/check_mk_notizen'
alias ml_version='
    tput setaf 1 && echo Systeminfo: && tput sgr0 && 
    lsb_release -idrc && 
    tput setaf 1 &&  echo Kernel:&& tput sgr0 && 
    uname -r && 
    tput setaf 1 && echo Devices: && tput sgr0 && 
    lsblk -o NAME,SIZE,MOUNTPOINT && 
    tput setaf 1 && echo Speicherplatz: && tput sgr0 && 
    df -h --output=source,size,used,avail,target --exclude-type=tmpfs'
alias ml_find='read -p Suche mit Ordnertiefe 2: p  &&  echo $p | xargs find ./ -maxdepth 2 -name'
alias ml_cutter='cut -c7-'
alias ml_git='cd /home/mirco/git'   

# Standards
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias gitlog='git log --stat --graph --abbrev-commit'
alias hisgrep='history | grep '
alias terminator='terminator -l ml_terminator-layout'

# Prompt
export PS1="\[\033[38;5;2m\]\u\[$(tput sgr0)\]\[\033[38;5;15m\]@\[$(tput sgr0)\]\[\033[38;5;4m\]\h\[$(tput sgr0)\]\[\033[38;5;2m\]:[\w]:\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]"

Erklärungen

Ich erkläre nicht jeden Schritt, nur ein paar Kleinigkeiten. Zunächst mal fallen Euch vielleicht die -y bei den apt-get-Aufrufen auf. Das steht für „yes“ und sorgt für eine Installation ohne ständige Nachfragen, die Euch zum Drücken von y oder j nötigen.

Bei Add mirco to sudo wird der Nutzer der sudo-Gruppe zugeordnet – gemäß der if-Abfrage nur dann, wenn es sich um ein Debian-System handelt, bei Ubuntu ist sudo standardmäßig aktiviert. Mehr zum Auslesen von Systeminfos findet Ihr hier in einem eigenen Skript-Beitrag.

Die Docker-Installation ist einfach etwas aufwändiger, mehr zu dem Part findet Ihr hier.

Etwas tricky ist der Teil mit Mount network share: Hier wird in der Datei etc/fstab eine Freigabe eingetragen. Vorher wird das lokale Verzeichnis angelegt und die Datei smbcredentials aus dem Skript- in das Home-Verzeichnis kopiert. Darin: Die Login-Daten für die Netzwerkfreigabe. Wie sich der fstab-Teil zusammensetzt erklären wir hier.

Das Problem: Mit echo lässt sich trotz sudo nicht in die fstab schreiben – weil nicht „echo“ sondern „>>“ in die Datei schreibt und „>>“ hat eben keine sudo-Rechte bekommen. Aber tee kann es: tee leitet einfach die Ausgabe des vorherigen echo-Befehls in die fstab (per –append wird hinzugefügt) und die Standardausgabe um.

Im git-Teil habe ich ursprünglich git installiert und mein git-Repo vom Server geklont – dies aber nun auskommentiert. Einfach weil ich das Skript über git pflege und es mir über git auf den neuen Rechner ziehe – also muss ich git manuell installieren. Nun wird nur noch die Identität gesetzt.

Zum Schluss kommt der Profile-Bereich, in dem lediglich ein Layout-Profil für den großartigen Terminal Terminator kopiert wird. Dieser Bereich wird wohl noch ausgiebig wachsen.

Für Nachmacher

Für mich funktioniert das Skript, aber ganz portabel ist es nicht. Beispielsweise verwende ich in der fstab mein Home-Verzeichnis als absoluten Pfad. fstab versteht leider keine Umgebungsvariablen wie $HOME, alternativ könnte man höchsten nach /mnt oder so mounten, um allgemeingültig zu bleiben. Ein paar sudos könnte man auch noch einsparen.

Im Grunde ist es ganz einfach, sich so etwas zusammenzubasteln – es gibt nur hier und da mal kleine Problemchen mit Rechten oder der Ansprache von Variablen, nichts, was man nicht in ein paar Minuten lösen könnte. Zum Beispiel: Nicht jedes Tool hat einen y-Schalter für stille Ausführung, aber Ihr könnt Euch mit dem Programm yes behelfen: yes | apt-get install foobar würde die Ausgabe von yes, nämlich – oh Wunder – das Wörtchen „yes“, an den apt-get-Befehl durchreichen. Damit könnt Ihr Rückfragen grundsätzlich mit Ja beantworten.

Ganz still ist das Skript freilich nicht: Bei der lxde-Installation muss eine Wahl in einem grafischen Menü getroffen werden und logischerweise wird nach dem root-Passwort gefragt.

Weitere Linux-Artikel findet Ihr hier, darunter auch viele Terminal-Spielereien.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"
Schließen

Ooopsi!

Bitte deaktiviere Deinen Adblocker.