Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
ejemplos:scripting [2008/02/16 15:39] fmolinuevo |
ejemplos:scripting [2015/02/26 11:49] (actual) fmolinuevo [Script 4] |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ====== Scripting: ejemplos básicos ====== | ||
+ | //Nota//: The magical incantation '2>&1' has more meaning when it is considered that, when running in a UNIX or UNIX-like environment, each file opened (for reading or writing) is assigned a file descriptor number. By default, all commands have three file descriptors open as they run: STDIN (standard input), STDOUT (standard output), and STDERR (standard error). These are assigned the numbers 0, 1, and 2 respectively. So in the given syntax, '2' means standard error, '>' means '2' is being redirected, '&' means '1' is a file descriptor (and not a file named '1'), and '1' means standard output. The reason '2>&1' is specified after STDOUT is redirected to a file is that the command is read by the shell interpreter from left to right and descriptors are resolved immediately. If '2>&1' came first, STDERR would go to the original STDOUT (and not the file), which is not what I want here. | ||
+ | ===== Script 1 ===== | ||
+ | |||
+ | <code bash>#!/bin/bash | ||
+ | |||
+ | echo "Hola, mundo" | ||
+ | </code> | ||
+ | |||
+ | ===== Script 2 ===== | ||
+ | |||
+ | <code bash>#!/bin/bash | ||
+ | |||
+ | if w | grep -i root > /dev/null | ||
+ | then | ||
+ | echo "El usuario root está logueado" | ||
+ | else | ||
+ | echo "El usuario root NO está logueado" | ||
+ | fi | ||
+ | </code> | ||
+ | |||
+ | ===== Script 3 ===== | ||
+ | |||
+ | <code bash>#!/bin/bash | ||
+ | |||
+ | if [ -f /utils/scripts/verxtech ] | ||
+ | then | ||
+ | echo "El archivo existe" | ||
+ | else | ||
+ | echo "El archivo NO existe" | ||
+ | fi | ||
+ | |||
+ | if [ -x /utils/scripts/verxtech ] | ||
+ | then | ||
+ | echo "El archivo tiene permisos de ejecución" | ||
+ | else | ||
+ | echo "El archivo NO tiene permisos de ejecución" | ||
+ | fi | ||
+ | </code> | ||
+ | |||
+ | ===== Script 4 ===== | ||
+ | |||
+ | <code bash>#!/bin/bash | ||
+ | |||
+ | for i in joselo jose sergio alberto melisa felix | ||
+ | do | ||
+ | if [ $i = 'felix' ] | ||
+ | then | ||
+ | echo "$i es profe" | ||
+ | else | ||
+ | echo "$i es alumno" | ||
+ | fi | ||
+ | done | ||
+ | </code> | ||
+ | |||
+ | ===== Script 5 ===== | ||
+ | |||
+ | <code bash>#!/bin/bash | ||
+ | |||
+ | for i in $(ls /) | ||
+ | do | ||
+ | file /$i | ||
+ | done | ||
+ | </code> | ||
+ | |||
+ | ===== Script 6 ===== | ||
+ | |||
+ | <code bash>#!/bin/bash | ||
+ | |||
+ | a=3344 | ||
+ | for (( i=1; i<=$a; i=i+1 )) | ||
+ | do | ||
+ | echo "Número de ciclo: $i" | ||
+ | done | ||
+ | </code> | ||
+ | |||
+ | ===== Script 7 ===== | ||
+ | |||
+ | <code bash>#!/bin/bash | ||
+ | |||
+ | # M="Febrero es el mes en que estamos" # El mes está indicado en el script | ||
+ | # M=$1 # El mes es pasado como parámetro al script | ||
+ | M="$(date +"%B de %Y")" # El mes es tomado con el comando date | ||
+ | |||
+ | case $M in | ||
+ | ene*|Ene*) | ||
+ | echo "Estamos en enero" | ||
+ | ;; | ||
+ | feb*|Feb*) | ||
+ | echo "Lo encontré!!!!!!!" | ||
+ | echo "Estamos en febrero" | ||
+ | ;; | ||
+ | *) | ||
+ | echo "Estamos en algún otro mes" | ||
+ | ;; | ||
+ | esac | ||
+ | </code> | ||
+ | |||
+ | ===== Script 8 ===== | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # Recibe como parámetros dos números | ||
+ | # y los compara. Además muestra info sobre | ||
+ | # sí mismo | ||
+ | |||
+ | VAR1=$1 | ||
+ | VAR2=$2 | ||
+ | |||
+ | if [ $VAR1 -lt $VAR2 ] | ||
+ | then | ||
+ | echo "\$VAR1 es menor" | ||
+ | elif [ $VAR1 -eq $VAR2 ] | ||
+ | then | ||
+ | echo "\$VAR1 y \$VAR2 son iguales" | ||
+ | else | ||
+ | echo "\$VAR1 es mayor" | ||
+ | fi | ||
+ | |||
+ | echo "Numero de argumentos: $#" | ||
+ | echo "Todos los argumentos: $*" | ||
+ | echo "Opciones suministradas al shell: $-" | ||
+ | echo "Valor de error del ultimo comando ejecutado: $?" | ||
+ | echo "Identificacion del PID: $$" | ||
+ | echo "Comando usado para ejecutar el script: $0" | ||
+ | </code> | ||
+ | |||
+ | ===== Dialog test ===== | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # | ||
+ | # Ejemplo de comando dialog | ||
+ | # | ||
+ | |||
+ | TMPFILE="/tmp/dialogtest.$$" | ||
+ | |||
+ | dialog --inputbox "Ingrese su nombre" 10 30 2> $TMPFILE | ||
+ | |||
+ | V=`cat $TMPFILE` | ||
+ | |||
+ | # Borro el tmpfile | ||
+ | rm -f $TMPFILE | ||
+ | |||
+ | echo "El nombre que usted ingreso es $V" | ||
+ | |||
+ | exit 0 | ||
+ | </code> | ||
+ | |||
+ | ===== Agregar varios usuarios ===== | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # Crea usuarios a partir de una lista dada de | ||
+ | # pares uid:passwd | ||
+ | |||
+ | LISTA="usu1:plokij usu2:plokij usu3:plokij usu4:plokij" | ||
+ | GRUPOPRIMARIO="users" | ||
+ | GRUPOSSECUNDARIOS="audio,cdrom,dialout,disk,floppy" | ||
+ | |||
+ | for i in $LISTA | ||
+ | do | ||
+ | USER=$(echo $i | cut -d: -f1) | ||
+ | PASS=$(echo $i | cut -d: -f2) | ||
+ | useradd -d /home/$USER -m -g $GRUPOPRIMARIO -G $GRUPOSSECUNDARIOS -s /bin/bash $USER | ||
+ | echo "$USER:$PASS" | chpasswd --md5 | ||
+ | done | ||
+ | </code> | ||
+ | |||
+ | ===== Revisar si un demonio se esta ejecutando ===== | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # Revisa si un demonio se esta ejecutando | ||
+ | # y en caso negativo lo inicia | ||
+ | |||
+ | if ps ax | grep -i /usr/sbin/sshd | grep -v grep | ||
+ | then | ||
+ | echo "El SSH esta corriendo" | ||
+ | else | ||
+ | echo "El SSH _no_ esta corriendo" | ||
+ | echo "Entonces, lo inicio" | ||
+ | /etc/init.d/ssh start | ||
+ | fi | ||
+ | </code> |