Skip to content
On this page

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