Appearance
Versuch Linux BASH
In den Labs wird für Konfigurationen die BASH Shell auf dem Linux basierten Raspbian eingesetzt. Im folgenden finden Sie die wichtigsten Eckpfeiler im Umgang mit dem Terminal auf Linux.
Führen Sie nachfolgend alle Commands auf Ihrem Target aus.
Shell basics
Pfade
Das HOME Directory kann unter $HOME
oder ~
gefunden werden.
Folgende Commands wechseln alle ins HOME
.
bash
cd $HOME
cd ~
cd
keine sudo im Home
In Ihrem Homeverzeichnis benötigen Sie sudo
nicht.
Copy + Paste
SHIFT + CTRL + C
SHIFT + CTRL + V
Shell verlassen
Sie können eine Shell entweder mit CTRL + D
oder via exit
verlassen.
Programm abbrechen
Dauert ein Programm zu langen, können Sie es mit CTRL + C
abbrechen.
ping 8.8.8.8
CTRL + C
Programm stoppen und in den Hintergrund spedieren
Mit CTRL+Z
unterbrechen Sie ein Programm. Mit bg
schieben Sie es in den Hintergrund des Terminals, wo es weiterlaufen wird. Mit fg
können Sie das Programm wieder in den Vordergrund holen.
ping 8.8.8.8
CTRL + Z
bg
ping 8.8.4.4
CTRL + C
fg
CTRL +C
ping
Mit ping senden Sie einem Host einen Layer 3 ICMP
request um zu sehen ob er responsive ist. Ein Host muss aber nicht zwingend Antworten.
ping gitlab.fhnw.ch
TIP
Falls Sie das WiFi Netz dnet
im Lab verwenden um "nach aussen" zu pingen, wird dies nicht funktionieren, das der Ping aus Infrastrukturgründen unterdrückt wird. HTTP requests werden allerdings funktionieren.
curl
Command um eine HTTP Verbindung aufzubauen. Installieren Sie curl
nach:
bash
sudo apt install curl
bash
sudo curl -vvv https://gitlab.fhnw.ch
Aufgabe
Schauen Sie sich die Headers genau an. Was fällt Ihnen auf?
cat
Fileinhalt ausgeben:
cat /etc/network/interfaces
nano
Editieren Sie dieses File mit nano und speichern Sie es
nano /etc/network/interfaces
Was fällt Ihnen auf?
sudo
Super do (etwas als Administrator ausführen)
sudo nano /etc/network/interfaces
raspi-config
Einfaches UI für raspbian um das System zu konfigurieren.
echo
echo "Hallo!!"
File schreiben
echo "Hallo!!" > hello.txt
cat hello.txt
echo "... WORLD" >> hello.txt
cat hello.txt
manual pages (man)
Man pages enthalten Dokumentation zu den Commands: Lesen Sie man ls
.
dmesg
Kernel Messages, können auf Probleme hinweisen.
bash
dmesg
tail
Bei viel Output interessiert vielleicht nur die letzten paar Zeilen:
bash
tail /var/log/syslog
bash
dmesg | tail -50
grep
Suchen:
bash
cat /etc/network/interfaces | grep eth1
Rekursiv im Pfad (hier /etc
):
bash
grep -sr "eth1" /etc
Welche Packages wurden selber nachinstalliert?
bash
cat /var/log/apt/history.log
BASH Scripts
Ein BASH-Script erlaubt das ausführen verschiedener Commands hintereinander. Folgendes Script-File config.sh
konfiguriert eth0
.
bash
#!/bin/bash
ifconfig eth0 192.168.60.1 netmask 255.255.255.0
Die Zeile #!/bin/bash
gibt an, dass es sich in diesem File um ein BASH Script handelt.
Ausgeführt werden kann das Script folgendermassen:
bash
bash config.sh
Das File kann auch ausführbar gemacht werden:
bash
chmod 755
./config.sh
... das hat den Vorteil, dass bash
nicht mehr vor den Filenamen gesetzt werden muss.
config File schreiben via BASH Script
Oftmals würde man gerne den Inhalt eines config Files direkt in einem BASH-Script zwecks Übersicht übergeben. Ein mehrzeiliges File wlan.conf
kann folgendermassen geschrieben werden:
bash
#!/bin/bash
cat << EOF > wlan.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CH
network={
ssid="ESSID"
psk="PASSWORT"
}
EOF
config File mit sudo
Für Systemweite Files wie /etc/network/interfaces
oder /etc/dnsmasq.conf
funktioniert dies leider nicht, da die Berechtigung fehlt. Im folgenden kann tee
zusammen mit sudo
verwendet werden um das Problem zu lösen.
bash
#!/bin/bash
cat << EOF | sudo tee /etc/network/interfaces
auto eth0 lo
iface eth0 inet static
address 192.168.60.1/24
EOF