Ricerca nel sito web

5 script di shell per principianti di Linux per imparare a programmare la shell - Parte II


Per imparare qualcosa bisogna farlo, senza la paura di non avere successo. Credo nella praticità e quindi ti accompagnerò nel mondo pratico del linguaggio di scripting.

Questo articolo è un'estensione del nostro primo articolo Comprendere la shell Linux e lo scripting di base della shell - Parte I, in cui ti abbiamo dato un assaggio di scripting, continuando a non deluderti in questo articolo.

Script 1: disegnare un modello speciale

#!/bin/bash
MAX_NO=0
echo -n "Enter Number between (5 to 9) : "
read MAX_NO
if ! [ $MAX_NO -ge 5 -a $MAX_NO -le 9 ] ; then
   echo "WTF... I ask to enter number between 5 and 9, Try Again"
   exit 1
fi
clear
for (( i=1; i<=MAX_NO; i++ )) do     for (( s=MAX_NO; s>=i; s-- ))
    do
       echo -n " "
    done
    for (( j=1; j<=i;  j++ ))     do      echo -n " ."      done     echo "" done ###### Second stage ###################### for (( i=MAX_NO; i>=1; i-- ))
do
    for (( s=i; s<=MAX_NO; s++ ))
    do
       echo -n " "
    done
    for (( j=1; j<=i;  j++ ))
    do
     echo -n " ."
    done
    echo ""
done
echo -e "\n\n\t\t\t Whenever you need help, linux-console.net is always there"

La maggior parte delle "parole chiave" di cui sopra ti sarebbero note e la maggior parte di esse si spiega da sé. ad esempio, MAX imposta il valore massimo della variabile, for è un ciclo e qualsiasi cosa all'interno del ciclo viene eseguita ancora e ancora finché il ciclo non è valido per un determinato valore di input.

Uscita del campione
[root@tecmint ~]# chmod 755 Special_Pattern.sh
[root@tecmint ~]# ./Special_Pattern.sh
Enter Number between (5 to 9) : 6
       .
      . .
     . . .
    . . . .
   . . . . .
  . . . . . .
  . . . . . .
   . . . . .
    . . . .
     . . .
      . .
       .

                         Whenever you need help, linux-console.net is always there

Se conosci un po' qualsiasi linguaggio di programmazione, imparare lo script sopra non è difficile, anche se sei nuovo nell'informatica, nella programmazione e in Linux non sarà molto difficile.

Scarica Special_Pattern.sh

Script 2: creazione di script colorati

Chi dice che Linux è incolore e noioso, salva i codici sottostanti in qualsiasi cosa [punto] sh, rendilo eseguibile ed eseguilo, non farlo Non dimenticare di dirmi com'è andata, pensa a cosa puoi ottenere implementandolo da qualche parte.

#!/bin/bash
clear 
echo -e "33[1m Hello World"
bold effect
echo -e "33[5m Blink"
blink effect
echo -e "33[0m Hello World"
back to normal
echo -e "33[31m Hello World"
Red color
echo -e "33[32m Hello World"
Green color
echo -e "33[33m Hello World"
See remaining on screen
echo -e "33[34m Hello World"
echo -e "33[35m Hello World"
echo -e "33[36m Hello World"
echo -e -n "33[0m"
back to normal
echo -e "33[41m Hello World"
echo -e "33[42m Hello World"
echo -e "33[43m Hello World"
echo -e "33[44m Hello World"
echo -e "33[45m Hello World"
echo -e "33[46m Hello World"
echo -e "33[0m Hello World"

Nota: non preoccuparti del codice colore adesso, quelli importanti per te ti saranno chiari, gradualmente.

Avviso: il tuo terminale potrebbe non avere la possibilità di lampeggiare.

Uscita del campione
[root@tecmint ~]# chmod 755 Colorfull.sh
[root@tecmint ~]# ./Colorfull.sh

Hello World
Blink
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World

Scarica Colorfull.sh

Script 3: crittografa un file/directory

Questo script crittograferà un file (ricordate? directory/driver/…. tutto viene trattato come file, in Linux ). L'attuale limitazione dello script precedente è che non supporta il completamento automatico del nome utilizzando TAB. Inoltre, è necessario posizionare lo script e il file da crittografare nella stessa cartella. Potrebbe essere necessario installare “pinentry-gui”, utilizzando yum o apt il pacchetto, se richiesto.

[root@midstage ~]# yum install pinentry-gui
[root@midstage ~]# apt-get install pinentry-gui

Crea un file chiamato "Encrypt.sh" e inserisci il seguente script, rendilo eseguibile ed eseguilo come mostrato.

#!/bin/bash
echo "Welcome, I am ready to encrypt a file/folder for you"
echo "currently I have a limitation, Place me to thh same folder, where a file to be 
encrypted is present"
echo "Enter the Exact File Name with extension"
read file;
gpg -c $file
echo "I have encrypted the file successfully..."
echo "Now I will be removing the original file"
rm -rf $file

Uscita del campione

[root@tecmint ~]# chmod 755 Encrypt.sh
[root@tecmint ~]# ./Encrypt.sh

Welcome, I am ready to encrypt a file/folder for you
currently I have a limitation, Place me to the same folder, where a file to be

encrypted is present
Enter the Exact File Name with extension

package.xml

                                                   ┌─────────────────────────────────────────────────────┐
                                                   │ Enter passphrase                                    │
                                                   │                                                     │
                                                   │                                                     │
                                                   │ Passphrase *******_________________________________ │
                                                   │                                                     │
                                                   │       <OK>                             <Cancel>     │
                                                   └─────────────────────────────────────────────────────┘

Please re-enter this passphrase

                                                   ┌─────────────────────────────────────────────────────┐
                                                   │ Please re-enter this passphrase                     │
                                                   │                                                     │
                                                   │ Passphrase ********________________________________ │
                                                   │                                                     │
                                                   │       <OK>                             <Cancel>     │
                                                   └─────────────────────────────────────────────────────┘

I have encrypted the file successfully...
Now I will be removing the original file
</pre>

gpg -c : questo crittograferà il tuo file, utilizzando una passkey, ovvero password. In questo processo di apprendimento non avresti mai pensato che il processo di apprendimento vero e proprio potesse essere così semplice. Quindi, dopo aver crittografato un file, di cosa hai bisogno? Ovviamente! decrittografare il file. E voglio che tu, lo studente, il lettore, scriva tu stesso lo script di decrittazione, non preoccuparti, non ti lascio nel mezzo, voglio solo che tu ottenga qualcosa da questo articolo.

Nota: gpg -d filename.gpg > filename è ciò che devi implementare nel tuo script di decrittazione. Puoi pubblicare lo script nel commento in caso di successo, in caso contrario puoi chiedermi di scriverlo per te.

Scarica Encrypt.sh

Script 4: controllo dell'utilizzo del server

Controllare l'utilizzo del server è uno dei compiti importanti di un amministratore e un buon amministratore è colui che sa come automatizzare le sue attività quotidiane. Di seguito è riportato lo script che fornirà molte di queste informazioni sul tuo server. Controllalo tu stesso.

#!/bin/bash
    date;
    echo "uptime:"
    uptime
    echo "Currently connected:"
    w
    echo "--------------------"
    echo "Last logins:"
    last -a |head -3
    echo "--------------------"
    echo "Disk and memory usage:"
    df -h | xargs | awk '{print "Free/total disk: " $11 " / " $9}'
    free -m | xargs | awk '{print "Free/total memory: " $17 " / " $8 " MB"}'
    echo "--------------------"
    start_log=`head -1 /var/log/messages |cut -c 1-12`
    oom=`grep -ci kill /var/log/messages`
    echo -n "OOM errors since $start_log :" $oom
    echo ""
    echo "--------------------"
    echo "Utilization and most expensive processes:"
    top -b |head -3
    echo
	top -b |head -10 |tail -4
    echo "--------------------"
    echo "Open TCP ports:"
    nmap -p- -T4 127.0.0.1
    echo "--------------------"
    echo "Current connections:"
    ss -s
    echo "--------------------"
    echo "processes:"
    ps auxf --width=200
    echo "--------------------"
    echo "vmstat:"
    vmstat 1 5
Uscita del campione
[root@tecmint ~]# chmod 755 Server-Health.sh
[root@tecmint ~]# ./Server-Health.sh

Tue Jul 16 22:01:06 IST 2013
uptime:
 22:01:06 up 174 days,  4:42,  1 user,  load average: 0.36, 0.25, 0.18
Currently connected:
 22:01:06 up 174 days,  4:42,  1 user,  load average: 0.36, 0.25, 0.18
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
tecmint   pts/0    116.72.134.162   21:48    0.00s  0.03s  0.03s sshd: tecmint [priv]
--------------------
Last logins:
tecmint   pts/0        Tue Jul 16 21:48   still logged in    116.72.134.162
tecmint   pts/0        Tue Jul 16 21:24 - 21:43  (00:19)     116.72.134.162
--------------------
Disk and memory usage:
Free/total disk: 292G / 457G
Free/total memory: 3510 / 3838 MB
--------------------
OOM errors since Jul 14 03:37 : 0
--------------------
Utilization and most expensive processes:
top - 22:01:07 up 174 days,  4:42,  1 user,  load average: 0.36, 0.25, 0.18
Tasks: 149 total,   1 running, 148 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.0%sy,  0.0%ni, 99.3%id,  0.6%wa,  0.0%hi,  0.0%si,  0.0%st

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      20   0  3788 1128  932 S  0.0  0.0   0:32.94 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      RT   0     0    0    0 S  0.0  0.0   0:14.07 migration/0

Nota: ti ho fornito lo script che fornisce l'output nel terminale stesso, che ne dici di ottenere l'output in un file per riferimento futuro. Implementalo utilizzando l'operatore di reindirizzamento.

  1. >‘: l'operatore di reindirizzamento provoca la creazione di un file e, se esiste, il contenuto viene sovrascritto.
  2. >>‘: quando usi >>, stai aggiungendo informazioni, invece di sostituirle.
  3. ">>" è sicuro rispetto a ">"

Scarica Server-Health.sh

Script 5: controlla lo spazio su disco e invia un avviso e-mail

Che ne dici di ricevere un'e-mail quando l'utilizzo del disco nella partizione PART è maggiore del massimo consentito? È uno script salvavita per gli amministratori web con poche modifiche.

MAX=95
[email 
PART=sda1
USE=`df -h |grep $PART | awk '{ print $5 }' | cut -d'%' -f1`
if [ $USE -gt $MAX ]; then
  echo "Percent used: $USE" | mail -s "Running out of disk space" $EMAIL
fi

Nota: rimuovi "USER" con il tuo nome utente. Puoi controllare la posta utilizzando il comando "mail".

Scarica Check-Disk-Space.sh

La scrittura e la programmazione degli script vanno oltre i confini, qualsiasi cosa può essere implementata come richiesto. Per ora è tutto. Nel mio prossimo articolo ti darò alcuni tipi diversi di scripting. Fino ad allora restate calmi e sintonizzati, divertitevi.