Si es un lector habitual de este blog y le gusta su contenido quizá quiera contribuir a su mantenimiento. Cualquier cantidad por pequeña que sea será bien recibida.
Gracias por tu aporte.
Comentarios recientes
- Anónimo en UNIX – Pedir confirmación antes de ejecutar un script.-
- Rodrigo en LINUX – Parsear documento XML en script bash.
- Ricardo en LINUX – Parsear documento XML en script bash.
- Gonzalo Reiser A. en BASH – SCRIPT para monitoreo de archivo LOG.-
- Gonzalo Reiser A. en BASH – SCRIPT para monitoreo de archivo LOG.-
Archivos
- febrero 2024 (2)
- enero 2024 (11)
- diciembre 2023 (1)
- noviembre 2023 (10)
- septiembre 2023 (5)
- agosto 2023 (10)
- junio 2023 (3)
- mayo 2023 (4)
- abril 2023 (10)
- febrero 2023 (3)
- enero 2023 (1)
- diciembre 2022 (2)
- noviembre 2022 (1)
- agosto 2022 (4)
- julio 2022 (1)
- junio 2022 (4)
- febrero 2022 (9)
- abril 2021 (1)
- enero 2021 (3)
- diciembre 2020 (2)
- noviembre 2020 (2)
- octubre 2020 (1)
- septiembre 2020 (4)
- agosto 2020 (1)
- julio 2020 (1)
- junio 2020 (5)
- mayo 2020 (12)
- abril 2020 (1)
- enero 2020 (1)
- noviembre 2019 (5)
- octubre 2019 (4)
- septiembre 2019 (1)
- agosto 2019 (1)
- julio 2019 (11)
- junio 2019 (1)
- julio 2018 (3)
- octubre 2017 (1)
- septiembre 2017 (2)
- agosto 2017 (3)
- julio 2017 (11)
- mayo 2017 (6)
- abril 2017 (3)
- marzo 2017 (7)
- febrero 2017 (1)
- diciembre 2016 (3)
- octubre 2016 (4)
- septiembre 2016 (2)
- agosto 2016 (10)
- julio 2016 (9)
- junio 2016 (9)
- mayo 2016 (27)
- abril 2016 (10)
- marzo 2016 (15)
- enero 2016 (3)
- diciembre 2015 (7)
- octubre 2015 (2)
- septiembre 2015 (3)
- agosto 2015 (9)
- julio 2015 (11)
- junio 2015 (22)
- mayo 2015 (7)
- abril 2015 (22)
- marzo 2015 (5)
- febrero 2015 (2)
- enero 2015 (10)
- diciembre 2014 (7)
- noviembre 2014 (3)
- octubre 2014 (2)
- septiembre 2014 (4)
- agosto 2014 (22)
- julio 2014 (15)
- junio 2014 (8)
- mayo 2014 (6)
- abril 2014 (10)
- marzo 2014 (15)
- febrero 2014 (3)
- enero 2014 (15)
- diciembre 2013 (11)
- noviembre 2013 (25)
- octubre 2013 (46)
- septiembre 2013 (30)
Archivo mensual: junio 2015
BASH – Verifica proceso en ejecución.-
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash ps -fea | grep -v grep | grep "vi prueba.sh" >/dev/null 2>&1 case "$?" in 0) echo "proceso esta en ejecucion" ;; 1) echo "proceso NO esta en ejecucion" ;; esac exit |
Publicado en Unix - Linux
Deja un comentario
UNIX – Script de bash, que nos permite añadir delante o al final de uno o varios archivos un texto que definamos.
Script de bash, que nos permite añadir delante o al final de uno o varios archivos un texto que definamos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#!/bin/sh # # script de bash para renombrar uno o varios archivos añadiendo al inicio o # final del archivo un prefijo. # sh script.sh f 2014 log* -> Añade a todos los archivos que empiezan por # log el prefijo 2014 delante, quedando los # archivos 2014log... # # reemplazando la f por b, lo añade al final de archivo # # Comprobamos que recibamos tres parametros if [ $# -lt 3 ] ; then echo "usar: $0 [f|b] prefijo archivos..." echo "f=>delante|b->detras" echo exit 0 fi if [ "$1" = "f" ];then # cogemos el prefijo que añadiremos a cada archivo suffix=$2 shift;shift # Bucle que pasa por todos los archivos y les añade el prefijo indicado for file in $* do echo "Reemplazando ${file} -> $suffix$file" mv ${file} $suffix$file done fi if [ "$1" = "b" ];then # cogemos el prefijo que añadiremos a cada archivo suffix=$2 shift;shift # Bucle que pasa por todos los archivos y les añade el prefijo indicado for file in $* do echo "Reemplazando ${file} -> $file$suffix" mv ${file} $file$suffix done fi exit 0 |
Publicado en Unix - Linux
Deja un comentario
UNIX – SCRIPT envío de correo desde consola utilizando gmail
Script de bash que muestra como enviar un correo electrónico desde nuestro servidor utilizando el servidor SMTP de gmail con el comando mailx. Es necesario disponer de una cuenta de gmail.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#!/bin/sh # servidor de salida FROM_EMAIL_ADDRESS="miCorreo@gmail.com" FRIENDLY_NAME="miNombre" EMAIL_ACCOUNT_PASSWORD="miContrasena" SERVER_SMTP="smtp://smtp.gmail.com:587" # destinatario del mensaje TO_EMAIL_ADDRESS="destinatario@correo.com" EMAIL_SUBJECT="prueba para envio de correo con mailx desde consola" # todo lo que pongamos en el echo, sera el contenido del correo echo "Aqui va el contenido del correo. Tal cual se escriba se recibirá, manteniendo los saltos de linea. Hay que tener instalada la aplicación mailx... Para Debian y derivados es: apt-get install heirloom-mailx Para mas información sobre el comando: man mailx Saludos...;) " | mailx -v -s "$EMAIL_SUBJECT" \ -S smtp-use-starttls \ -S ssl-verify=ignore \ -S smtp-auth=login \ -S smtp=$SERVER_SMTP \ -S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \ -S smtp-auth-user=$FROM_EMAIL_ADDRESS \ -S smtp-auth-password=$EMAIL_ACCOUNT_PASSWORD \ $TO_EMAIL_ADDRESS |
Publicado en Unix - Linux
1 comentario
UNIX – Script para renombrar archivos reemplazando una parte del nombre del archivo por otra.-
Script de bash, que nos permite modificar los nombre de uno o varios archivos comprendidos en una carpeta. Tiene que recibir la cadena a buscar, la cadena a ser reemplazada si se encuentra, y el archivo o archivos a reemplazar. … Sigue leyendo
Publicado en Unix - Linux
Deja un comentario
BASH – Script que muestra el arbol de directorios.-
Script para mostrar en forma de árbol los directorios contenidos en un directorio dado utilizando una función recursiva.-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#!/bin/bash # Script para mostrar en forma de arbol los directorios contenidos en un directorio # dado utilizando una funcion recursiva # # Script realizado por Stephane Chazelas # http://www.pluto.it/files/ildp/guide/abs/contributed-scripts.html # # Puede recibir como parametro la ruta donde empezar. Si no se especifica, empieza # desde la carpeta actual # Ejemplo: $ bash tree.sh /home/user/ ricerca () { for dir in `echo *` # `echo *` enumera todos los archivos en el directorio de trabajo actual # sin saltos de linea, algo similar a la instruccion: for dir in * do if [ -d "$dir" ] ; then # Si se trata de un directorio (-d) zz=0 # Variable temporal para registrar el nivel # del directorio. while [ $zz != $1 ] # Bucle para mostrar las barras verticales interiores do echo -n "| " # Muestra el simbolo del enlace vertical zz=`expr $zz + 1` done if [ -L "$dir" ] ; then # Si el directorio es un link simbolico (-L) # Mostramos el simbolo del enlace seguido del nombre del directorio # eliminando la parte de la fecha y hora echo "+---$dir" `ls -l $dir | sed 's/^.*'$dir' //'` else echo "+---$dir" # Muestra el simbolo del enlace numdir=`expr $numdir + 1` # Incrementa el contador del directorio if cd "$dir" ; then # Si se ha podido acceder al directorio... ricerca `expr $1 + 1` # llamada recursiva cd .. # volvemos al directorio anterior fi fi fi done } # Si recibimos algun valor, nos movemos al directorio indicado if [ $# != 0 ] ; then cd $1 fi echo "Directorio inicial = `pwd`" numdir=0 ricerca 0 echo "Total directorios = $numdir" exit 0 |
Publicado en Unix - Linux
Deja un comentario
UNIX – Script valida que solo se ingresen números.-
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash re='^[0-9]+$' while : do echo "Introduce un numero:" read numero if [[ $numero =~ $re ]];then break else echo "$numero no es un numero" fi done |
Publicado en Unix - Linux
2 comentarios
BASH – Código de ejemplo para trabajar con arrays (vectores) en bash.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#!/bin/bash <<INFO Ejemplo de utilización de arrays en bash ${valores[*]} # Muestra todos los valores de un array ${!valores[*]} # Muestra todos los indices de un array ${#valores[*]} # Devuelve el numero de valores en un array ${#valores[0]} # Devuelve la longitud del indice 0 INFO # definimos un array de valores valores=("primero" "segundo" "tercero") # añadimos un nuevo valor en la posicion 3 del array valores[3]="quarto" # añadimos un nuevo valor en la posicion 5 del array valores[5]="quinto" printf "\nCantidad de valores dentro del array\n" printf " %s\n" ${#valores[*]} printf "\nMostramos un valor dado\n" printf " %s\n" ${valores[2]} printf "\nMostramos la longitud del indice 2\n" printf " %s\n" ${#valores[2]} # recorremos todos los valores del array printf "\nmostramos todos los valores\n" for item in ${valores[*]} do printf " %s\n" $item done # recorremos todos los indices del array printf "\nMostramos todos los indices\n" for index in ${!valores[*]} do printf " %d\n" $index done # mostramos los indices y sus valores printf "\nMostramos todos los indices con sus valores\n" for index in ${!valores[*]} do printf "%4d: %s\n" $index ${valores[$index]} done |
Publicado en Unix - Linux
Deja un comentario
SCRIPT – Mata procesos en forma remota.-
El script se ejecuta como: mata host Donde host es el nombre de una máquina. El script buscará los PID de todos los procesos que tengamos en esa máquina y los matará con kill -9. El contenido del script mata … Sigue leyendo
Publicado en Unix - Linux
Deja un comentario
BASH – Script menu de opciones.-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/bin/bash clear while : do echo " Escoja una opcion " echo "1. quien soy?" echo "2. cuanto espacio tengo" echo "3. que es esto?" echo "4. Salir" echo -n "Seleccione una opcion [1 - 4]" read opcion case $opcion in 1) echo "este eres:"; whoami;; 2) echo "tienes esto"; df;; 3) uname -r;; 4) echo "chao"; exit 1;; *) echo "$opc es una opcion invalida. Es tan dificil?"; echo "Presiona una tecla para continuar..."; read foo;; esac done |
Publicado en Unix - Linux
Deja un comentario
UNIX – Comando para buscar directorios y archivos de gran tamaño.-
1 2 3 4 5 |
# Busca los 30 directorios de mayor tamaño.- du -a ~/ | sort -n -r | head -n 30 # Busca los 30 archivos de mayor tamaño.- find ~/ -type f -exec ls -ls {} \; | awk '{print $0}' | sort -k1 -n -r | head -n 30 |
Publicado en Unix - Linux
Deja un comentario
BASH – Cuenta archivos en directorio pasado como argumento.-
Script que cuente cuantos archivos y cuantos directorios hay en el directorio pasado como argumento:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
DI=0 FI=0 for I in $1/* do if [ -f $I ] then let FI=FI+1 fi if [ -d $I ] then let DI=DI+1 fi done |
Publicado en Unix - Linux
Deja un comentario
BASH – Busqueda patron.-
Analiza el archivo «listaetc y muetra por pantalla todas las coincidencias con el patron de busqueda «procmail».-
1 2 3 4 5 6 7 |
while read LINEA do if grep procmail $L >/dev/null 2>&1 then echo $L fi done <listaetc |
Publicado en Unix - Linux
Deja un comentario
BASH – lista archivos con permisos de lectura.-
Guion de shell que genere un fichero llamado listaetc que contenga los ficheros con permiso de lectura que haya en el directorio /etc:
1 2 3 4 5 6 7 |
for F in /etc/* do if [ -f $F -a -r $F ] then echo $F >> listaetc fi done |
Publicado en Unix - Linux
Deja un comentario
BASH – Script declara y muestra arreglo. (Vector)
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash ## Declarar un arreglo con elementos.- declare -a arr=("elemento1" "elemento2" "elemento3") ## Listar los elementos del arreglo.- for i in "${arr[@]}" do echo "$i" # puedo trabajar con el elemento individual del arreglo done |
Publicado en Unix - Linux
Deja un comentario
BASH – Script para realizar un BACKUP simple.-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#!/bin/bash # Vars log="rotate_backup.log" backupPath="/backup/machines/" oldCopies=($(ssh $user@$backupHost "ls $backupPath$localHost | sort -r")) maxNumOfCopies=3 # Log file cat /dev/null > $log # If they are more than the max of copies if [ ${#oldCopies[@]} -gt $maxNumOfCopies ]; then # Unset of array values with index < of maxNumOfCopies i=0 while [ $i -lt ${#oldCopies[@]} ]; do if [ $i -lt $(( $maxNumOfCopies )) ]; then unset oldCopies[$i] fi let "i++" done # We remove the old copies for copy in ${oldCopies[@]}; do ssh $user@$backupHost "rm -rf $backupPath/$localHost/$copy" result=$(evalOperation $?) echo "<p>Removing copy of $copy [$result]</p>" >> $log done fi if [ ! -s rotate_backup.log ]; then echo "<p>No copies to delete<p>" >> $log fi # We send a email sendMailStatus "Removing old copies of $localHost done $date" $log |
Publicado en Unix - Linux
Deja un comentario
BASH – Script para iterar sobre archivos de un directorio.-
1 2 3 4 |
#!/bin/bash for i in $( ls ); do echo item: $i done |
Publicado en Unix - Linux
Deja un comentario
BASH – Script muestra los primeros 20 números pares.-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#! /bin/bash clear cont=1 num=1 while test $cont -le 20 do div=`expr $num % 2` if test $div -eq 0 then echo "$num es un numero PAR" cont=`expr $cont + 1` fi num=`expr $num + 1` done echo "------------------" echo "Estos son los 20 primeros numeros PARES" echo "" |
Publicado en Unix - Linux
Deja un comentario
BASH – Captura de parámetros en un script.-
Para hacer nuestros scripts más potentes, a veces nos puede interesar permitir que nuestros parámetros se pasen precedidos de la opción a la que corresponden. Con esto podríamos hacer cosas como: # miscript -a opciona -b opcionb -d opciond # … Sigue leyendo
Publicado en Unix - Linux
Deja un comentario
Scripts – cantidad de usuarios conectados.-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#! /bin/sh # cantidad de usuarios conectados uconn=`who | wc -l | sed 's/^ *//g'` # cantidad de usuarios reales ureal=`who | cut -f1 -d ' ' | sort -u | wc -l | sed 's/^ *//g'` # mostrar usuarios con el num. de veces que esta conectado who | cut -f1 -d ' ' | uniq -c | sort | sed 's/^ *//g' # explicacion (para el que no entienda) # who mostrar todos los usuarios # cut -f1 -d ' ' obtener solo los nombres # uniq -c obtener cantidad de repeticiones # sort ordenar por numero de conexiones # sed 's/^ *//g' eliminar espacios en blanco al # al principio de la linea. # eso es para todo, ya que algunos # programas mantienen un largo numerico # para mostrar en la salida. # imprimir informacion echo "connected: $uconn" echo "reales : $ureal" |
Publicado en Unix - Linux
2 comentarios
Bash – Muestra la cantidad de Archivos.-
Este script muestra la cantidad de archivos que existen en cada directorio a partir del directorio desde donde se ejecuta el script.-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/bash START=$HOME [ $# -eq 1 ] && START=$1 || : if [ ! -d $START ] then echo "$START no es un directorio!" exit 1 fi DIRS=$(find "$START" -type d) for d in $DIRS do [ "$d" != "." -a "$d" != ".." ] && echo "$d ====>> $(ls -l $d | wc -l) archivos" || : done |
Publicado en Unix - Linux
Deja un comentario