Halva skripti omadused & millest hoiduda: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Line 27: Line 27:
== Näide ==
== Näide ==


Järgnevalt on ära toodud üks Bashi skript, mis võiks illustreerida, kuidas skript võiks välja näha.


<source lang=bash>
#!/bin/sh
# Autor - Johannes Tammekänd
# Grupp A22
# Kuupäev 28.02.2014
# Skript mis loob uue veebkodu.
export LC_ALL=C
# Kontrollitakse, kas kasutaja on sisenenud juurkasutaja õigustega.
if [ "$(id -u)" -ne 0 ]; then
echo "Käivita skript juurkasutajana."
exit 1
fi
# Parameetri kontroll
AADRESS=$1
if [ $# -ne 1 ]; then
    echo "Käivita skript järgnevalt: ./loo-kodu www.sinuveebisait.ee"
    exit 1
   
fi
# Paigaldatakse apache2
# Teeb uue kasutajasisendi nimelise kausta
# Kopeerib default index.html faili eelnevalt loodud kasuta
# Muudab eelnevalt loodud veebisaidi index.html faili järgnevalt, et index.html'is oleks näha domeeni nime.
    echo "127.0.0.1 $AADRESS" >> /etc/hosts
    apt-get update && apt-get install apache2
    mkdir -p /var/www/$AADRESS
    cp /var/www/index.html /var/www/$AADRESS/
    sed -i 's/It works!/Koik on korras, teie asja loodud veebiaadressi nimi on: '$AADRESS'/' /var/www/$AADRESS/index.html
# Et hostida mitut erinevat saiti ühe IP'ga peame muutma mõningaid parameetreid konfi failis.
   
        cp /etc/apache2/sites-available/default /etc/apache2/sites-available/$AADRESS
    sed -i 's/ServerAdmin webmaster@localhost/ServerAdmin webmaster@'$AADRESS'\n\tServerName '$AADRESS'/' /etc/apache2/sites-available/$AADRESS
    sed -i 's@DocumentRoot /var/www@DocumentRoot /var/www/'$AADRESS'@' /etc/apache2/sites-available/$AADRESS
   
# Enablime antud veebisaidi
 
a2ensite $AADRESS
    service apache2 reload
</source>


== Kasutatud kirjandus & materjal ==
== Kasutatud kirjandus & materjal ==

Revision as of 12:39, 15 March 2014

Sissejuhatus

Tehes algselt tutvust Bashiga võib see tunduda põneva ja mitte liialt raske skriptimiskeelega. Kuid sellegipoolest peaks jälgima mõningaid üldteatud tavasid, nõuandeid kirjutades Bashiga skripte, nagu kõikide teiste skriptimiskeeltega. Antud artikli eesmärk ongi lugejat teavustada, millest hoiduda kirjutades skripte ning see läbi ka juba saada terviklikum pilt, milline võiks üks Bashi või mis iganes muu skript välja näha.

Halb skript

Järgnevalt ongi siis ära toodud peamised skripti omadused, millest võiks üks skriptikirjutaja hoiduda.

  • Kommenteerimata - ei ole täheldatud, milleks on skript mõeldud. Ei sisalda autorit, kuupäeva. - Taoline käitumine võib ära hoida palju peavalu juba selle näol, et ei pea tervet skripti läbi lugema, et aru saada, mida skript teeb. Samuti hea oleks iga suurem koodiblokk ära kommenteerida.
  • Ei täida eesmärki
  • Ei tööta, üritab teha võimatut
  • Lõhub süsteemi ära
  • Paroolid on skriptis mitte keskkonnamuutujates - Juhul kui skript peaks sattuma mõne kolmanda isiku valdusesse, siis see tähendab kohest turvariski. Pealegi tark oleks hoida skripte kusagil repositooriumis (Github, Bitbucket)
  • Liigne keerukus, üleliia palju koodi
  • Halb struktuur - Skriptil peaks olema loogiline ülesehitus ning vastavalt ka trepitud.
  • Raskesti muudetav/ühildatavus
  • Vea puhul ei väljastata veateadet või veavoogu - Oluline osa debuggimisel.
  • Ei väljasta teadet skripti täitmisel - Hea oleks kasutajal ikkagist koheselt teada, kas skript õnnestus.
  • Ei ole taaskasutatav - Enamjaolt peaks skript olema porditav teistele süsteemidele/teenustele väikeste muudatustega.
  • Halb skript ei kontrolli enne skripti täitmist, kas teda on võimalik üldse täita - Näiteks kas keskkonnamuutujad on saadaval, kas kasutaja on root kasutajaõigustega jne.
  • Funktsioonid, muutujad - Tark oleks skripti mitte kirjutada korduvaid elemente.
  • Skript teeb rohkem, kui on ette nähtud - Ei ole tarvis luua näiteks üleliigseid faile, kauste jne.
  • Halb skript ei ole skriptitav - Ehk teda ei saa välja kutsuda teisest skriptist.
  • Ei aita kasutajat - Näiteks kui kasutaja sisestab käsurea argumendid valesti, siis hea oleks, kui skript ütleks kasutajale, kuidas sisetada käsurea argumendid.
  • Ei ole imporditud keskset lokaali - Kui skript on kirjutatud UTF-8's, aga masin kus skript käivitatakse on mingi muu lookaaliga, siis skript ei pruugi töötada.

Näide

Järgnevalt on ära toodud üks Bashi skript, mis võiks illustreerida, kuidas skript võiks välja näha.

#!/bin/sh
# Autor - Johannes Tammekänd
# Grupp A22
# Kuupäev 28.02.2014
# Skript mis loob uue veebkodu.

export LC_ALL=C

# Kontrollitakse, kas kasutaja on sisenenud juurkasutaja õigustega.

if [ "$(id -u)" -ne 0 ]; then
	echo "Käivita skript juurkasutajana."
	exit 1
fi

# Parameetri kontroll 

AADRESS=$1

if [ $# -ne 1 ]; then 

    echo "Käivita skript järgnevalt: ./loo-kodu www.sinuveebisait.ee"
    exit 1
    
fi

# Paigaldatakse apache2 
# Teeb uue kasutajasisendi nimelise kausta 
# Kopeerib default index.html faili eelnevalt loodud kasuta
# Muudab eelnevalt loodud veebisaidi index.html faili järgnevalt, et index.html'is oleks näha domeeni nime.

    echo "127.0.0.1 $AADRESS" >> /etc/hosts
    apt-get update && apt-get install apache2 
    mkdir -p /var/www/$AADRESS
    cp /var/www/index.html /var/www/$AADRESS/
    sed -i 's/It works!/Koik on korras, teie asja loodud veebiaadressi nimi on: '$AADRESS'/' /var/www/$AADRESS/index.html
 
# Et hostida mitut erinevat saiti ühe IP'ga peame muutma mõningaid parameetreid konfi failis.
    
        cp /etc/apache2/sites-available/default /etc/apache2/sites-available/$AADRESS
    sed -i 's/ServerAdmin webmaster@localhost/ServerAdmin webmaster@'$AADRESS'\n\tServerName '$AADRESS'/' /etc/apache2/sites-available/$AADRESS
    sed -i 's@DocumentRoot /var/www@DocumentRoot /var/www/'$AADRESS'@' /etc/apache2/sites-available/$AADRESS
    
# Enablime antud veebisaidi
   
a2ensite $AADRESS 
    service apache2 reload

Kasutatud kirjandus & materjal

Autor

  • Johannes Tammekänd - A22