Appearance
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:
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
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
Markieren Sie das Wort
eth1
.Selektieren Sie alle Vorkommnisse via wiederholtem Verwenden von
CTRL+D
.Ersetzen Sie die Selektion mit
eth0
.
Multicursor
- Kommentieren Sie nun alle Zeilen im File aus:
- Gehen Sie mit dem Cursor an den Anfang des Files
- Verwenden Sie
CTRL + ALT + Down
(Linux:SHIFT + ALT + Down
) wiederholt bis Sie für jede Zeile einen Cursor erstellt haben. - 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 LF
und 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.
System | Interface | IP / Subnet |
---|---|---|
Host | Ethernet Adapter | 192.168.50.2/24 |
Target | eth1 (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.
- Öffnen Sie den Windows Explorer (pro Tipp:
Windows Key + E
) - Rechtsklick auf
Netzwerk
undNetzlaufwerk verbinden ...
- Ordner ist
\\192.168.50.1\homes
- Box
Verbindung mit anderen Anmeldeinformatiuonen herstellen
- Wählen Sie
Weitere Optionen
undAnderes Konto
Hier geben Sie die mit
smbpasswd
eingegebenen Credentials ein.- Öffnen Sie den Windows Explorer (pro Tipp:
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.
Starten Sie vscode
Öffnen Sie das Netzlaufwerk
Erstellen Sie ein neues File
hello.py
.py#!/usr/bin/python3 def main(): print("hello world!") if __name__ == '__main__': main()
Installieren Sie allfällig von VS Code vorgeschlagene Extensions to Python.
Fürhen Sie in einem targetseitigen Terminal das Programm aus
bashpython3 hello.py
Ausführbare Dateien
Sie können
hello.py
auch direkt ausführbar machen.bashchmod 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.
- Installieren Sie
git
von der Git SCM Webseite. - Stellen Sie sicher auch die BASH zu selektieren
- Starten Sie vscode neu.
- Im Terminal wählen Sie nun mit
Select default Shell
die BASH aus. - Führen Sie nun aus der BASH
ssh
aus ...bash... und loggen Sie sich in das Target ein.ssh pi@192.168.50.1
- 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.
- Starten Sie einen Capture auf Ihrem Ethernet Interface
- Pingen Sie das Target Hostseitig
- Finden Sie die zugehörigen Transfers innerhalb Wireshark
- Um für einen Typ Frame / Packet handelt es sich beim Ping?
- Führen Sie nun den Ping von Targetseite aus
- Was hat im Capture geändert?