Skip to content
On this page

Versuch VSCode, Wireshark, Python, Samba

Text Editor (Light Weight Coding IDE) installieren

Da wir in Zukunft Files und Code editieren werden, lohnt es sich für das Hostsystem (Windows / Mac / Linux) einen soliden Texteditor zu installieren. Für folgende Versuche werden wir den Open Source Editor Visual Studio Code (vscode) installieren.

Text Editor auf Targetsystem (ohne GUI)

Code-Editor ohne GUI

Da wir über UART und Konsole keinen direkte graphische Oberfläche besitzen, eignen sich via Terminal folgende Editoren:

  • vim (gewöhnungsbedürftig)
  • emacs (sehr sehr gewöhnungsbedürftig)
  • nano (einsteigerfreundlich)

Sie können diese editoren auf dem Target nachinstallieren sofern Sie über eine Netzwerkverbindung verfügen via:

bash
sudo apt update
sudo apt install <paketname>

VS Code: https://code.visualstudio.com/

BASH Auswählen

Mit CTRL + J können Sie in VS Code ein Terminal öffnen. Als default wird hier ein normals CMD von Windows verwendet. Besser für unsere Versuche eignet sich die BASH, welche wir mit GIT installiert haben.

Falls Git auf einem anderen Drive als C:\> installiert haben, muss der Pfad als Setting in VS Code gesetzt werden.

Settings: Settings VS Code

Via F1 Open Settings (JSON) öffnen Sie das settings.json File und fügen die Pfade gemäss Ihrer Git Installation hinzu:

json
{
   "git.path": "D:\\Git\\bin\\git.exe",
   "terminal.integrated.shell.windows": "D:\\Git\\bin\\bash.exe"
}

Tips mit VS Code

Schnelles ersetzen von Wörtern

  1. Fügen Sie folgende Text in ein neues Editorfenster ein:

    auto lo eth1 wlan0
    
    allow-hotplug eth1
    iface eth1 inet static
       address 192.168.50.1/24
    
    allow-hotplug wlan0
    iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
    
  2. Markieren Sie das Wort eth1.

  3. Selektieren Sie alle Vorkommnisse via wiederholtem Verwenden von CTRL+D.

  4. Ersetzen Sie die Selektion mit eth0.

Multicursor

  1. Kommentieren Sie nun alle Zeilen im File aus:
  2. Gehen Sie mit dem Cursor an den Anfang des Files
  3. Verwenden Sie CTRL + ALT + Down (Linux: SHIFT + ALT + Down) wiederholt bis Sie für jede Zeile einen Cursor erstellt haben.
  4. Fügen Sie nun # ein.

Linux Line Endings

In den Settings von VS Code, wählen Sie für files.eol die Option \n (Newline) und nicht \r\n um Probleme in Zukunft auf dem Targetsystem zu vermeiden.

Starten Sie vscode neu mit SHIFT + CTRL + P und Window: reload.

Stellen Sie im File nun sicher, dass in der unteren Leiste LFund nicht CR LF selektiert ist und speichern Sie das File erneut.

Alternativ dos2unix auf Target installieren.

Effizient steigern mit VS Code

(optional) Weitere Shortcuts können Sie hier finden: https://zellwk.com/blog/seful-vscode-keyboard-shortcuts/

Samba File Server

Der Samba File Server ist eine Open Source implementierung des Microsoft Windows Netzshare Protokolls. Es erlaubt einem Windows oder Linux System ein Netzwerklaufwerk einzubinden.

Im Versuch: Setup haben Sie sich mit dem Installieren und Deployen von Raspbian Linux auf dem Raspbery Pi auseinandergesetzt. Weiter können Sie unter der Verwendung des USB-UART Adapter auf eine Root-Konsole zugreiffen.

Im Verlauf des Semesters werden wir Files zwischen Host System (Notebook) und Target (Raspberry) Pi hin- und her schieben. Während es natürlich möglich ist, Daten jeweils auf die SD-Karte zu legen, erfordert dies sehr viel Zeit und Geduld. Um diesen Prozess zu vereinfachen bieten sich folgende Lösungen via Netzwerk (WiFi / Ethernet) an:

  • Webserver, via wget / curl auf dem HOST.
  • SCP via SSH und FTP GUI in Windows
  • Samaba Fileserver (Windows Share) auf dem Target oder Host

Wir werden uns aus Einfachheit für letzteres entscheiden.

Pakete installieren

Bringen Sie Ihr Targetsystem wie in In Versuch: Setup ins Internet.

Als erstes installieren wir den Samba File Server nach, dieser erlaubt es via Netzwerklaufwerk auf das Raspberry Pi zuzugreifen.

bash
sudo apt update
sudo apt install samba samba-common-bin -y

Je nach Netzwerkbetrieb wird das ganze etwas dauern. Passen Sie nun die Konfiguration von samba an um Ihren Homefolder Über das Netzwerk zu teilen.

bash
sudo nano /etc/samba/smb.conf

Default Config

Das File wird nicht leer sein, löschen Sie dieses zuerst und ersetzen Sie den Inhalt folgendermassen:

bash
[homes]
   comment = Home Directories
   browseable = yes

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
   read only = no

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
   create mask = 0775

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
   directory mask = 0775

# By default, \\server\username shares can be connected to by anyone
# with access to the samba server.
# The following parameter makes sure that only "username" can connect
# to \\server\username
# This might need tweaking when using external authentication schemes
   valid users = %S

Weiter muss ein weiterer samba User hinzugefügt werden um Permission zu bekommen.

bash
sudo smbpasswd -a pi

Username

Sie können einen anderen Benutzernamen als derjenige des Systems verwenden.

Als nächstes muss der Service einmal neu gestartet werden. Hierzu führen Sie folgenden Command aus:

sudo /etc/init.d/smbd restart

Host Maschine ins gleiche Netz bringen

Verbinden Sie zudem das Hostsystem wie in In Versuch: Setup mit dem Target via Ethernet.

SystemInterfaceIP / Subnet
HostEthernet Adapter192.168.50.2/24
Targeteth1 (USB Adapter)192.168.50.1/24

Verifizieren Sie via ping in beide Richtungen, dass die Verbindung klappt.

Firewall hostseitig

Stellen Sie sicher, dass Ihre hostseitige Firewall kooperativ ist. Ansonsten wird keine Verbindung mit ping noch ssh oder samba klappen.

Einbinden vom Samba Fileserver

  • Windows

    Sie können das Netzwerklaufwerk in einem Explorer unter der Eingable der URL (CTRL + L) aufrufen \\192.168.50.1\. Ein Dialog wird sie zur Eingabe der Credentials auffordern.

    Probleme unter Windows

    Standardmässig meldet sich Windows beim samba server via Defaultuser an. Um sich mit dem eben erstellten Samba-User anzumelden ist es nötig ein Netzwerklaufwerk einzubinden.

    1. Öffnen Sie den Windows Explorer (pro Tipp: Windows Key + E)
    2. Rechtsklick auf Netzwerk und Netzlaufwerk verbinden ...
    3. Ordner ist \\192.168.50.1\homes
    4. Box Verbindung mit anderen Anmeldeinformatiuonen herstellen
    5. Wählen Sie Weitere Optionen und Anderes Konto

    Hier geben Sie die mit smbpasswd eingegebenen Credentials ein.

  • MAC / Linux

    Öffnen Sie einen File Browser und geben Sie in der URL ein smb://192.168.50.1

Geschafft! Sie können nun Files vom Host auf das Target transportieren ohne jeweils die SD-Karte zu wechseln.

Einfaches Python Programm schreiben

Mit dem jetztigen Setup lässt es sehr komfortabel Software targetseitig Entwickeln. Hierzu werden wir ein Python Programm in VS Code auf dem Target schreiben und ausführen.

Installieren Sie auf dem Target python3 nach:

bash
sudo apt update
sudo apt install python3 -y

Python3 unter Raspbian

Die Lite Version von Raspian Buster beinhaltet python bereits.

  1. Starten Sie vscode

  2. Öffnen Sie das Netzlaufwerk

  3. Erstellen Sie ein neues File hello.py.

    py
    #!/usr/bin/python3
    
    
    def main():
        print("hello world!")
    
    
    if __name__ == '__main__':
        main()
    
  4. Installieren Sie allfällig von VS Code vorgeschlagene Extensions to Python.

  5. Fürhen Sie in einem targetseitigen Terminal das Programm aus

    bash
    python3 hello.py
    

    Ausführbare Dateien

    Sie können hello.py auch direkt ausführbar machen.

    bash
    chmod a+x hello.py # ändert die flags (ausführbar)
    ./hello.py # ganz wichtig, ./ vor dem Filenamen!
    

Zusätzliche Pakete installieren

Installieren Sie weiter noch folgende applikationen / libs via apt:

bash
sudo apt install python3-pip libtiff5 libopenjp2-7

Git und Git BASH installieren (Windows)

Bis jetzt haben wir putty sowohl als serielles Terminal über UART, sowie auch über SSH verwendet. Idealerweise könnten wir direkt im Terminal von VS Code (CTRL+J toggelt das Terminal Pane) mit einem SSH Terminal Arbeiten.

Git selber ist ein Version Management Tool, welches Sie lokal (auch ohne Server) verwenden können um z.B. Checkpoints beim Bearbeiten von Files erstellen. Das geht auch ausserhalb von Source Code und Programmieren u.a. für Textdokumente.

Um dem Windows Terminal das BASH upgrade zu verpassen installieren wir git, welches dies als optionales Paket mitbringt.

  1. Installieren Sie git von der Git SCM Webseite.
  2. Stellen Sie sicher auch die BASH zu selektieren
  3. Starten Sie vscode neu.
  4. Im Terminal wählen Sie nun mit Select default Shell die BASH aus.
  5. Führen Sie nun aus der BASH ssh aus ...
    bash
    ssh pi@192.168.50.1
    
    ... und loggen Sie sich in das Target ein.
  6. Führen Sie das vorher erstelle Progpramm über die BASH aus und kontrollieren Sie den output.

Wireshark

Wireshark erlaubt uns Pakete auf Ethernet, WLAN und USB abzufangen und so sniffen zu können. Das Tool ermöglicht das inspizieren von Frames und Packets sowie deren Payload auf dem gesamten Netzwerkstack.

Downloaden und Installieren Sie Wireshark für Ihr Hostsystem.

Download: https://www.wireshark.org/download.html

Netzwerkinterfaces nicht sichtbar in Wireshark

Falls Sie unter Windows 10 keine Netzwerkinterfaces bei Wireshark zur auswahl haben, stellen Sie sicher, dass sie Wireshark als Administrator ausgeführt haben.

Sofern das nicht weiterhilft, installieren Sie win10pcap nach unter http://www.win10pcap.org.

Wireshark

  1. Starten Sie einen Capture auf Ihrem Ethernet Interface
  2. Pingen Sie das Target Hostseitig
  3. Finden Sie die zugehörigen Transfers innerhalb Wireshark
    1. Um für einen Typ Frame / Packet handelt es sich beim Ping?
  4. Führen Sie nun den Ping von Targetseite aus
    1. Was hat im Capture geändert?