Búsqueda de sitios web

5 scripts de Shell para que los principiantes de Linux aprendan a programar Shell - Parte II


Para aprender algo es necesario hacerlo, sin temor a fracasar. Creo en la practicidad y por eso lo acompañaré al mundo práctico de Scripting Language.

Este artículo es una extensión de nuestro Primer artículo Comprender el Shell de Linux y las secuencias de comandos de Shell básicas: Parte I, donde le dimos una idea de las secuencias de comandos y no lo decepcionaremos en este artículo.

Guión 1: Dibujar un patrón 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"

La mayoría de las "palabras clave" anteriores le serán conocidas y la mayoría de ellas se explican por sí mismas. por ejemplo, MAX establece el valor máximo de la variable, for es un bucle y cualquier cosa dentro del bucle se ejecuta una y otra vez hasta que el bucle sea válido para un valor de entrada determinado.

Salida de muestra
[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

Si tiene un poco de conocimiento sobre algún lenguaje de programación, aprender el script anterior no es difícil, incluso si es nuevo en computación, programación y Linux, no será muy difícil.

Descargar Special_Pattern.sh

Guión 2: Creación de un guión colorido

¿Quién dice que Linux es incoloro y aburrido? Guarde los códigos siguientes en cualquier [punto] sh, hágalo ejecutable y ejecútelo, no lo haga. No olvides contarme cómo te fue. Piensa en lo que puedes lograr implementándolo en alguna 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: No te preocupes por el código de colores ahora. Los que son importantes para ti estarán en tu lengua, gradualmente.

Advertencia: Es posible que su terminal no tenga la función de parpadear.

Salida de muestra
[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

Descargar Colorfull.sh

Guión 3: cifrar un archivo/directorio

Este script cifrará un archivo (¿recuerdas? directorio/controlador/…. todo se trata como un archivo, en Linux ) ). La limitación actual del script anterior es que no admite la finalización automática del nombre mediante TAB. Además, debe colocar el script y el archivo a cifrar en la misma carpeta. Es posible que necesites instalar “pinentry-gui”, usando el paquete yum o apt, si es necesario.

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

Cree un archivo llamado “Encrypt.sh” y coloque el siguiente script, hágalo ejecutable y ejecútelo como se muestra.

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

Salida de muestra

[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: esto cifrará su archivo, utilizando una clave de acceso también conocida como contraseña. En este proceso de aprendizaje, nunca hubieras pensado que el proceso de aprendizaje real podría ser tan fácil. Entonces, después de cifrar un archivo, ¿qué necesitas? ¡Obviamente! descifrar el archivo. Y quiero que usted, el alumno, el lector, escriba el script de descifrado usted mismo, no se preocupe, no lo dejaré en el medio, solo quiero que obtenga algo de este artículo.

Nota: gpg -d filename.gpg > filename es lo que necesita implementar en su script de descifrado. Puede publicar su guión en el comentario si tiene éxito; de lo contrario, puede pedirme que lo escriba por usted.

Descargar Encrypt.sh

Guión 4: Comprobación de la utilización del servidor

Verificar la utilización del servidor es una de las tareas importantes de un administrador, y un buen administrador es aquel que sabe cómo automatizar su tarea diaria. A continuación se muestra el script que brindará mucha información sobre su servidor. Compruébalo tú mismo.

#!/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
Salida de muestra
[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: Le he proporcionado el script que proporciona el resultado en la propia terminal, ¿qué tal si obtenemos el resultado en un archivo para referencia futura? Implementarlo usando el operador de redireccionamiento.

  1. >‘: el operador de redirección provoca la creación de un archivo y, si existe, se sobrescribe el contenido.
  2. >>‘: cuando usas >>, estás agregando información, en lugar de reemplazarla.
  3. '>>' es seguro, en comparación con '>'

Descargar Server-Health.sh

Guión 5: comprobar el espacio en disco y enviar una alerta por correo electrónico

¿Qué tal recibir un correo electrónico cuando el uso del disco en la partición PART es mayor que el máximo permitido? Es un script que salva vidas para los administradores web con pocas modificaciones.

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: elimine “USUARIO” con su nombre de usuario. Puede consultar el correo utilizando el comando 'correo'.

Descargar Check-Disk-Space.sh

La escritura de guiones y la programación van más allá de los límites, cualquier cosa podría implementarse según sea necesario. Eso es todo por ahora. En mi próximo artículo le brindaré algunos tipos diferentes de secuencias de comandos. Hasta entonces, manténganse tranquilos y atentos, disfruten.