miércoles, noviembre 19, 2008
Agregar maquinas por lote en SAMBA
maquina1
maquina2
maquina3
El script es el siguiente:
#!/bin/bash
#Registro de las máquinas por lote en SAMBA.
# Crea las cuentas de las estaciones a fin de que puedan entrar en el dominio
UUID=11480;
while read linea
do
UUID=$((UUID+1));
echo "Registrando maquina $linea"
useradd -u $UUID -g machines -c "Windows 2000 Cliente" -d /dev/null -s /bin/false $linea"$"
/usr/local/samba/bin/smbpasswd -a -m $linea"$"
###############################################################################
echo "Maquina $linea cadastrada ...."
done <>
Script para agregar y eliminar usuarios de samba y el Sistema
#!/bin/bash
#######################################################
# Ejecutar como administrador
# http://cbittachira.blogspot.com
#######################################################
Principal() {
clear
dir="Directorio Actual : `pwd`"
kernel="Kernel : `uname -r`"
arquitetura="Arquitectura : `uname -m`"
grupos=groups
echo "+-------------------------------------------------+"
echo "| Utilidades para LinuX |"
echo "+-------------------------------------------------+"
echo "| Agregar/ Remover usuarios en SaMBa y en Linux |"
echo "+-------------------------------------------------+"
echo "| Escrito por: |"
echo "| Pablo Contramaestre pcontramaestre@gmail.com |"
echo "+-------------------------------------------------+"
echo
echo $dir
echo $kernel
echo $arquitetura
echo
echo "Opcoes:"
echo "1. Agregar un Usuario"
echo "2. Eliminar un Usuario"
echo "3. Modificar la contraseña de un Usuario"
echo "4. Listar Usuarios de Samba"
echo "5. Salir"
echo -n "Entre la opción deseada => "
read opcion
echo
case $opcion in
1) Adicionar ;;
2) Eliminar ;;
3) Modificar ;;
4) Listar ;;
5) exit ;;
*) "Opcion desconocida." ; echo ; Principal ;;
esac
}
Listar() {
echo "Lista de Usuarios Samba: "
cat /etc/samba/smbpasswd | awk 'BEGIN{ FS=":" } { print "Usuario:" $1 "\t" "Id:" $2}'|more
read msg
echo "Lista de Usuario del Sistema: "
cat /etc/passwd | awk 'BEGIN{ FS=":" } { print "Usuario:" $1 "\t" "Id:" $3}' |more
echo "Presione cualquier tecla para continuar..."
read msg
Principal
}
Adicionar() {
echo -n "Introduzca el login del usuario: "
read login
echo -n "Escriba el nombre completo del usuario: "
read nombre
echo -n "Entre el grupo de usuarios: "
read grupo
echo -n "Entroduzca la contraseña del usuario: "
stty -echo
read password
stty echo
echo
echo "Mensajes del Sistema: "
echo
( echo $grupo ; echo $grupo ) | sudo groupadd -r -f $grupo
sudo /usr/sbin/useradd $login -c "$nombre" -g "$grupo" -d /home/user/$login -s /bin/bash; echo "$password" | sudo /usr/bin/passwd $login --stdin
echo
( echo $password ; echo $password ) | sudo smbpasswd -s -a $login
#smbpasswd -a $login $password
echo
echo "Presione cualquier tecla para continuar..."
read msg
Principal
}
Modificar() {
echo -n "Introduzca el Login del usuario a cambiar la contraseña: "
read login
echo -n "Entroduzca la contraseña del usuario para cambiar: "
stty -echo
read password
stty echo
echo
echo "Mensajes del Sistema: "
( echo $password ; echo $password ) | sudo smbpasswd -s $login
echo "$password" | sudo /usr/bin/passwd $login --stdin
# echo
# ( echo $senha ; echo $password ) | sudo smbpasswd -s -a $login
#smbpasswd -a $login $password
# ( echo $senha ; echo $password ) | sudo smbpasswd -s -a $login
#smbpasswd -a $login $password
echo
echo "Presione cualquier tecla para continuar..."
read msg
Principal
}
Eliminar() {
echo -n "Introduzca el login del usuario a eliminar: "
read login
echo
echo "Mensajes del Sistema: "
echo
sudo /usr/bin/smbpasswd -x $login
echo
sudo /usr/sbin/userdel $login
echo
echo "Pressione cualquier tecla para continuar..."
read msg
Principal
}
Principal
lunes, enero 21, 2008
Cambiar, modificar y Crear USPLASH (SPLASH) para ubuntu (pantalla de arranque de linux) de manera muy facil
Navegando por ahí he conseguido la manera de crear el usplash de arranque de ubuntu de una manera muy fácil, con solo dar clic con el botón derecho sobre una imagen y seleccionar make usplash... voy a explicar el proceso para realizar esto... tenemos que seguir los siguientes pasos:
ojo: verificar que tengas habilitados los repositorios de universe y multiverse
1) En la consola ejecutar lo siguiente:
sudo apt-get install nautilus-script-manager startupmanager
sudo apt-get install -y --force-yes libusplash-dev zenity
2) cambiarnos al direcctorio de scripts del nautilus
cd ~/.gnome2/nautilus-scripts/
3) estando en el directorio ~/.gnome2/nautilus-scripts/ bajar el siguiente archivo
wget http://pcontramaestre.googlepages.com/MakeUsplash
4) Le asignamos permisos de ejecución
sudo chmod +x MakeUsplash
5) ahora creamos el directorio siguiente:
mkdir -p ~/creadorusplash
6) entramos a ese directorio y bajamos el siguiente programa:
cd ~/creadorusplash
wget http://pcontramaestre.googlepages.com/USplash.tar.gz
7) Reiniciamos el nautilus y listo...
sudo killall nautilus
Despues de realizados los 7 pasos anteriores solo tienes que hacer clic con el boton derecho del mouse sobre una imagen, buscar el submenu de Scripts y hacer clic en MakeUsplash. ahi se empezara a crear el usplash de la imagen seleccionada.
Ahora para cargar el usplash en el arraque de ubuntu tenemos que hacer lo siguiente:
1) Ir al menu de Sistema -> Administración -> Administrador de Arranque (startupmanager)
2) Hacer clic en la pestaña aspecto, después hacemos clic en el botón Administrar temas usplash, nos saldra otra pantalla, ahi hacemos clic en el boton añadir y buscamos nuestro usplash dentro de la carpeta usplash del directorio personal.
3) Seleccionamos el tema usplash creado del combo (tema usplash:) y hacemos clic en el boton cerrar.

ya con eso estamos listos, ya tenemos nuestro nuevo usplash
el codigo del script makeusplash es el siguiente:
#!/bin/sh
SCRIPT_VERSION=1.01
FNAME="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
file=$@
# everything after last '/'
basename=${file%.*}
ext=".so"
OUTFILE=${basename}${ext}
`zenity --info --text="Este script va a compilar un USplash llamado $OUTFILE y sera guardado en la carpeta usplash despues este archivo puede ser abierto con el Gestor de arranque Startup Manager." --title="Creador de Usplash"`;
##Check for zenity
if [ ! -e "/usr/bin/zenity" ]; then
gksudo apt-get install -y --force-yes zenity
fi
PROGRESS=0
#Resolution Subroutines
Res1(){
#cd $
convert -colors 256 $FNAME -resize "640X400!" -quality 100 -strip ~/creadorusplash/usplash_640_400.png | zenity --width=600 --height=100 --progress --pulsate --auto-close --title "Procesando @ 640 X 400..."
}
Res2(){
#cd $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
convert -colors 256 $FNAME -resize "640X480!" -quality 100 -strip ~/creadorusplash/usplash_640_480.png | zenity --width=600 --height=100 --progress --pulsate --auto-close --title "Procesando @ 640 X 480..."
}
Res3(){
#cd $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
convert -colors 256 $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS -resize "800X600!" -quality 100 -strip ~/creadorusplash/usplash_800_600.png | zenity --width=600 --height=100 --progress --pulsate --auto-close --title "Procesando @ 800 X 600..."
}
Res4(){
convert -colors 256 $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS -resize "1024X768!" -quality 100 -strip ~/creadorusplash/usplash_1024_768.png | zenity --width=600 --height=100 --progress --pulsate --auto-close --title "Procesando @ 1024 X 768..."
}
Res5(){
#cd $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
convert -colors 256 $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS -resize "1280X1024!" -quality 100 -strip ~/creadorusplash/usplash_1280_1024.png | zenity --width=600 --height=100 --progress --pulsate --auto-close --title "Procesando @ 1280 X 1024..."
}
#Subrutinas de C
Header(){
#Fuentes y codigo C
cd ~/creadorusplash/
wget http://pcontramaestre.googlepages.com/USplash.tar.gz
tar xfv USplash.tar.gz
cd ..
}
cd ~
mkdir -p usplash
mkdir -p creadorusplash
##Chequiar el archivo usplash
if [ ! -f "~/creadorusplash/USplash.tar.gz" ]; then
Header
fi
#Verificar que exista el archivo Usplash.tar.gz o que haya bajado de internet
RESULTS_SIZE=`stat -c %s ~/creadorusplash/USplash.tar.gz`
if [ "$RESULTS_SIZE" = 0 ]
then
zenity --info --text='Es recomendable volver a cargar el script, el servidor puede estar sobrecargado. Si este mensaje persiste, por favor verifique si posee conexion a internet, o que el servidor esta en linea para volver a intentarlo. Por favor referirse a cbittachira.blogspot.com para mas informacion.' --title="Creador de Usplash";
exit 0
fi
Res1
Res2
Res3
Res4
Res5
cd ~/creadorusplash
make | zenity --width=600 --height=100 --progress --pulsate --auto-close --title "Compilando USplash"
mv usplash-theme-ubuntu.so ~/usplash/$OUTFILE
cd ..
#rm -R WorkInProgress
exit 0
lunes, enero 14, 2008
Script para automatizar respaldos (backups)
# Script para automatizar respaldos
DIRECTORIO_RESPALDO=/backup/ # Coloque aqui el directorio donde se va a realizar el respaldo
FECHA_ACTUAL=`date +%d%m%Y`
NOMBRE_ARCHIVO=`basename $1`$FECHA_ACTUAL
clear
sleep 1
echo
echo "------------------------------------------------------------"
echo "| `date +%d/%m/%Y` - `date +%H:%M:%S` |"
echo "| Respaldo Automatizado |"
echo "| Por pcontramaestre |"
echo "------------------------------------------------------------"
sleep 3
if [ $UID -ne 0 ]; then
echo "Somente o root pode disparar uma rotina de backup. Abortando..."
exit
elif [ $# -ne 1 ]; then
echo
echo
echo "Bienvenido al script de automatizacion de respaldos!"
echo
echo "Modo de uso:"
echo
echo " `basename $0` {diretorio}"
echo
echo
echo "Sustituya {diretorio} por el directorio a ser el backup"
echo
echo "No se olvide de editar este script y cambiar la variable DIRECTORIO_RESPALDO"
echo "colocando el directorio donde sera realizado el respaldo."
exit
elif [ -w $DIRECTORIO_RESPALDO ]; then
echo
echo "Ha elegido para realizar copias de seguridad de $ 1 directorio y todos sus contenidos."
sleep 2
echo
echo "Voy a iniciar la copia de seguridad en 15 segundos. Presione Ctrl + C si desea cancelar"
printf " ["
printf ". "
sleep 1
printf ". "
sleep 1
printf ". "
sleep 1
printf ". "
sleep 1
printf ". "
sleep 1
printf ". "
sleep 1
printf ". "
sleep 1
printf ". "
sleep 1
printf ". "
sleep 1
printf ". "
sleep 1
printf " ]"
echo
echo "Iniciando respaldo en:"
echo "5"
sleep 1
echo "4"
sleep 1
echo "3"
sleep 1
echo "2"
sleep 1
echo "1"
sleep 1
echo
echo
echo "El respaldo va a ser armado en $DIRECTORIO_RESPALDO/$NOMBRE_ARCHIVO.tar.gz"
echo
echo "Iniciando el proceso de respaldo de diretorio $1 y todo su contenido."
echo "Por favor aguarde... processando..."
echo "LOG DEL BACKUP DEL DIA `date +%d/%m/%Y`" >> $DIRECTORIO_RESPALDO/$NOMBRE_ARCHIVO.log
echo "Hora de inicio de backup: `date +%H:%M:%S`" >> $DIRECTORIO_RESPALDO/$NOMBRE_ARCHIVO.log
tar -czvf $DIRECTORIO_RESPALDO/$NOMBRE_ARCHIVO.tar.gz $1 >> $DIRECTORIO_RESPALDO/$NOMBRE_ARCHIVO.log 2> $DIRECTORIO_RESPALDO/$NOMBRE_ARCHIVO-erros.log
md5sum $DIRECTORIO_RESPALDO/$NOMBRE_ARCHIVO.tar.gz >> $DIRECTORIO_RESPALDO/$NOMBRE_ARCHIVO-md5.txt
echo
echo
sleep 1
echo "Backup realizado con exito! puedes revizar el log en $DIRECTORIO_RESPALDO/$NOMBRE_ARCHIVO.log"
echo "Un archivo md5 se encuentra en $DIRECTORIO_RESPALDO/$NOMBRE_ARCHIVO-md5.txt"
echo "Hora de termino del backup: `date +%H:%M:%S`" >> $DIRECTORIO_RESPALDO/$NOMBRE_ARCHIVO.log
echo
echo
echo "Gracias por utilizar el script de la copia de seguridad automática."
else
echo "Usted no tiene permiso para escribir en el directorio de copia de seguridad: $DIRECTORIO_RESPALDO" | tee /root/backup-$FECHA_ACTUAL.log
echo "Por favor, compruebe los permisos y vuelva a intentarlo" | tee /root/backup-$FECHA_ACTUAL.log
echo "Gracias por utilizar el script de la copia de seguridad automática."
fi
miércoles, enero 02, 2008
Script para medir la velocidad del disco duro
Codigo:
#!/bin/bash
########################################################
########## INICIO VARIABLES DE CONFIGURACION ###########
########################################################
#El archivo temporal que se utilizara para hacer el test
#Debe ser un directorio del disco duro que queremos testear
test_file="/tmp/test"
#El tamano de los bloques con los que se haran el test
#deben ser consecutivos multiples de 2
bs="1024 2048 4096 8192 16384 32768"
#El numero de veces que se hara el test con cada bloque, se hara la media
n_times=1
#El tamano del archivo que se utilizara para el test (en bytes) 1000000=1GB
count=1000000
#La posicion del resultado que da 'dd'.
#Ejecutar: dd if=/dev/zero of=borrame bs=1024 count=10
#Mirar en que posicion esta el resultao en MB/s
#Ejemplo:
# >$ dd if=/dev/zero of=borrame bs=1024 count=10
# 10+0 records in
# 10+0 records out
# 10240 bytes (10 kB) copied, 9.7221e-05 s, 105 MB/s
#El 105 esta en la posicion 8 de la linea (separando por espacios)
pos=8
#Limpiar caches despues de cada test (recomendable). 1=si, 0=no
lcaches=1
###############################################
############ INICIO DEL PROGRAMA ##############
###############################################
echo "Script para calcular el rendimiento del disco duro mediante dd"
echo "Recomendable abrirlo con un editor para configurar las opciones"
echo "Se necesitan los programas: bc, awk y bash"
echo "Fuente:www.dabax.net Licencia:GPLv3"
n_count=0
total_results=0
for b in $bs; do
actual=""
time=0
n_count=$[$n_count+1]
echo -n "bs=$b count=$count "
while [ $time -lt $n_times ]; do
partial_result=$(dd if=/dev/zero of=$test_file bs=$b count=$count 2>&1 \
|grep "MB/s" | awk "{print \$pos}")
actual="$actual $partial_result"
time=$[$time+1]
rm -f $test_file
if [ $lcaches -eq 1 ]; then echo "3" > /proc/sys/vm/drop_caches; fi
echo -n "."
done
aux=0
for a in $actual; do aux=$(echo "$aux + $a" | bc); done
aux=$(echo "$aux / $n_times" | bc)
total_results=$(echo "$total_results + $aux" | bc)
echo -n " $aux MB/sec"
count=$[$count/2]
echo ""
done
media=$(echo "$total_results / $n_count" | bc)
echo "Media: $media MB/sec"
Script para Borrar huellas ip de los log
#######################################################
# Este script borra todas las lineas de todos los archivos
# que esten en /var que contengan tu ip, conservando la fecha
# de antes de la modificacion .
######################################################################
#El valor de IP es el primer parametro de entrada IP="$1"
function main() {
mkdir -p /tmp/.adk &>/dev/null
for i in `find /var/log 2>/dev/null`
do linea=$(cat $i 2>/dev/null | grep $IP )
if [ "$linea" != "" ] ; then
ls -l $i > /tmp/.adk/fecha 2>/dev/null
aux=$(awk '{ print $6 $7 }' /tmp/.adk/fecha 2>/dev/null)
TIEMPO=$(echo $aux | tr "-:" "\000" 2>/dev/null)
sed "/$IP/d" $i > /tmp/.adk/datos 2>/dev/null
cat /tmp/.adk/datos > $i 2>/dev/null
touch -t $TIEMPO $i 2>/dev/null
echo -e "IP limpiada del archivo $i"
fi
done
rm -rf /tmp/.adk &>/dev/null
}
############################################################################ #Funcion principal ############################################################################ if [ -z $IP ]; then
echo -e "ERROR: ejecutar con ./script IP_A_BORRAR\n";
exit 1;
fi
clear
echo -e "\n \033[40m\033[1;37m adk.sh v0.1 \033[0m\n"
if [ $GROUPS != 0 ]; then
echo -e "ERROR: Necesitas tener privilegios de root para poder ejecutar este script"
exit
fi
echo -e "\n Empecemos aborrar tu ip de los log de este sistema.\n"
main
echo -e "\n Ordenador Limpiado Completamente"
viernes, junio 16, 2006
Script para construir un archivo .iso
# Script para construir un archivo .iso
# Uso:
#
# crear-iso DIRECTORIO_ORIGNEN DIRECTORIO_DESTINO ARCHIVO
#
usage(){
echo "Script para creacion de imagen .ISO"
echo
echo "Uso: "
echo " crear-iso
}
if [ $1 == --help ]; then
echo
usage
echo
exit 0
fi
if [ ! $# == 3 ]; then
echo
usage
echo
exit 1
fi
DIR_ORIGEM=$1
DIR_DEST=$2
if [ $DIR_DEST == $DIR_ORIGEM ]; then
echo "El directorio de origen y destino son los mismos"
echo "No es posible continuar"
echo
exit 1
fi
NOME_CD=$3
if [ ! -d "$DIR_DEST" ]; then
echo "La ruta de destino no encontrada!"
echo
usage
echo
exit 1
else
if [ ! -d "$DIR_ORIGEM" ]; then
echo "La ruta de origen no encontrada!"
echo
usage
echo
exit 1
else
if [ ! -w $DIR_DEST ]; then
echo "No es posible grabar en $DIR_DEST"
echo
exit 1
else
cd $DIR_DEST
if [ -e "$NOME_CD" ]; then
echo "Ya existe un archivo con el nombre $NOME_CD en $DIR_DEST"
echo "La imagen no va a ser creada"
echo
exit 1
fi
cd -
echo "Creando imagen ..."
mkisofs -V $NOME_CD -l -o $DIR_DEST/$NOME_CD $DIR_ORIGEM
if [ ! -f "$DIR_DEST/$NOME_CD" ]; then
echo "La imagen no pudo ser creada!"
else
echo "Imagen creada con exito"
fi
fi
fi
fi
miércoles, junio 14, 2006
Script para abrir o cerrar unidad de cdrom
#Abrir o cerrar CD\DVD ROM
menu ()
{
clear
echo
echo "##############################"
echo "# #"
echo "# Abre e fecha o CD\DVD ROM #"
echo "# #"
echo "##############################"
echo
echo ">>>Opciones:"
echo
echo "[1] Abrir CD\DVD ROM"
echo "[2] Cerrar CD\DVD ROM"
echo "[3] Ir a la pagina de Autor"
echo "[0] Salir"
echo
}
central ()
{
menu
read opcion
while [ $opcion != "s" ];
do
menu
case $opcion in
1) abrir;;
2) cerrar;;
3) forum;;
0) salir;;
esac
read opcion
done
}
abrir ()
{
clear
echo
echo "Abriendo CD\DVD ROM..."
echo
eject
clear
central
}
cerrar ()
{
clear
echo
echo "Cerrando CD\DVD ROM..."
echo
eject -t
clear
central
}
forum ()
{
clear
echo
echo "Abrinendo Pagina del autor"
echo
firefox http://cbittachira.blogspot.com/
clear
central
}
salir ()
{
clear
exit
}
clear
central
clear
martes, junio 13, 2006
Monitoreando squid en linea
# Script RELAT
#tail -f /var/log/squid/access.log > /dev/tty9 &
if [ "$1" = "ip" ]; then
echo $2
tail -f /var/log/squid/access.log | grep $2 | awk '{ printf "%12s %-67s\n", $3, $7}'
else
tail -f /var/log/squid/access.log |awk '{ printf "%12s %-68s\n", $3, $7}'
fi