Repositorio de Scripts
Inauguro una nueva seccion. Esta pagina es para ir guardando pequeños scripts o secuencias de comandos que pueden sernos utiles en nuestra casa o en el trabajo. Tengo mala memoria, asi que es un medio para ir almacenandolos y ademas para que cualquiera pueda tambien mediante un comentario ir añadiendo los suyos propios. La idea podria ser escribir un comentario donde ponemos:
TITULO SCRIPT COMANDO
texto descriptivo de lo que hace
Comando o script
y por ultimo la referencia, la URL de donde lo hemos sacado si no es propio.
Un ejemplo (tonto) pero para que quede mas o menos claro lo que intento:
IMPRIMIR LA LISTA DE PROCESOS Y BUSCAR POR UNO CONCRETO
Este comando se usa para imprimir la lista de procesos en ejecucion.
ps -ef | grep texto
Ejemplo: ps - ef | grep java
Referencia: Ubuntulife (http://ubuntulife.wordpress.com)
Si la idea funciona, tal vez pueda montar una seccion o blog independiente.


BUSCAR TEXTO DENTRO DE FICHEROS EN LINUX
Utilizado cuando queremos buscar una cadena de texto en varios ficheros simultaneamente.
Es de la forma find directorio_donde_buscar.
find . -exec grep -l texto_a_buscar {} \;
Referencia: http://uannight.wordpress.com/2007/04/16/buscar-texto-dentro-de-ficheros-en-linux/
COPIAR ARCHIVOS DESDE UN SERVIDOR A OTRO CON RSYNC
Si necesitan mover muchos archivos desde un servidor a otro, rsync por ssh es una de las formas mas convenientes.
rsync -var -e ssh archivos_a_mover usuario@servidor_distante:/directorio_para_archivos/
Opciones:
-v: verbose
-a: modo archive
-r: recursivo
Referencia:
http://n31m4d.wordpress.com/2007/04/16/copiar-archivos-desde-un-servidor-a-otro-con-rsync/
ARRANCAR/PARAR AUTOMATICAMENTE UNA BASE DE DATOS ORACLE EN LINUX
Coloca este codigo en /etc/init.d y crea enlaces en rc5.d y rc3.d para que Oracle pueda arrancar o parar automaticamente cuando arranquemos o hagamos shutdown del Sistema Operativo Linux.
# chkconfig: 35 95 1
# description: init script to start/stop oracle database 10g, TNS listener, EMS
#
#
# match these values to your environment:
export ORACLE_BASE=/usr/u01/app/oracle
export ORACLE_HOME=/usr/u01/app/oracle/product/10.2.0.1
export ORACLE_TERM=xterm
export PATH=/home/oracle/bin:$ORACLE_HOME/bin:$PATH
export ORACLE_SID=orcl
export DISPLAY=:0
export ORACLE_USER=oracle
# see how we are called:
case $1 in
start)
su - “$ORACLE_USER”<<EOO
lsnrctl start
sqlplus /nolog<<EOS
connect / as sysdba
startup
EOS
emctl start dbconsole
EOO
;;
stop)
su - “$ORACLE_USER”<<EOO
lsnrctl stop
sqlplus /nolog<<EOS
connect / as sysdba
shutdown immediate
EOS
emctl stop dbconsole
EOO
;;
*)
echo “Usage: $0 {start|stop}”
;;
esac
Referencia:
http://sulistyoas.wordpress.com/2007/04/18/automatic-start-and-shutdown-for-oracle-database-in-linux/
UNIR VARIOS FICHEROS PDF EN UNO NUEVO
Emplea la utilidad pdftk (http://www.accesspdf.com/pdftk/), el siguiente comando nos permite unir varios archivos PDF en uno nuevo:
pdftk Archivo1.pdf Archivo2.pdf … ArchivoN.pdf cat output ArchivoNuevo.pdf
Tambien pueden emplearse wildcarts, por ejemplo Archivo?.pdf o Archivo*.pdf
LEER EL VALOR DE UNA KEY DESDE FICHERO DE PROPIEDADES
Permite leer un fichero donde tengamos claves de la forma key=value para recuperar el valor de la misma
Ejemplo, para un fichero de propiedades variables.txt como este:
# Listado de variables
VARIABLE_01=000000001
VARIABLE_02=PRUEBA
El siguiente shell script recupera el valor de la propiedad VARIABLE_01:
# Leer un fichero de propiedades y recuperar el valor de una KEY
RUTA_PROPERTIES=”/home/jose/Desktop/variables.txt”
KEY=”VARIABLE_01″
MI_VARIABLE_01=`cat $RUTA_PROPERTIES | grep $KEY | awk -F= ‘{print $2}’ `
export MI_VARIABLE_01
echo “El valor de la variable es $MI_VARIABLE_01″
IMPRIMIR CONTENIDO DE UN DIRECTORIO A UN FICHERO CVS
De utilidad por ejemplo si tienes una carpeta con musica (ficheros.mp3) y quieres imprimir un listado de los mismos.
dir -C -1 -N -R /music/ > music-listing.csv
Referencia:
http://lcrm.wordpress.com/2007/05/07/print-directory-listing-to-a-csv-file/
REDIMENSIONAR VARIAS IMAGENES SIMULTANEAMENTE
Requiere tener instalado el paquete imagemagick , que podemos obtener usando apt ( apt-get install imagemagick ) en nuesto sistema debian o ubuntu. Imagemagick son un conjunto de utilidades que nos permiten manipular imagenes desde la consola.
Código :
for i in `ls . *.jpg` ; do
convert $i -resize 800×600 -quality 70 peque_$i
done
Decir que donde pone `ls . ` , podemos modificar el directorio donde están nuestras imágenes , y se puede modificar “peque_$i” por otro prefijo que más te guste, así como las opciones del resize y la calidad de la imagen,
Para ejecutarlo, hay que grabar estas líneas en un fichero de texto , dentro de el directorio donde están las imágenes añadiendo en la primera línea
#!/bin/bash
y luego desde la consola darle permisos de ejecución con
chmod +x nombredelfichero
y ejecutarlo con ./nombredelfichero
Referencia:
http://xisnu.wordpress.com/2007/05/01/como-redimensionar-1000-fotos-en-un-momento-y-no-morir-en-el-intento/
BORRAR LA PAPELERA DESDE CONSOLA
$ cd $HOME
$ cd .Trash
$ sudo -s
$ rm -r *
RECUPERAR LA DIRECCION IP DE TU MAQUINA
ifconfig | grep “inet addr”
BUSCAR UN FICHERO EN EL ARBOL DE DIRECTORIOS
Busca un fichero por todo el sistema de ficheros, o a partir de la ruta que se especifique.
Sintaxis: find ruta_desde_donde_buscar -nama fichero
Ejemplo: find / -name *.ppt
VER LAS DEPENDENCIAS DE LIBRERIAS COMPARTIDAS QUE TIENE UN EJECUTABLE
ldd ejecutable
Ejemplo:
$ ldd gzip
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7dc3000)
/lib/ld-linux.so.2 (0xb7f0e000)
VER DE QUE TIPO ES UN FICHERO
file fichero
Ejemplo:
$ file rm
rm: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.0, dynamically linked (uses shared libs), for GNU/Linux 2.6.0, stripped
OBTENER VERSION DEL KERNEL ACTUAL E INFORMACION DE LA MAQUINA
Podemos usar el comando uname y lsb_release (Linux standard base)
Ejemplo:
$ uname -a
Linux soledad 2.6.17-10-generic #2 SMP Tue Dec 5 22:28:26 UTC 2006 i686 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 6.10
Release: 6.10
Codename: edgy
CREAR TU PROPIO REPOSITORIO LOCAL
#!/bin/bash
##############################
# Genera un menú de opciones #
##############################
clear;
while [ “$OPCION” != 6 ]
do
echo “####################################################################”
echo ” Bienvenido a LRepository ”
echo “Nota: debes tener creadas las carpetas /media/tudisco/festy/apt ”
echo “caso contrario crealas primero y modifique sda5 por tu disco en el
codigo fuente, podria automatizarlo pero eso se los dejo a ustedes ”
echo “Un Saludo ”
echo “Reacondicionado by Lorgi ”
echo “####################################################################”
echo “[1] Sincronizar /var/cache/apt/archives/ en /media/sda5/feisty/apt/”
echo “[2] Sincronizar /media/sda5/feisty/apt/ en /var/cache/apt/archives/”
echo “[3] Crear repositorio en /media/backups/Dapper/apt/archives/”
echo “[4] Hacer aptitude update”
echo “[5] Eliminar todos los archivos del directorio /var/cache/apt/archives”
echo “[6] Salir”
echo “####################################################################”
read -p “Elija_una_opción:” OPCION
case $OPCION in
1) sudo rsync -avz /var/cache/apt/archives/ /media/sda5/feisty/apt/;clear;
echo “SINCRONIZACION REALIZADA”;;
2) sudo rsync -avz /media/sda5/feisty/apt/ /var/cache/apt/archives/;;
3) sudo dpkg-scansources /media/sda5/feisty/apt /dev/null | gzip -9c> /media/sda5/feisty/apt/Sources.gz;
sudo dpkg-scanpackages /media/sda5/feisty/apt /dev/null | gzip -9c> /media/sda5/feisty/apt/Packages.gz;;
4) sudo aptitude update;;
5) sudo rm /var/cache/apt/archives/*.*;;
6) clear; echo “Hasta Luego”; break;;
*) clear; echo “Opción ingresada invalida, intentelo de nuevo”;;
esac
done
exit 0
Referencia: lo siento no recuerdo de que blog saque las bases yo lo reacondicione pero espero les sirva.
Un saludo
[...] En esta sección podréis encontrar un repositorio de scripts de lo más interesantes y abundantes como: [...]
script que devuelve un archivo al azar de un directorio que se le pase como argumento
#!/bin/bash
archivos=( $(echo $1/*) )
echo ${archivos[$(( $RANDOM % ${#archivos[@]} ))]}
si se reemplaza el echo $1/* por un uso mas especializado del comando find se puede obtener otro tipo de flexibilidad. yo lo acabo de escribir para cambiar el splash de grub
Salus!
para eliminar archivos recursivamente de directorios:
http://www.tuxero.com/2007/09/cmo-borrar-archivos-intiles-de-windows.html
Saludos!
Script para quitar los Thumbs.db que genera “un sistema operativo” automaticamente de un directorio que se le pase, por ejemplo, el directorio donde se monta una unidad extraible.
if test $# -eq 1
then
if test -d $1
then
find $1 -name “Thumbs.db” -print0 | xargs -0 rm
echo “Se han eliminado $(find $1 -name “Thumbs-db” | wc -l) archivos Thumbs.db”
else
echo “El parametro no es un directorio valido”
fi
else
echo “Comando con un solo parametro”
fi
exit
wget -c -i nombre_del_archivo
/*
Para iniciar descargas con las URLs que tengas en un archivo …ayuda cuando tienes que descargar bastantes cosas y te sabes las direcciones.
es simple pero me ayudó un buen.
también funciona para FTPs
*/
Ver la temperatura de un disco duro con tecnologia S.M.A.R.T.
Es muy sencillo y lo vamos a definir como un alias. Requiere tener instalado smartmontools. Si usais bash, hacéis
alias temp_hda=”smartctl -a /dev/hda | grep 194″
o bien
alias temp_hda=”smartctl -a /dev/hda | grep Temperature”
si teneis mas de un disco duro, cambiais hda por hdb, hdc, etc, o bien sda, según la configuración que tengáis.
Para corregir automaticamente los errores con las llaves de GPG que suelen tener los repositorios de Debian y Ubuntu.
##=========================================================
## El Cerrajero — Version 0.3 por Sapphire
##=========================================================
##Si el UID es distinto a 0, entonces:
if [ "$UID" > 1 ]; then
echo ” ”
echo “El script tiene que ser ejecutado como ROOT.”
echo ” ”
return 0
fi
##Si los argumentos estan vacios:
if [ -z "$1" ]; then
echo ” ”
echo “Usage: sh cerrajero.sh -a | -s [GPG Error ID.] | –help”
echo ” ”
echo “–a Busca automaticamente los errores y los intenta corregir.”
echo “–s Poner junto al codigo de error para solucionar solo ese.”
echo “–v Version del script”
echo “–help Esta ayuda que esta viendo.”
echo ” ”
return 0
##Si el argumento –a esta puesto, entonces:
elif [ "$1" = --a ]; then
##Texto al azar que queda bien [?] xD
echo ” ”
echo “Updateando la lista: /etc/apt/sources.list”
echo ” ”
echo “Esto puede tomar un tiempo, espere..”
echo ” ”
##Hace un apt-get update y busca los codigos de error, guardandolo en variables
for k in $(apt-get update 2>&1 | grep -o NO_PUBKEY.*|sed ’s/NO_PUBKEY //’);
##Para cada codigo de variable hace un –recv-keys y consigue el respectivo key
do gpg –recv-keys –keyserver wwwkeys.eu.pgp.net $k;gpg –armor –export $k|apt-key add -;
##Fin del “FOR”
done
##Indicacion de fin
echo “Ya esta nene, tenes todas las llaves que necesitas”
echo ” ”
return 0
##Si el argumento –s esta siendo usado, entonces:
elif [ "$1" = --s ]; then
##Para el codigo del argumento 2 hace un –recv-keys y consigue el respectivo key
gpg –recv-keys –keyserver wwwkeys.eu.pgp.net $2;gpg –armor –export $2|apt-key add -;
##Si la –s fue elegida, pero no se puso el codigo del error..
if [ -z "$2" ]; then
echo “Es ./cerrajero.sh –s XXXXXXXXX (Donde X son las siglas del ID del error de GPG.)”
echo “Use –help para mas informacion.”
echo ” ”
##Fin del IF
return 0
fi
##Indicacion de fin
echo “Ya esta nene, tenes todas las llaves que necesitas”
echo ” ”
##Si el argumento –v esta siendo usado, entonces:
elif [ "$1" = --v ]; then
echo “El Cerrajero - Version 0.3 por Sapphire/Elidix.”
return 0
##Si el argumento –help esta siendo usado, entonces:
elif [ "$1" = --help ]; then
echo ” ”
echo “Usage: sh cerrajero.sh -a | -s [GPG Error ID.] | –help”
echo ” ”
echo “–a Busca automaticamente los errores y los intenta corregir.”
echo “–s Poner junto al codigo de error para solucionar solo ese.”
echo “–v Version del script”
echo “–help Esta ayuda que esta viendo.”
echo ” ”
return 0
##Fin del IF y del script
fi
##=========================================================
## Fin del script
##=========================================================