Komentojen automatisointi ja skriptaus (h6)

Tämä blogipostaus on osa Haaga-Helian Linux Palvelimet -kurssia, jota Tero Karvinen pitää keväällä 2022.

Kuudennen kurssiviikon tehtävät:

a) Kaikki tehtävät arvioitavaksi. Palauta linkit kaikkiin kotitehtäväraportteihisi. Arviointi tehdään ensisijaisesti tästä linkistä. (tässä alakohdassa ei tarvitse tehdä testejä koneella)

b) Tarkista, että olet viitannut jokaisessa tehtävässä kaikkiin lähteisiin. Esimerkiksi kurssiin, tehtävänantoihin, käyttämiisi toisten kotitehtävärapotteihin, manuaalisivuihin, kotisivuihin… (tässä alakohdassa ei tarvitse tehdä testejä koneella)

c) Uusi komento Linuxiin. Tee uusi komento, joka tulostaa käyttäjälle hyödyllistä tietoa. Kokeile, että komento toimii kaikista hakemistoista ja muillakin käyttäjillä kuin omallasi.

d) Parametreja. Tee skripti, joka ottaa komentoriviparametreja. Esim. ’greetuser Tero’ joka tulostaa ”moi” ja parametrinä olevan nimen, esim ”moi Tero”.

e) Ratkaise valitsemasi vanha arvioitava laboratorioharjoitus tältä kurssilta. (Löytyy DuckDuckGolla, Googlella, linkeistä tältä sivulta tai hakemalla yläreunan hakutoiminnolla). Sovella tarvittaessa tehtäviä tähän toteutukseen sopivaksi, esimerkiksi PHP:n tilalta voi tehdä vastaavan Pythonilla; Flaskin tilalta käyttää Djangoa. Tai jättää pois jonkin epärelevantin kohdan.

f) Tee uusi tyhjä virtuaalikone (tai oikea kone) viimeisen kerran arvioitavaa labraa varten. Koneella ei saa olla luottamuksellisia tietoja. Kannattaa tehdä koneelle tarpeeksi iso virtuaalinen levy ja laittaa riittävästi RAM:ia. Guest additions saa olla asennettuna. Koneella ei saa olla muita asetuksia ennakkoon, eikä ylimääräisiä asennettuja ohjelmia.

g) (vapaaehtoinen) Käytä Linuxia kurssin ulkopuolella.

h) (vapaaehtoinen) Varaa kalenteristasi viikon välein aikoja Linux-harjoitteluun kurssin jälkeen.”

(Karvinen 2022a)

a) & b) Kurssin tehtäväraportit valmiiksi

Olen täydentänyt osaa Linux-palvelimet -kurssin viikottaisista tehtäväraporteistani. Kaikki kurssin raporttini on listattu tähän:

c) Uuden komennon tekeminen Linuxiin

Kurssin luennolla oli käyty läpi esimerkkejä, miten bash-tiedoston (.sh-pääte) tekemällä ja tiedoston ajamalla Linuxissa voi tehdä uusia komentoja. Niinpä tein Microlla tiedoston hello.sh, joka kertoo käyttäjän, kansion, jossa käyttäjä on,  ilmoittaa päiväyksen ja kellonajan ja lopuksi tervehtii:

$ micro hello.sh

Microlla kirjoitin tiedostoon hello.sh seuraavat komennot:

#!/usr/bin/bash | Määrittää, että komento ajetaan Bashilla.
whoami
pwd
date
echo ”Hello there!”

Tallensin tiedoston Ctrl + S ja suljin Micron Ctrl + Q. Tämän jälkeen ajoin juuri tehdyn komennon:

$ bash hello.sh

Komennolla

$ chmod ugo+x hello.sh

annoin luvan suorittaa hello-komento kaikilla käyttäjillä. Lopuksi kopioin vielä tiedoston kansioon /usr/local/bin/, jotta kaikkien käyttäjien on mahdollista käyttää uutta komentoa (Söder 12.3.2022).

Lopuksi siirryin juureen ja kokeilin, toimiiko komento myös muussa kansiossa kuin siinä, jossa komennon tein. Komennolla

$ bash hello.sh

saan tosiaan ne tiedot, mitä pitikin, ja komento siis toimi odotetusti.

d) Parametrejä käyttävän skriptin tekeminen

Kurssin luennolla oli tutustuttu parametrien käyttämiseen osana komentoja. Niiden tietojen ja edellisen tehtävän c) pohjalta tavoitteenani oli tehdä komento greetuser, joka tervehtisi käyttäjää.

Tein ensin greetuser-nimisen tiedoston komennolla

$ micro greetuser

Lisäsin tiedostoon ensimmäiselle riville tiedon, että tiedoston sisältö on tarkoitus tulkita bashiksi, ja kirjoitin haluamani toiminnallisuuden komennolle:

#!/usr/bin/bash
echo ”Hei Susanna!”

Tässä vaiheessa testasin, että komento toimii kiinteällä tekstillä ilman parametrejä, ja komennolla

$ bash greetuser

sain tosiaan Microlla tiedostoon kirjoitetun tekstin ”Hei Susanna!” tulosteena terminaaliin:

Tähän mennessä komento toimi halutusti. Seuraavaksi avasin taas greetuser-tiedoston komennolla

$ micro greetuser

ja vaihdoin tervehdystekstiin Susanna-nimen tilalle parametrin $1. Tallensin (Ctrl + S) tiedoston ja suljin (Ctrl + Q) sen.

Testasin nyt greetuser-komentoa yhdellä parametrillä, ja annoin tervehdittävän käyttäjän nimeksi Ville. Nyt komennolla

$ bash greetuser Ville

terminaaliin tulostui tervehdys, jossa parametri $1 oli korvattu nimellä Ville:

Tervehdykseen olisi voinut lisätä useampiakin parametrejä, jos greetuser-tiedostoon olisi lisännyt esim. $1, $2 ja $3 kolmea parametriä varten. Tällöin greetinguser-komennon perään olisi pitänyt vastaavasti lisätä kolmen tervehdittävän käyttäjän nimeä. (Karvinen 2022a)

e) Arvioitavaan laboratorioharjoitukseen valmistautuminen

Minulla oli pitkin kurssia haasteita ehtiä tehdä kaikkia viikottaisia kurssitehtäviä, koska ne osoittautuivat hyvin työläiksi ja olin niin hidas tekemään niitä. Tämä vaivasi edelleen laboratorioharjoitukseen valmistautuessani. Niinpä päätin keskittyä täydentämään keskeneräisiä viikkotehtäviä, sillä samalla tulisi kerrattua myös kurssin asioita. Silmäillessäni vanhoja arvioitavia laboratorioharjoituksia totesin, että niissä on oikeastaan testattu juuri viikkotehtävissä opeteltuja asioita ja opitun soveltamista.

Esimerkkejä vuoden 2017 arvioitavista laboratorioharjoituksista:

(Karvinen 2022a)

f) Uuden Linux-koneen asennus

Tarkoitukseni oli asentaa uusi Linuxin Debian-käyttöjärjestelmä suoraan tietokoneeni raudalle. Käytin asentamiseen Linux-tikkua, jonka tein kurssilla ensimmäisen viikon a)-tehtävässä. Seurasin saman viikon z)-tehtävän ohjeita Debianin asentamisesta virtuaalikoneelle, sillä asennus menee Linux-tikkua käyttäen samalla tavalla, oli kyse sitten Debianin asentamisesta virtuaalikoneelle tai suoraan tietokoneen raudalle.

Minulla oli tosiaan Linux-tikku jo valmiiksi tehtynä kurssin ensimmäiseltä viikolta, joten pääsin oikaisemaan Debianin asennuksesta alun valmistelut. Laitoin Linux-tikun tietokoneeseen kiinni ja käynnistin koneen. Valitsin Debianin Main Menu -valikosta ”Debian GNU/Linux Live (kernel 5.10.0-10-amd64)” ja painoin Enteriä. Tämän jälkeen jouduin odottamaan pari minuuttia lähinnä mustaa ruutua katsellen, kun kone valmisteli Debiania. Kun sain näkyviin työpöydän, tuplaklikkasin punaista kuvaketta ”Install Debian” asentaakseni uuden Debian-käyttöjärjestelmän koneeseen.

Ohjattu asennus käynnistyi ja tein seuraavat valinnat:

  • kieli: Amerikan englanti (jos tarvetta, myöhemmin voi asentaa muita kieliä, mutta tämä on ollut aiemminkin hyvä valinta)
  • alue: Eurooppa (kartasta Suomea klikkaamalla tulee aikavyöhykkeeksi Helsinki kaupanpäällisenä)
  • näppäimistö: ”Generic 105-key PC (intl.)”, suomi ja oletus
  • kovalevyn ositus: tyhjennä kovalevy, koska halusin korvata tietokoneelle jo asennetun käyttöjärjestelmän täysin uudella ja puhtaalla Debianilla
    • kovalevyn kryptaus: kyllä, koska kyseessä oli oikean tietokoneen käyttöjärjestelmän asennus
    • tärkeää keksiä vahva salasana, jota sitten kysytään ensimmäisenä joka kerta, kun tietokoneen käynnistää
    • boot loader location: ”Master Boot Record …”
  • käyttäjän, tässä tapauksessa super userin, määrittely:
    • oma nimi
    • nimimerkki, jolla kirjaudutaan koneelle
    • tietokoneen nimi, joka näkyy myös verkossa ja on siksi syytä valita jokin ei-yksilöivä nimi koneelle (ei anneta ulkopuolisille tietoja, kenen kone on kyseessä)
    • vahva salasana, joka sisältää isoja ja pieniä kirjaimia, numeroita ja erikoismerkkejä mutta ei ääkkösiä
    • ei kirjauduta automaattisesti kysymättä salasanaa
  • yhteenveto edellä tehdyistä valinnoista, hyväksyin Install-painikkeella

Tämän jälkeen alkoi asennuspaketin purkaminen, joka otti aikaa hiukan yli 15 minuuttia.

Lopulta sain ilmoituksen, että Debian on asennettu onnistuneesti tietokoneelleni:

Käynnistin koneen uudelleen valinnalla ”Restart now” ja klikkaamalla ”Done”. (Lehto 23.1.2022, Karvinen 22.1.2021)

Koneen sammuttaessa itsensä hetkeksi ennen uudelleenkäynnistystä irrotin Linux-tikun koneesta. Näin olin asentanut tietokoneelleni puhtaan Debian-käyttöjärjestelmän iltapäivän arvioitavaa laboratorioharjoitusta varten.

g) & h) Opittujen Linux-taitojen ylläpito ja kehittyminen edelleen

Jotta kevään aikana opitut Linux-taidot pysyisivät yllä ja olisivat myöhemmin helpommin otettavissa taas käyttöön, taitoja olisi hyvä käyttää vielä tämän kurssin päättymisen jälkeenkin. Harmillisesti loppukevään aikatauluuni ei mahdu enä yhtään Linux-kurssia muiden kurssien lisäksi, enkä päivätoteutuksen takia pysty osallistumaan edes Karvosen pitämälle kurssille ”Python weppipalvelu – ideasta tuotantoon”, vaikka se olisi kiinnostanut minua kovasti. Elättelen toiveita, että tuo kurssi järjestettäisiin tulevaisuudessa etätoteutuksena ilta-aikaan tai että päivätoteutuksen kurssisivu olisi niin informatiivinen, että kurssin asiat pystyisi opiskelemaan itsenäisestí vaikka kesällä. Joka tapauksessa viimeistään lukuvuoden 2022-2023 aikana minun olisi tarkoitus jatkaa Linux-opintoja palvelinten hallinnan, tunkeutumistestauksen ja pilviteknologioiden parissa.

Lähteet

Karvinen, T. 22.1.2021. Install Debian on Virtualbox. Luettavissa: https://terokarvinen.com/2021/install-debian-on-virtualbox/. Luettu: 16.3.2022.

Karvinen, T. 2022a. Linux Palvelimet 2022. Kurssisivusto. Luettavissa: https://terokarvinen.com/2021/linux-palvelimet-ict4tn021-3018/. Luettu: 13.3.2022.

Lehto, S. 23.1.2022. SUkellus Linuxin maailmaan (h1). Kotitehtäväraportti. Luettavissa: https://susannalehto.fi/2022/sukellus-linuxin-maailmaan-h1/. Luettu: 16.3.2022.

Söder, T. 12.3.2022. Linux palvelimet – Tehtävä 6. Kotitehtäväraportti. Luettavissa: https://tomisoder.wordpress.com/2022/03/12/linux-palvelimet-tehtava-6/. Luettu: 15.3.2022.

Artikkelia on päivitetty 16.3.2022: lisätty tehtävän f) ratkaisu.

Kommentoi

Sähköpostiosoitettasi ei julkaista.