╔══════════════════════════════════════════════════════════════════════════════╗ ║ ███╗ ███╗███████╗███████╗██╗ ██╗ ██████╗ ██████╗ ██████╗ ███████╗ ║ ║ ████╗ ████║██╔════╝██╔════╝██║ ██║██╔════╝██╔═══██╗██╔══██╗██╔════╝ ║ ║ ██╔████╔██║█████╗ ███████╗███████║██║ ██║ ██║██████╔╝█████╗ ║ ║ ██║╚██╔╝██║██╔══╝ ╚════██║██╔══██║██║ ██║ ██║██╔══██╗██╔══╝ ║ ║ ██║ ╚═╝ ██║███████╗███████║██║ ██║╚██████╗╚██████╔╝██║ ██║███████╗ ║ ║ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ║ ║ ║ ║ ~ ~ ~ befehle per funk ~ listener + client ~ ~ ~ ║ ║ ║ ╠══════════════════════════════════════════════════════════════════════════════╣ ║ ║ ║ RELEASE ...: meshcore-remote ║ ║ DATEIEN ...: meshcore-remote.zip (2 Skripte) ║ ║ SPRACHE ...: Python 3 (asyncio) ║ ║ BENÖTIGT ..: pip install meshcore ║ ║ PLATTFORM .: Linux / Debian, MeshCore-Node per USB (seriell) ║ ║ DATUM .....: 04.10.2026 ║ ║ ║ ╠══════════════════════════════════════════════════════════════════════════════╣ ║ ║ ║ ░▒▓█ 01 :: WAS IST DAS? █▓▒░ ║ ║ ║ ║ Zwei kleine Skripte, um einen entfernten Rechner über MeshCore (LoRa-Mesh) ║ ║ fernzusteuern - ganz ohne Internet dazwischen. ║ ║ ║ ║ Listener läuft auf dem Remote-Rechner, an dem ein Node per USB hängt. ║ ║ Client läuft bei dir, schickt den Befehl und setzt die Antwort ║ ║ wieder zu einem Text zusammen. ║ ║ ║ ║ [Client]--USB--[Node] ~ ~ ~ LoRa ~ ~ ~ [Node]--USB--[Listener] ║ ║ ║ ╠══════════════════════════════════════════════════════════════════════════════╣ ║ ║ ║ ░▒▓█ 02 :: meshcore_listener.py █▓▒░ ║ ║ ║ ║ Nimmt Direktnachrichten entgegen und führt Befehle mit dem Präfix ! aus. ║ ║ Läuft auf dem Remote-Rechner. ║ ║ ║ ║ * nur Absender aus der Whitelist (ALLOWED, Public-Key-Präfix mit ║ ║ mindestens 12 Hex-Zeichen), alle anderen werden abgelehnt ║ ║ * feste Befehle: !uptime !load !mem !disk !ip !help ║ ║ * freie Shell per !sh <befehl>, standardmäßig AUS (ENABLE_SHELL) ║ ║ * Antwort in bis zu 3 Teilen à 120 Bytes; Channel-Nachrichten und ║ ║ Nachrichten älter als 5 Minuten werden ignoriert ║ ║ ║ ║ # auf dem Remote-Rechner ║ ║ python3 -m venv ~/meshcore-listener ║ ║ ~/meshcore-listener/bin/pip install meshcore ║ ║ # ALLOWED im Skript auf deinen Node-Key setzen, dann starten: ║ ║ ~/meshcore-listener/bin/python meshcore_listener.py ║ ║ ║ ║ # danach per DM an den Node schicken, z.B.: ║ ║ !help !uptime !disk ║ ║ ║ ╠══════════════════════════════════════════════════════════════════════════════╣ ║ ║ ║ ░▒▓█ 03 :: meshcore_client.py (mc-run) █▓▒░ ║ ║ ║ ║ Schickt einen Befehl an den Listener und gibt die Antwort zusammengesetzt ║ ║ aus, statt als einzelne Häppchen. Läuft bei dir. ║ ║ ║ ║ * sucht den Kontakt per Namen, sendet als Direktnachricht ║ ║ * Shell-Befehle bekommen automatisch !sh davor; beginnt der Text mit !, ║ ║ geht er unverändert raus ║ ║ * wartet auf den ACK; fehlt er, bis zu 2 Wiederholungen (Pfad-Reset, ║ ║ Flood) ║ ║ * setzt die Teile zusammen (erkennt [i/n]-Marker, sonst gilt die Antwort ║ ║ nach --idle Sekunden Stille als fertig) ║ ║ * Exit-Code: 0 komplett, 1 keine Antwort, 2 unvollständig, 3 nicht ║ ║ zugestellt ║ ║ * Optionen (-v, --idle, --timeout, --retries, -p) stehen VOR dem ║ ║ Kontaktnamen ║ ║ ║ ║ # Beispiel: Kontakt "server1" fragt den Plattenplatz ab ║ ║ mc-run server1 '!disk' ║ ║ Ziel: server1 (a1b2c3d4e5f6...) ║ ║ An lokalen Node übergeben: '!disk' ║ ║ ACK erhalten: Befehl ist beim Ziel-Node angekommen. ║ ║ Filesystem Size Used Avail Use% Mounted on ║ ║ /dev/sda2 110G 38G 67G 36% / ║ ║ ║ ║ # weitere Aufrufe ║ ║ mc-run server1 df -h # sendet "!sh df -h" ║ ║ mc-run -v --idle 10 server1 uptime ║ ║ ║ ╠══════════════════════════════════════════════════════════════════════════════╣ ║ ║ ║ ░▒▓█ 04 :: ACHTUNG █▓▒░ ║ ║ ║ ║ * !sh (und damit mc-run server1 df -h) geht nur, wenn im Listener ║ ║ ENABLE_SHELL = True steht. Dann darf jeder Node aus ALLOWED eine freie ║ ║ Shell benutzen - Liste kurz halten. ║ ║ * Der serielle Port gehört immer nur einem Programm: MeshCore Open und ║ ║ meshcli dürfen auf dem Rechner nicht parallel laufen. ║ ║ ║ ╠══════════════════════════════════════════════════════════════════════════════╣ ║ ║ ║ ░▒▓█ 05 :: DOWNLOAD █▓▒░ ║ ║ ║ ║ >> meshcore-remote.zip ║ ║ ║ ║ enthält: ║ ║ meshcore_listener.py Listener, für den Remote-Rechner ║ ║ meshcore_client.py Client (mc-run), für deinen Rechner ║ ║ ║ ╠══════════════════════════════════════════════════════════════════════════════╣ ║ greetz: alle Funker, LoRa-Nerds und Mesh-Betreiber ║ ╚══════════════════════════════════════════════════════════════════════════════╝