Frage:
Anzeige der IP-Adresse auf dem zeichenbasierten LCD
vvy
2014-05-14 21:22:05 UTC
view on stackexchange narkive permalink

Ich muss die IP-Adresse meines Himbeer-Pi kennen. Ich muss dies mit einem Zeichen-LCD-Display tun. Folgendes habe ich bisher getan:

Ich kann Text auf einem HD44780-basierten 16x2-LCD anzeigen, das an meinen Raspberry-Pi angeschlossen ist, wie hier gezeigt.

Ich verwende auch Kitt, wenn ich Hostname -I mache. Ich erhalte meine lokale IP als 192.168.1.4

Jetzt denke ich, ich muss feuern / Führen Sie diesen Befehl 'Hostname -I' mit Python aus, greifen Sie zum Ergebnistext (der die IP sein wird) und übergeben Sie ihn an meinen LCD. MehrÜber muss ich dies einmal nach jeder DHCP-Adresszuweisung tun (ich kenne den genauen / korrekten Namen dieser Sache nicht). Jetzt ist das Problem, dass meine Linux-Kenntnisse (Raspian) begrenzt sind. Ich habe im Internet über CRON JOB gelesen, bin mir aber nicht sicher, wie ich das machen soll.

Bitte helfen Sie mir!

Abgesehen vom Drucken auf den LCD-Teil dieser Frage würde dies wahrscheinlich besser auf [unix.se] passen, da dies eine breitere, * nix-fokussierte Site ist, im Gegensatz zu dieser Site, die sich speziell auf Raspberry Pi konzentriert. spezifische Fragen.
@RPiAwesomeness Ich werde dann ein * Migrations * -Flag setzen. Vielen Dank.
Kein Problem! Bitte haben Sie nicht das Gefühl, dass wir Sie und Ihre Fragen hier nicht wollen. RPi.SE ist nur eine sehr fokussierte Community für Probleme, die nur auf dem Raspberry Pi auftreten (GPIO, RPi Cam, Dinge, die auf einem normalen System funktionieren - aber nicht auf dem RPi usw.)
@RPiAwesomeness Ich sehe die Gründe für den Pi-Austausch jetzt klarer, da er sich sehr auf Pi-bezogene Themen konzentriert. Selbst wenn ich nach * python command execute * und * linux dhcp * suche, erhalte ich Ergebnisse von * stackoverflow * und * Unix und Linux *. Also habe ich eine Migrationsflagge gehisst. Zunächst kam ich zu diesem Austausch. Ich dachte, dass jemand so etwas schon getan haben könnte. Welchen besseren Ort als Pi-Exchange-Site. Ich denke, ich werde mit Ergebnissen zu * hier * zurückkehren, um * Referenz * zu dienen.
Drei antworten:
lenik
2014-05-14 22:06:48 UTC
view on stackexchange narkive permalink

cron job ist einfach, geben Sie einfach crontab -e ein und Sie haben die Möglichkeit, Ihre cron job-Tabelle zu bearbeiten. Wenn Ihr Skript alle 10 Minuten ausgeführt werden soll, fügen Sie einfach Folgendes hinzu:

  * / 10 * * * * /home/pi/whatever.py  

where /home/pi/whatever.py ist Ihr Skript, das Hostname -I ausführt und das Ergebnis auf Ihrem LCD-Bildschirm anzeigt.

(+1) Es funktioniert! Ich habe den Zeitraum weiter auf 2 Minuten reduziert. Und ich bin immer noch auf der Suche nach der DHCP-basierten Lösung / dem DHCP-basierten Ansatz.
lenik
2014-05-16 10:04:14 UTC
view on stackexchange narkive permalink

Hier ist eine Erklärung zum DHCP-Teil.

In Ihrem System befinden sich zwei Verzeichnisse:

  /etc/dhcp/dhclient-enter-hooks.d/etc/dhcp /dhclient-exit-hooks.d  

, die Skripte enthalten, die ausgeführt werden sollen, wenn sich die Konfiguration von dhcp ändert. Hier ist ein Beispielskript (höchstwahrscheinlich haben Sie ein ähnliches Skript unter dem Namen debug in diesen Verzeichnissen):

  ## Der Zweck dieses Skripts besteht nur darin, das anzuzeigen Variablen, die # für alle Skripte in diesem Verzeichnis verfügbar sind. Alle diese Skripte # werden aus / etc / dhcp3 / dhclient-script aufgerufen, das alle zuvor gezeigten # Variablen exportiert. Wenn Sie ein Problem mit Ihrem DHCP-Setup debuggen möchten, können Sie dieses Skript aktivieren und einen Blick auf # /tmp/dhclient-script.debug werfen. Um dieses Skript zu aktivieren, setzen Sie die folgende Variable auf "yes" RUN = "no". if ["$ RUN" = "yes"]; dann echo $ (Datum): Eingabe von $ {0% / *}, Dumping von Variablen. \ >> /tmp/dhclient-script.debug # Schleife über die 4 möglichen Präfixe: (leer), cur_, ​​new_, old_ für Präfix in '' 'cur_' 'new_' 'old_'; do # Schleife über die DHCP-Variablen dhclient-Skript für basevar in Grund-Schnittstelle Medium geleitet alias_ip_address \ ip_adresse host_name network_number SUBNET_MASK \ broadcast_address Router static_routes \ rfc3442_classless_static_routes \ domain_name domain_search domain_name_servers \ netbios_name_servers netbios_scope \ ntp_servers \ ip6_address ip6_prefix ip6_prefixlen \ dhcp6_domain_search dhcp6_name_servers; do var = "$ {Präfix} $ {basevar}" # zeigt nur Variablen mit festgelegten Werten an, wenn [-n "$ {! var}"]; dann echo "$ var = '$ {! var}'" >> /tmp/dhclient-script.debug fi done done echo '---------------------- ---- '>> /tmp/dhclient-script.debugfi  

Sie können dieses Skript unter dem gewünschten Namen kopieren, es aktivieren, indem Sie RUN = "yes" setzen, und Spaß mit den verfügbaren Variablen haben (einmal ausführen, um die Ausgabe in / zu sehen) tmp / dhclient-script.debug ).

oder ignorieren Sie einfach die Variablen und verwenden Sie den Hostnamen -I -Ansatz wie zuvor.

Wenn Sie ein Handbuch zu diesen Skripten benötigen, überprüfen Sie dies.

GENIAL ! Ich denke, das ist der ideale Ansatz. Eine Frage für jetzt. Als ich den Cron-Job (um mein Python-Skript auszuführen) im vorherigen Ansatz hinzugefügt habe, musste ich das Präfix * sudo * (** sudo python -u ip_disp_clcd.py **) verwenden. Bei diesem Ansatz muss ich jedoch, wie Sie sagten, nur mein Python-Skript in das Verzeichnis kopieren (angeblich * dhclient-exit-hooks.d *), und es wird funktionieren. Benötigt es nicht die * sudo * Kraft wie die vorherige?
@vvy warum versuchst du nicht zu sehen?
Das ist das erste, was auf meiner TODO-Liste steht. Ich werde es testen, sobald ich meinen neuen R-Pi erhalte. Ich habe meinen vorherigen R-Pi beim College eingereicht [check out this snap] (https://drive.google.com/file/d/0B_OcX1Wr8s5WbEh2T0FMUXdqNUk/edit?usp=sharing).
user3281907
2014-05-22 02:32:06 UTC
view on stackexchange narkive permalink

Ich hatte ein ähnliches Problem. Obwohl Sie bereits die Antwort für diejenigen haben, die nach etwas suchen, das den Trick macht, habe ich Folgendes mit Python und einem PifaceCAD-LCD

  #! / Usr / bin / env python geschrieben. "" Get's the lokale IPv4-Adresse und Anzeige für den Benutzer. Anforderungen: * ifconfig * grep * awk "" "subprocessimport importieren pifacecad_VERSION = '0.1'def get_ipv4 (): ip = subprocess.check_output (' ifconfig | grep Broadcast | awk \ '{print $ 2} \ '', shell = True) .decode ('utf-8') print ('IP ist: {}'. format (ip)) return ipdef main (cad = Keine): wenn nicht cad: cad = pifacecad.PiFaceCad ( ) cad.lcd.blink_off () cad.lcd.cursor_off () cad.lcd.clear () cad.lcd.home () cad.lcd.write ('IPv4-Adresse:') ip = get_ipv4 () cad.lcd. set_cursor (0, 1) cad.lcd.write ('' * pifacecad.lcd.LCD_WIDTH) cad.lcd.set_cursor (0, 1) cad.lcd.write (ip) return 0if __name__ == '__main__': sys. exit (main ())  

Wie Sie sehen, habe ich den 'Hostnamen -I' nicht verwendet, weil ich damit nur begrenzten Erfolg hatte. Aus irgendeinem Grund hat die ifconfig / grep / awk-Lösung für mich besser funktioniert, obwohl sie komplexer erscheint.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...