Spørsmål:
Vis IP-adresse på tegnbasert LCD
vvy
2014-05-14 21:22:05 UTC
view on stackexchange narkive permalink

Jeg trenger å vite IP-adressen til bringebær-pien min. Jeg må gjøre dette med en Character LCD-skjerm. Så her er hva jeg har gjort så langt.

Jeg kan vise tekst på en HD44780-basert 16x2 LCD koblet til Raspberry-Pi som vist her.

Bruker også kitt hvis jeg gjør vertsnavn -I Jeg får min lokale IP som 192.168.1.4

Nå tror jeg at jeg må utløse / kjør denne kommandoen 'vertsnavn -I' ved hjelp av python, grip streng for resultat (som vil være IP), og send den til LCD-skjermen min. MerOver jeg trenger å gjøre dette en gang etter hver DHCP-adressetildeling (jeg vet ikke det eksakte / korrekte navnet på denne tingen). Nå er problemet at min kunnskap om Linux (raspian) er begrenset. Jeg leste på internett om CRON JOB, men er usikker på hvordan jeg skal gjøre dette.

Hjelp meg gjerne !!

Annet enn utskriften til LCD-delen av dette spørsmålet, ville dette sannsynligvis passe bedre på [unix.se], da det er et bredere, * nix-fokusert nettsted, i motsetning til dette nettstedet, som er spesielt fokusert på Raspberry Pi- spesifikke problemer.
@RPiAwesomeness Jeg vil heve et * migrasjon * flagg da. Takk.
Ikke noe problem! Ikke føl at vi ikke vil ha deg og spørsmålene dine her, det er bare det at RPi.SE er et veldig fokusert samfunn, for problemer som bare oppstår på Raspberry Pi (GPIO, RPi Cam, ting som fungerer på et normalt system - men ikke på RPi osv.)
@RPiAwesomeness Jeg ser begrunnelsen for pi-exchange mer tydelig nå, det er veldig fokusert på Pi-relatert problem. Selv når jeg leter etter * python-kommando utfører * og * linux dhcp * får jeg resultater fra * stackoverflow * og * Unix og Linux *. Så jeg har hevet et migrasjonsflagg. For det første kom jeg til denne utvekslingen. Nettstedet og tenkte at noen allerede hadde gjort noe slikt. Hvilket bedre sted enn Pi-utvekslingsside. Jeg tror jeg vil komme tilbake med resultater til * her * igjen for * referanse * formål.
Tre svar:
lenik
2014-05-14 22:06:48 UTC
view on stackexchange narkive permalink

cron-jobb er enkel, skriv bare crontab -e så får du sjansen til å redigere cron-jobbtabellen. Hvis du vil at skriptet skal kjøre hvert 10. minutt, legger du bare til:

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

where /home/pi/whatever.py er skriptet ditt som kjører vertsnavn -I og viser resultatet på LCD-panelet.

(+1) Det fungerer! Jeg reduserte tidsperioden ytterligere til 2 minutter. Og jeg søker fremdeles etter den DHCP-baserte løsningen / tilnærmingen.
lenik
2014-05-16 10:04:14 UTC
view on stackexchange narkive permalink

her er forklaring på DHCP-delen.

Det er to kataloger i systemet ditt:

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

som inneholder skript som skal kjøres når dhcp konfigurasjon endres. her er et eksempelskript (mest sannsynlig at du har en lignende under navnet feilsøking i disse katalogene):

  ## Formålet med dette skriptet er bare å vise variabler som er # tilgjengelige for alle skriptene i denne katalogen. Alle disse skriptene # kalles fra / etc / dhcp3 / dhclient-script, som eksporterer alle # variablene som er vist før. Hvis du vil feilsøke et problem med DHCP # -oppsettet ditt, kan du aktivere dette skriptet og se på # /tmp/dhclient-script.debug.# For å aktivere dette skriptet, sett følgende variabel til "ja" RUN = "nei" hvis ["$ RUN" = "ja"]; deretter ekko $ (dato): angi $ {0% / *}, dumpingvariabler. \ >> /tmp/dhclient-script.debug # loop over de 4 mulige prefiksene: (tom), cur_, ​​new_, old_ for prefiks i '' 'cur_' 'new_' 'old_'; gjøre # sløyfe over DHCP variablene sendes til dhclient-script for basevar i grunnen grensesnitt medium alias_ip_address \ ip_address host_name network_number subnet_mask \ broadcast_address rutere static_routes \ rfc3442_classless_static_routes \ domene_navn 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 = "$ {prefix} $ {basevar}" # viser bare variabler med verdier angitt hvis [-n "$ {! var}"]; deretter ekko "$ var = '$ {! var}'" >> /tmp/dhclient-script.debug fi done done echo '---------------------- ---- '>> /tmp/dhclient-script.debugfi  

du kan kopiere dette skriptet under navnet du liker, aktivere det ved å sette RUN = "yes" og ha det gøy med tilgjengelige variabler (kjør det en gang for å se utdataene i / tmp / dhclient-script.debug ).

eller kanskje bare ignorere variablene og bruk vertsnavn -I tilnærming som før.

uansett , hvis du trenger en manual for disse skriptene, sjekk dette.

RÅTT ! Jeg tror dette er den ideelle tilnærmingen. Et spørsmål foreløpig. Da jeg la til cron-jobben (for å utføre python-skriptet mitt) i forrige tilnærming, måtte jeg bruke prefikset * sudo * (** sudo python -u ip_disp_clcd.py **). Men i denne tilnærmingen, som du fortalte, trenger jeg bare å kopiere python-skriptet mitt til katalogen (angivelig * dhclient-exit-hooks.d *), og det vil fungere. Vil det ikke kreve * sudo * -styrken som den forrige gjorde ??
@vvy hvorfor prøver du ikke å se?
Det er det første på TODO-listen min, jeg vil teste den så snart jeg mottar min nye R-Pi. Jeg har sendt inn min forrige R-Pi til høgskolen [sjekk ut dette øyeblikket] (https://drive.google.com/file/d/0B_OcX1Wr8s5WbEh2T0FMUXdqNUk/edit?usp=sharing).
user3281907
2014-05-22 02:32:06 UTC
view on stackexchange narkive permalink

Jeg hadde et lignende problem. Selv om du allerede har svaret for de som leter etter noe som gjør susen, her er det jeg skrev med python og en PifaceCAD LCD

  #! / Usr / bin / env python "" "Get's the lokal IPv4-adresse og vises for brukerenKrever: * ifconfig * grep * awk "" "import subprocessimport pifacecad_VERSION = '0.1'def get_ipv4 (): ip = subprocess.check_output (' ifconfig | grep broadcast | awk \ '{print $ 2} \ '', shell = True) .decode ('utf-8') print ('IP is: {}'. format (ip)) returner ipdef main (cad = None): hvis ikke cad: cad = pifacecad.PiFaceCad ( ) cad.lcd.blink_off () cad.lcd.cursor_off () cad.lcd.clear () cad.lcd.home () cad.lcd.write ('IPv4 Address:') 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 ())  

Som du ser, brukte jeg ikke 'vertsnavn -I' fordi jeg hadde begrenset suksess med det, av en eller annen grunn, selv om det virker mer komplisert, fungerte ifconfig / grep / awk-løsningen bedre for meg.



Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...