Uvod v računalništvo z RPi

Bash naloge

  1. Znašli smo se v precej čudni situaciji, ko bi radi dostopali do spleta, pa ne moremo. Vaša naloga je, da s trenutnim znanjem ukazov najdete ustrezen IP naslov vašega prenosnika in ga pripnete na konec že znane datoteke cmdline.txt. Omenjena besedilna datoteka sme biti spremenjena zgolj pri predelu, ki smo ga v začetku današnjega srečanja dodali sami, saj z napačnim urejanjem lahko povzročite nekaj nevšečnosti pri zagonu mini računalnika. Pri iskanju datoteke cmdline.txt je priporočljivo, da se premaknete v korensko mapo datotečnega sistema.
    Predel, ki smo ga zapisali v začetku mora biti v formatu:
    ip=169.254.39.71::[IP vašega prenosnika]
    (Primer: ip=169.254.39.71::169.254.53.169)
    1. Najprej preverimo IP prenosnika v ukazni vrstici z ukazom
      ipconfig /all
      (na Windowsih) ali
      ifconfig -a
      (na Linuxu).
    2. Na RPi preiščemo celoten sistem, saj naz zanima kje se nahaja datoteka cmdline.txt. To storimo z ukazom
      find / -name cmdline.txt 2>/dev/null/
    3. Ugotovimo, da se datoteka nahaja v /boot/cmdline.txt ter jo ustrezno uredimo z ukazom
      sudo nano cmdline.txt
  2. Bliža se božič in Božiček bo pričel raznašati darila otrokom. Ker je že zelo star in stvari rad pozablja mu moramo pomagati tako, da mu na kratko predstavimo nekaj (statističnih) regij naše države, saj se bo nato spomnil kje je in kam mora iti. Zaradi preglednosti si naredite novo mapo imenovano vaje, nato pa mu bomo posvetili ločeno mapo znotraj ravnokar izdelane mape. Z enim ukazom naredite tri podmape Gorenjska, Pomurska, Spodnjeposavska v mapi bozicek, ki se mora nahajati v prej ustvarjeni mapi vaje. Mape morajo biti strukturirane tako:
    |- vaje/
    | - bozicek/
    | - Gorenjska/
    | - Pomurska/
    | - Spodnjeposavska/
    Glavno mapo "bozicek" in tri podmape naredimo z ukazom:
    mkdir -p bozicek/Gorenjska bozicek/Pomurska bozicek/Spodnjeposavska
    Opomba: Tipke [TAB] v tem primeru ne moremo uporabiti za hitrejši izpis mape "bozicek", saj le-ta še ni ustvarjena.
  3. V prejšnji nalogi smo božičku pomagali priti zgolj do treh regij, še vedno pa mu nismo podali vseh ključnih podatkov na podlagi katerih bi se lahko spomnil kam mora iti. Podali mu bomo še podatke o nekaj občinah, ki se nahajajo v določeni regiji. Znotraj mape bozicek ustvarite prazno besedilno datoteko obcine.txt in jo skopirajte v vsako podmapo, nato pa izbrišite (zgolj iz trenutne mape). V vsako datoteko obcine.txt posamezne regije zapišite po 3 občine, ki se nahajajo v določeni regiji (seveda se jih lahko tudi izmislite). Občine morajo biti zapisane vsaka v svoji vrstici brez kakršnihkoli ločil. Primer datoteke obcine.txt v mapi regije Obalno-kraška:
    Piran
    Izola
    Koper
    1. touch obcine.txt
    2. cp obcine.txt Gorenjska/
    3. cp obcine.txt Pomurska/
    4. cp obcine.txt Spodnjeposavska/
    5. nano Gorenjska/obcine.txt
      in vnesemo vrednosti
      Bled Kranj Tržič
      vsako v svojo vrsto
    6. nano Pomurska/obcine.txt
      in vnesemo vrednosti
      Apače Beltinci Gornja Radgona
      vsako v svojo vrsto
    7. nano Spodnjeposavska/obcine.txt
      in vnesemo vrednosti
      Brežice Krško Sevnica
      vsako v svojo vrsto
    Opomba: Vnos teksta v vse datoteke bi lahko opravili z ukazom
    echo
    .
  4. Ker se božiček ne spozna najbolje na tehnologijo, mu bo pri iskanju potrebno pomagati.
    1. Ustvarite novega uporabnika z imenom "uporabnik" (geslo je poljubno) ter v njegovo domačo mapo premaknite celotno mapo vaje, ki smo jo ustvarili v drugi nalogi.
      1. sudo adduser uporabnik
      2. sudo mv ~/vaje/ /home/uporabnik
      Opomba: Ukaz
      sudo
      uporabite le kadar je to zares potrebno.
    2. Ker smo naše vaje “podarili” novemu uporabniku, se v konzolo najprej prijavite kot “uporabnik” (v programu PuTTY lahko podvojite sejo, da se ne boste potrebovali vsakič znova prijavljati z drugim uporabnikom). Mapo bozicek, ki ste jo ustvarili v eni izmed prejšnjih nalog skopirajte v vašo domačo mapo.
      cp -r vaje/bozicek/ .
      Opomba: Pred izvajanjem zgornjega ukaza se premaknite v domačo mapo.
    3. Izpišite vse mape in datoteke, ki se nahajajo v mapi bozicek vključno z izhodiščno mapo. Vse mape morajo biti izpisane vsaka v svoji vrsti v formatu absolutne poti. Primer izpisa:
      /home/uporabnik/bozicek/
      /home/uporabnik/bozicek/Obalno-kraška
      /home/uporabnik/bozicek/Obalno-kraška/obcine.txt
      find ~/bozicek/
    4. Za hitrejši dostop do indeksa mape zgornji izpis shranite v datoteko seznam.txt, ki naj se nahaja v mapi bozicek.
      find ~/bozicek/ > seznam.txt
      Opomba: Pred izvajanjem zgornjega ukaza se premaknite v mapo bozicek.
    5. Naredite seznam vseh občin in jih zapišite v datoteko seznam_obcin.txt.
      cat */obcine.txt > seznam_obcin.txt
      Opomba: Pred izvajanjem zgornjega ukaza se premaknite v mapo bozicek.
    6. Seznam občin sedaj uredite (razvrstite) po abecedi in jih ponovno zapišite v datoteko seznam_obcin.txt (prepišite prej ustvarjeno datoteko).
      cat */obcine.txt | sort > seznam_obcin.txt
      Opomba: Pred izvajanjem zgornjega ukaza se premaknite v mapo bozicek.
    7. Izpišite vse podmape mape bozicek.
      ls -d */
      Opomba: Pred izvajanjem zgornjega ukaza se premaknite v mapo bozicek.
  5. Zapustite sejo uporabnika “uporabnik” in se vrnite nazaj na sejo uporabnika “pi”. Vaša naloga je, da ustvarite prav svoj uporabniški račun, katerega ime naj bo vaše ime ali priimek ali vaše ime in priimek skupaj (brez presledkov, šumnikov, ostalih posebnih znakov; uporabite le črke angleške abecede). Ne odpirajte še nove seje z ravno ustvarjenim up. rač.
    1. Ustvarite uporabniško skupino z imenom "skupina" ter vanjo dodajte vse uporabnike, ki ste jih doslej uporabljali ter ustvarili (to sta "pi" in "uporabnik").
      1. Najprej ustvarimo skupino z ukazom
        sudo addgroup skupina
      2. Ter dodamo uporabnika "pi":
        sudo usermod -aG skupina pi
      3. In uporabnika "uporabnik":
        sudo usermod -aG skupina uporabnik
    2. Sedaj ustvarite vaš uporabniški račun.
      sudo adduser jan
      Opomba: Uporabniško ime "jan" nadomestite z vašim poljubnim imenom.
    3. Vašega novega uporabnika dodajte v skupino “skupina”, ki smo jo ustvarili pred kratkim.
      sudo usermod -aG skupina jan
      Opomba: Uporabniško ime "jan" nadomestite z vašim poljubnim imenom.
    4. Prijavite se v vaš novi uporabniški račun (podvojite sejo ter se prijavite) in v domači mapi ustvarite mapo z imenom vaje. Sejo ugasnite (odjavite se iz uporabniškega računa).
      mkdir vaje
      Opomba: Mapo morate ustvariti v domači mapi vašega novega uporabniškega računa.
    5. Prijavite se v vaš novi uporabniški račun in se premaknite v mapo /home/ ter ustvarite novo mapo z imenom skupno. Ne gre? Vašemu novemu uporabniku omogočite poganjanje ukaza 'sudo' ter nato za ustvarjanje mape uporabite magični ukaz. Pozorno in glasno preberite sporočilo, ki vam ga je poslal sistem. To je tisto o čemer smo govorili nedavno.
      sudo mkdir skupno
      Opomba: Pred izvajanjem ukaza se morate premakniti v mapo /home/.
    6. Mapi skupno uredite lastništvo tako, da bo vaš novi uporabnik lastnik mape, videli, pisali in izvajali stvari v njej pa bodo lahko vsi v skupini skupina in nihče drug.
      1. Mapi določimo lastnika in skupino z ukazom
        sudo chown jan:skupina skupno/
      2. Ostalim uporabnikom, ki niso v naši skupini "skupina" odvzamemo vse pravice:
        chmod o-rwx skupno/
      3. Uporabnikom, ki so v skupini dovolimo pisanje v mapo:
        chmod g+w skupno/
      Po izvedbi vseh ukazov bi mapa "skupno" morala imeti enake pravice, kot so prikazane na spodnji sliki:
    7. Sejo s trenutnim uporabnikom ohranite ter podvojite sejo in se prijavite kot uporabnik “uporabnik”. Iz domače mape izbrišite mapo bozicek. Mapo vaje “premaknite” v prej ustvarjeno mapo "skupno".
      1. rm -r bozicek/
      2. Mape vaje ni mogoče premakniti zato, ker smo prej naredili veliko napako – z ukazom
        sudo
        smo prenesli datoteko v mapo uporabnika, ki nima skrbniških pravic, zato jih lahko z uporabnikom zgolj kopiramo:
        cp -r vaje/ /home/skupno/
    8. Ravnokar premaknjeni mapi uredite pravice z uporabnikom "uporabnik" tako, da bodo vanjo lahko pisali tudi uporabniki skupine “skupina”.
      1. Uredimo pravice mape "vaje" in vseh njenih podmap z ukazom
        chown -R uporabnik:skupina vaje/
      2. Uporabnikom v skupini omogočimo pisanje v mapo:
        chmod g+w vaje/
    9. Premaknite se na sejo kjer ste prijavljeni z uporabnikom, ki je poimenovan po vašem imenu/priimku in v podmapi "vaje" mape "skupno" (absolutna pot:
      /home/skupno/vaje/
      ) ustvarite datoteko z imenom povezava.txt in vanjo prilepite naslov https://www.dropbox.com/s/4d12gjr8viwdttm/python.tar.gz. Ker uporabljate uporabniški račun z magičnimi pravicami, izbrišite še mapo vaje iz domače mape uporabnika "uporabnik". Premaknite se na sejo omenjenega uporabnika in preverite, če je mapa zares izbrisana, nato pa le-to sejo ugasnite.
      1. Z urejevalnikom nano ustvarimo datoteko in vanjo zapišemo zgornjo povezavo
        nano povezava.txt
      2. Uporabniku "uporabnik" moramo mapo "vaje" izbrisati s pomočjo ukaza
        sudo
        , saj sicer nimamo dovolj pravic:
        sudo rm -r /home/uporabnik/vaje/
    10. Mapo "vaje", ki ste jo ustvarili v eni izmed prejšnjih nalog v domači mapi vašega novega uporabnika, izbrišite, nato pa simbolično povežite mapo
      /home/skupno/vaje/
      na končno lokacijo imenovano "vaje" v domačo mapo vašega novega uporabnika.
      1. rm -r vaje/
      2. ln -s /home/skupno/vaje/ vaje
      Opomba: Pred izvajanjem zgornjegih ukazov se premaknite v domačo mapo vašega novega uporabnika. Prvi argument ukaza
      ln
      s pararametrom
      -s
      je končna lokacija preko katere dostopamo z drugim argumentom.
  6. V tej nalogi napišite ukaz v eni vrstici, brez, da posredujete prebrane podatke neposredno na katerikoli drug ukaz v novi vrstici. Najprej s prvim ukazom preberite datoteko povezava.txt, ki ste jo ustvarili v zadnjem koraku prejšnje naloge in posredujte prebrano kot argument drugemu ukazu, ki omogoča prenos datotek.
    cat povezava.txt | wget -i -
    Opomba: Pred izvedbo zgornjega ukaza se premaknite v mapo "vaje", ki ste jo simbolično povezali v prejšnji nalogi. Ukazu
    wget
    z minusom na koncu ukaza posredujemo vsebino, ki jo je vrnil ukaz
    cat
    .
  7. Po uspešnem zaključku prejšnje naloge bi morali prenesti arhivsko datoteko. V kolikor se to ni zgodilo ponovno rešite prejšnjo nalogo, sicer pa razpakirajte njeno vsebino v “podmapo” vaje v vaši domači mapi poleg datoteke povezava.txt. Razširjene datoteke bomo potrebovali za nadaljnje delo.
    tar -xzf python.tar.gz
    Opomba: Za pravilno izvedbo ukaza se morate nahajati v mapi, kjer se nahaja arhivska mapa z imenom v argumentu.