Buscar

Mostrando entradas con la etiqueta Script-Linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta Script-Linux. Mostrar todas las entradas

Linux: Comprobar si un fichero esta vacío

En los scripts de bash de Linux, disponemos de las estructuras de control if con las podemos hacer una cosa u otra dependiendo de una condición.

En este ejemplo, veremos como comprobar con if, si un fichero está vacío.

Para crear un fichero vacío utilizaremos el comando touch.

Linux: Verificar caducidad certificados

Verificar la caducidad de los certificados digitales es una de las tareas que los administradores de sistemas deben realizar de forma periódica.

Linux: Saber si existe un directorio o fichero

Con scripts de bash de Linux, podemos necesitar saber si existe un directorio o fichero para ejecutar una cosa u otra.

Para saber si existe un directorio o fichero, podemos utilizar la sentencia if.

Con la sentencia if, podemos especificar como parámetro si existe o no un directorio o fichero.

Linux: Speedtest.net CLI

Una forma de medir el ancho de banda es descargar un fichero y ver el ancho de banda consumido en la descarga.

Siempre se intenta elegir un servidor con mucho ancho de banda para que el límite no se produzca en el otro extremo de la conexión.

Veamos un ejemplo con wget de Linux:

wget -O /dev/null http://ftp.cixug.es/CentOS/6.6/isos/x86_64/CentOS-6.6-x86_64-bin-DVD1.iso

Como la salida está enviada a /dev/null, el fichero no será almacenado en disco.

Vista de ejecución:

Wget para medit ancho de banda

En muchas ocasiones utilizamos el servicio de http://www.speedtest.net/ para medir el ancho de banda de nuestra conexión a Internet, de esta forma tenemos la seguridad de realizar el test contra servidores preparados para medir la conexión.

El servicio consiste en elegir alguno de los servidores que propone y generar tráfico entre ambos durante X tiempo, a partir de esto se mide el ancho de banda.

El problema que podemos tener es que en ocasiones no disponemos de un navegador con soporte de Flash para realizar el test.


Muchas veces es necesario realizar el test desde sistemas embedidos que disponen de comandos básicos Unix/Linux recogidos dentro de BusyBox.

Como vimos en un post anterior, un ejemplo de uso de BusyBox es con los host VMWare ESXi:

VMWare: ESXi BusyBox (SYSADMIT.com)


Recordemos que cada sistema que integra BusyBox, dispondrá de más o menos comandos con más o menos opciones.


Podemos construir un script para conectar a los servidores de www.speedtest.net y así generar un test de ancho de banda de bajada.

El script consiste en descargar imágenes aleatorias de cierto tamaño desde los distintos servidores de speedtest.net y a partir de este dato, medir el ancho de banda de bajada.

Los ficheros posibles son los siguientes:

random500x500.jpg = 494KB
random750x750.jpg = 1.1MB
random1000x1000.jpg = 1.9MB
random1500x1500.jpg = 4.3MB
random2000x2000.jpg = 7.5MB
random2500x2500.jpg = 12MB
random3000x3000.jpg = 17MB
random3500x3500.jpg = 23MB
random4000x4000.jpg = 30MB


Como ejemplo de script y lista de servidores, nos ayudaremos de los siguientes enlaces:

Script de conexión:

https://github.com/i4dexter/test-bw/blob/master/test-bw.sh

Servidores:

http://www.speedtest.net/speedtest-servers.php

Podemos simplificar el script de la siguiente forma:

echo "scale=2; `curl --progress-bar  -w "%{speed_download}" -o /dev/null http://speedtest.eastern-tele.com/mini/speedtest/random1000x1000.jpg` / 131072" | bc | xargs -I {} echo {}Mb\/s

Ejemplo de ejecución:


Speedtest desde cli

Linux: Script para verificar si una lista de dominios existen

Utilizando este script de Linux podemos verificar de forma masiva si los dominios especificados en un fichero de texto existen.

Los resultados serán mostrados por pantalla y registrados en ficheros de texto.

domains.txt = Fichero con la lista de dominios a verificar.

available.txt = Fichero generado después de la ejecución del script con los dominios OK.

failed.txt = Fichero generado después de la ejecución del script con los dominios KO.

Ficheros necesarios para la ejecución del script en modo texto:

[root@LINUX1 dominis-check]# cat domains.txt
google.com
terra.es
skajdklsajdklasjd.com
sysadmit.com
dsadsadsa.cas
lsdkjflkjjsd1.com



[root@LINUX1 dominis-check]# cat dominis-check.sh
#!/bin/bash

AVAILABLE=available.txt
DOMAINS=domains.txt
FAILED=failed.txt

lockfile whois-script.lock

echo > $AVAILABLE
echo > $FAILED

while read -r domain; do
  whois $domain | grep -qci "No match"
  if [ $? -ne 0 ]; then
    # found

    echo $domain >> $AVAILABLE
        echo $domain OK
  else
        echo $domain >> $FAILED
        echo $domain KO
  fi
done < $DOMAINS
 

rm -f whois-script.lock


Ficheros necesarios para la ejecución del script en modo imagen:

Script en formato imágen


Prueba de ejecución:

Ejecución via SSH




Linux: Debugar bash scripts

Podemos debugar los bash-scripts con los parámetros -x y -v del interprete de linea de comandos bash.

Para ello, disponemos del siguiente bash-script de ejemplo:

Vista imagen (./script.sh):

Linux: Debugar bash scripts

Vista texto (./script.sh):

#!/bin/bash
directorio="/root"

# Script que verifica si existe el directorio.

if [ -d $directorio ]; then

        echo "Directorio existe"

else

        echo "Directorio no existe"

fi


Este bash-script es muy simple, verifica si un directorio existe o no.

Para ello se compara el contenido de la variable directorio (en el ejemplo /root)

Si existe la ruta se muestra por pantalla: "Directorio existe" y no existe la ruta: "Directorio no existe"

Pruebas de ejecución:

[root@LINUX1]# ./script.sh
Directorio existe




[root@LINUX1]# bash -x ./script.sh
+ directorio=/root
+ '[' -d /root ']'
+ echo 'Directorio existe'
Directorio existe


[root@LINUX1]# bash -x -v ./script.sh
module () {  eval `/usr/bin/modulecmd bash $*`
}
#!/bin/bash
directorio="/root"
+ directorio=/root

# Script que verifica si existe el directorio.

if [ -d $directorio ]; then

        echo "Directorio existe"

else

        echo "Directorio no existe"

fi
+ '[' -d /root ']'
+ echo 'Directorio existe'
Directorio existe


Linux: Script para bloquear todas las conexiones que provienen de una IP con Iptables

En el siguiente post vimos como bloquear IPs con iptables.


Podemos generar un fichero de texto con las direcciones IP y un script para automatizar el proceso.

Para añadir una nueva IP o una lista de IPs bastará con editar el fichero de texto, modificar la lista de IPs y ejecutar de nuevo el script.

Contenido del fichero:

/root/ipblock/ipblock.sh

iptables -F
for IP in `cat ips.txt`
        do
         echo $IP
                iptables -I INPUT -s $IP -j DROP

        done

service iptables save


Contenido del fichero:

/root/ipblock/ips.txt

XX.XX.XX.XX
XX.XX.XX.XX
XX.XX.XX.XX