Pesquisa de site

5 scripts Shell para iniciantes em Linux aprenderem programação Shell - Parte II


Para aprender algo você precisa fazer, sem medo de não ter sucesso. Acredito na praticidade e por isso irei acompanhá-lo ao mundo prático da Linguagem de Scripting.

Este artigo é uma extensão do nosso primeiro artigo Entenda o Linux Shell e o Basic Shell Scripting – Parte I, onde demos a você uma amostra do Scripting, continuando que não iremos decepcioná-lo neste artigo.

Roteiro 1: Desenhando um Padrão Especial

#!/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"

A maioria das 'palavras-chave' acima são conhecidas por você e a maioria delas são autoexplicativas. por exemplo, MAX define o valor máximo da variável, for é um loop e qualquer coisa dentro do loop é executada repetidamente até que o loop seja válido para um determinado valor de entrada.

Saída de amostra
[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 você conhece um pouco de alguma linguagem de programação, aprender o script acima não é difícil, mesmo se você for novo em computação, programação e Linux não será muito difícil.

Baixar Special_Pattern.sh

Script 2: Criando um script colorido

Quem disse, Linux é incolor e chato, salve os códigos abaixo em qualquer coisa [ponto] sh, torne-o executável e execute-o, não Não esqueça de me contar como foi. Pense no que você pode conseguir implementando isso em algum lugar.

#!/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: Não se preocupe com o código de cores agora. Aqueles que são importantes para você estarão em sua língua, gradualmente.

Aviso: Seu terminal pode não ter a capacidade de piscar.

Saída de amostra
[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

Baixar Colorfull.sh

Script 3: criptografar um arquivo/diretório

Este script criptografará um arquivo (lembra? diretório/driver/…. tudo é tratado como arquivo, no Linux ). A limitação atual do script acima é que ele não suporta o preenchimento automático de nome usando TAB. Além disso, você precisa colocar o script e o arquivo a ser criptografado na mesma pasta. Pode ser necessário instalar o “pinentry-gui ”, usando o pacote yum ou apt, se necessário.

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

Crie um arquivo chamado “Encrypt.sh” e coloque o seguinte script, torne-o executável e execute-o conforme mostrado.

#!/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

Saída de amostra

[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 : Isso criptografará seu arquivo, usando uma chave de acesso também conhecida como senha. Neste processo de aprendizagem você nunca teria pensado que o processo real de aprendizagem poderia ser tão fácil. Então, depois de criptografar um arquivo, o que você precisa? Obviamente! descriptografando o arquivo. E eu quero que você - o aluno, o leitor, escreva você mesmo o script de descriptografia, não se preocupe, não estou deixando você no meio, só quero que você ganhe algo com este artigo.

Nota: gpg -d filename.gpg > filename é o que você precisa implementar em seu script de descriptografia. Você pode postar seu script no comentário se for bem-sucedido; caso contrário, você pode me pedir para escrevê-lo para você.

Baixar Encrypt.sh

Script 4: Verificando a utilização do servidor

Verificar a utilização do servidor é uma das tarefas importantes de um administrador, e um bom administrador é aquele que sabe automatizar suas tarefas do dia a dia. Abaixo está o script que fornecerá muitas dessas informações sobre o seu servidor. Verifique você mesmo.

#!/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
Saída de amostra
[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: Eu forneci a você o script que fornece a saída no próprio terminal, que tal obter a saída em um arquivo para referência futura. Implemente-o usando o operador de redirecionamento.

  1. >‘ : o operador de redirecionamento causa a criação de um arquivo e, se existir, o conteúdo é sobrescrito.
  2. >>‘ : quando você usa >>, você está adicionando informações, em vez de substituí-las.
  3. >>‘ é seguro, em comparação com ‘>

Baixar Server-Health.sh

Script 5: verifica o espaço em disco e envia um alerta por e-mail

Que tal receber um e-mail quando o uso do disco na partição PART for maior que o máximo permitido, é um script que salva vidas para administradores web com poucas modificações.

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: Remova “USER” do seu nome de usuário. Você pode verificar o e-mail usando o comando ‘mail’.

Baixar Check-Disk-Space.sh

A escrita e a programação de scripts estão além dos limites, tudo e qualquer coisa pode ser implementada conforme necessário. Por enquanto é tudo. No meu próximo artigo, apresentarei alguns tipos diferentes de scripts. Até então fique calmo e atento, aproveite.