Support trick: Motta IP-adressene til eksterne datamaskiner automatisk

Jeg har installert Linux på datamaskiner til pårørende med veldig, veldig begrenset datakunnskaper. Med Linux er de trygge for skadelig programvare fra Windows og nesten alltid kan jeg støtte dem (inkludert å gjøre eksterne sikkerhetskopier) uten å forlate hjemmet og uten noen anstrengelser fra deres side. I praksis skjer dette bare hvis når onkel Franco ber om hjelp, jeg kan få den nåværende IP-adressen til datamaskinen hans uten å spørre ham (hvis du ikke vet hva slike adresser er, se tekstboksen til høyre)!

Det er et problem, fordi alle disse menneskene har billige Internett-kontoer med dynamiske IPv4-adresser. Noen av de involverte Internett-leverandørene tilordner adressene tilfeldig hvert par timer, selv om kunden ikke koblet fra. For å gjøre ting verre, mottar jeg ofte disse hjelpeforespørslene når vi alle er borte fra datamaskinene våre, kanskje hos noen andre. Jeg må kunne svare: "Jada, onkel, neste gang du slår på datamaskinen (som kan være to dager senere ...) skal jeg ta vare på det, ikke bry deg om det lenger."

For å håndtere disse situasjonene, må jeg motta IP-adressene til disse datamaskinene, hver gang de bytter eller datamaskinene slås på, fordi:

  • Alle involverte datamaskiner (inkludert min) har dynamiske IP-adresser. Ja, teoretisk sett kunne jeg ha satt opp en dynamisk DNS-tjeneste, men hvorfor gjøre det hvis det er en enklere måte?
  • Ingen av disse datamaskinene er virkelig under min kontroll; noen er bærbare datamaskiner som blir flyttet rundt hver dag. Jeg føler meg bedre hvis disse maskinene ikke kan koble seg til hverandre uten at noen manuelt skriver inn et passord.
  • Fremfor alt handler dette ikke bare om sikkerhetskopier eller automatiske, uten tilsyn. Jeg bruker trikset nedenfor for å utføre forskjellige støttearbeider hver gang. Men å kjenne IP-adressen til en venns datamaskin gjør automatisk mange andre aktiviteter litt enklere, fra spill til å jobbe sammen online, uten å bruke tredjeparts tjenester

Hvordan kan du få disse adressene?

I praksis konfigurerte jeg hver datamaskin jeg trenger for å hjelpe:

    1. en ny e-postadresse, bare for dette formålet (" " i koden nedenfor), for hver "kunde"
    2. en tilsvarende konfigurasjonsfil for Mutt-e-postklienten.
    3. et skript som hvert par minutter finner hva den nåværende IP-adressen er, og sender den til meg via e-post

      Trinn 1 er nødvendig for ikke å forstyrre folks virkelige e-post, og for å unngå problemer hvis de endrer tilsvarende passord. Trinn 2 betyr å forberede en Mutt-konfigurasjonsfil ($ RCFILE i skriptet) som inneholder akkurat det som er nødvendig for å sende e-post fra kommandolinjen, med riktig e-postadresse:

       set smtp_url = "smtp: // postbeskyttet /" 
       set smtp_pass = "the_password_for_that_account" 
       set realname = "IP-adresse monitoren til onkel Joe" 
       sett fra = " " 
       sett envelope_from = ja 
       sett kopi = ja 
       sett rekord = /tmp/mutt_send_ip_address.`/bin/date +% Y.% m` 
       sett utsatt = / tmp / mutt_ip_postponed 
       ikke angitt bruk_domene 
       sett vertsnavn = eksempel.com 
      Vær oppmerksom på at nettadressen i smtp_url må være hva uncle Joe 'ISP erklærer som "utgående e-post" -server! Alternativet "post" setter i stedet Mutt-arkivpostkassen, som kan være nyttig for feilsøking. Alle alternativene er grundig forklart i Mutt Manual, så jeg vil ikke komme nærmere inn på det. Bare husk at når du har byttet ut riktige verdier i filen over, for å prøve å sende en e-post med den, for å være sikker på at den fungerer!

      Dette er i stedet shell-skriptet som gjør den virkelige jobben:

       1 #! / Bin / bash 
       2 
       3 
       4 IPFILE = / tmp / my_ip_address 
       5 RCFILE = "$ HOME / Documents / mutt_send_ip / muttrc_ip" 
       6 $ LOG = / tmp / send_ip_log 
       7 hvis ! -f "$ IPFILE"; 
       8 da 
       9 trykk på $ IPFILE 
       10 fi 
       11 
       12 PREVIOUS_IP = `cat $ IPFILE` 
       13 CURRENT_IP = `w3m -no-cookie-dump http://whatismyip.com | sed -n 's / ^ \ (0-9 \. \ + \) $ / \ 1 / p'` 
       14 
       15 hvis "$ PREVIOUS_IP"! = "$ CURRENT_IP" 
       16 da 
       17 ekko -n `dato` >> $ LOGG 
       18 ekko "IP-adresse endret fra $ PREVIOUS_IP TIL $ CURRENT_IP" >> $ LOGG 
       19 rm -f $ IPFILE 
       20 ekko $ CURRENT_IP> $ IPFILE 
       21 mutt -F $ RCFILE -s 'Ny IP-adresse er' $ CURRENT_IP $ EMAIL <$ IPFILE 
       22 fi 

      Linje 3 er e-postadressen som må motta varslene. Linje 13 gjør litt skraping for å få den nåværende IP-adressen. I utgangspunktet spør den med tekstleseren w3m en webtjeneste som gir denne informasjonen. Deretter, ved å bruke sed-programmet, trekker det ut fra den websiden bare linjen som består av fire tall atskilt med prikker. For å se hvordan det fungerer i detalj, åpner du http://whatismyip.com i nettleseren din og kjører deretter w3m -no-cookie-dump http://whatismyip.com | sed -n 's / ^ \ (0-9 \. \ + \) $ / \ 1 / p' ved en ledetekst.

      Hvis $ CURRENT_IP er forskjellig fra innholdet i $ IPFILE, omskriver skriptet den filen og logger hendelsen til $ LOG. Deretter ber den Mutt (linje 21) sende en e-post med emnet " Ny IP-adresse er $ CURRENT_IP " til $ EMAIL ved å bruke konfigurasjonen som er lagret i $ RCFILE. En cron-jobb som;

       * / 2 * * * * / absolutt / sti / til / skriptet 

      vil kjøre skriptet hvert andre minutt, og informere $ EMAIL raskt når adressen endres.

      Nå skal jeg være slem ...

      Som det er har manuset to utgaver. En er teknisk, en er ikke. Hvilke problemer, spør du? Vel, jeg lar dem finne dem som ... en øvelse for leseren, for å sjekke om du var oppmerksom (men ikke bekymre deg, jeg vil legge dem ut i kommentarene uansett!).

      © Copyright 2021 | pepebotifarra.com