shell script
cokeing:
(X)Dialogs
Xdialog y dialog son dos utilidades clásicas que permiten mejorar tus scripts de shell con una interfaz de usuario gráfica.
INGRESAR (X)DIALOG...
con dialog y Xdialog puedes diseñar una aplicación gráfica con sólo escribir un breve shell script. Dialog es un programa basado puramente en terminal Xdialog es un programa X11.
Aquí encontrarás un ejemplo:
Puedes escribir (o bien copiar/pegar) lo siguiente en un shell (xterm, konsole,....):
Código
bash
Xdialog --yesno "Do you want to learn more about Xdialog?" 0 0;\
case $? in
0)
echo "Result: Yes chosen.";;
1)
echo "Result: No chosen.";;
255)
echo "ESC pressed.";;
esac
Si utilizas dialog en lugar de Xdialog (borra la X en la segunda línea en el script que se mostró anteriormente) entonces obtendrás una aplicación que se basa en expresiones extrañas que se ejecuta sin el xterm y no abre una ventana separada. En algunos casos esto es más apropiado para un shell script ya que se ejecuta simplemente sin la ventana terminal. Esto es importante si quieres ejecutarlo en forma remota con diferentes hosts entre tu ordenador y el host remoto donde el IP routing no se encuentra disponible. En este caso dialog funcionará pero no podrás iniciar una aplicación X11 del tipo de Xdialog.
Lo que antecede es una aplicación de dialog/Xdialog que no tendrá realmente uso pero que muestra que fácil es programar un diálogo gráfico sencillo. Hay más cuadros de diálogo interesantes tales como calendario, menúes, administrador de archivos, barra progess, cuadro de texto, casilla de mensajes, cuadro de diálogo de contraseña, ... Si ejecutas:
Código:
dialog --help
o
Xdialog --help
verás un listado de los cuadros de diálogo disponibles. Xdialog ofrece algunos cuadros de diálogo más que dialog.
COMO FUNCIONA
Los cuadros de diálogo se configuran en la línea de comandos.
Código:
dialog --yesno "text string" <height> <width>
Después de escribir dialog o Xdialog debes indicar el nombre del cuadro de diálogo que deseas, seguido de sus parámetros específicos.
El cuadro de diálogo yesno implica 3 parámetros. La altura <height> y el ancho <width> pueden establecerse en cero en cuyo caso la geometría del cuadro será ajustada automáticamente al tamaño del texto. El resultado se mostrará como estado de salida en la pantalla en la variable "$?". Si hay algo más que deba mostrarse como, por ejemplo, los nombres de las opciones seleccionadas, esto aparecerá como un error tipo (o standard). El error tipo (o standard) generalmente se muestra en la pantalla pero puede ser redireccionado con ">2".
Una solución muy simple pero eficaz.
-----------------------------------------------------------------------------
Venga. que lo siga otro ;-)
2.6.0-r:
Hace tiempo que empece con este script pero lo tengo aparcado y apenas ya me pongo a hacer script de bash. Si alguien quiere mejorarlo es libre de hacerlo.
Código
#!/bin/bash
#bash script para la administracion de bases de datos mysql
#by ^Galactus^, estelaplateada@softhome.net
echo ".:EASYMySQL:. script para la administración de bases de datos MySQL"
#Comrpobando la existencia de gdialog en el sistema
if [ ! -f wihch dialog ]; then
echo "No se ha encontrado gdialog, necesitas gnome-utils"
exit 1
fi
echo "..-:IDENTIFICANDOSE:-.."
echo Nombre de usuario:
read NAME
echo Nombre del host:
read HOST
echo Password
read PASS
#Función para crear bases de datos en mysql.
function create {
echo "..-:CREAR UNA BASE DE DATOS NUEVA:-.."
echo Nombre de la base de datos:
read new_db
touch newbase.sql
date > easylog.sql
echo "CREATE DATABASE $new_db;" >> newbase.sql
echo "SHOW DATABASES;" >> newbase.sql
echo "quit" >> newbase.sql
cat newbase.sql >> easylog.sql
dialog --title "Crear Una Base De Datos Nueva" --yesno "¿Desea crear la nueva db?" 200 100;
if [ $? -eq 0 ]; then
mysql -t -h $HOST -u $NAME -p $PASS < newbase.sql
rm newbase.sql
else
create
rm newbase.sql
fi
}
#Función para borrar bases de datos en mysql
function drop {
echo "..-:BORRAR BASE DE DATOS:-.."
echo "SHOW DATABASES;" > delbase.sql
mysql -t -h $HOST -u $NAME -p $PASS < delbase.sql
echo "Escriba el nombre de la base de datos que desea borrar:"
read del_db
echo "Esta seguro de querer borrar esta db '$del_db' [si/no]"
read respuesta
if [ $respuesta = si ]; then
echo "DROP DATABASE $del_db;" > delbase.sql
echo "SHOW DATABASES;" >> delbase.sql
mysql -t -h $HOST -u $NAME -p $PASS < delbase.sql
cat delbase.sql >> easylog.sql
rm delbase.sql
elif [ $respuesta = no ]; then
drop
else
exit
fi
}
#Función para crear tablas en db de mysql
function table {
echo "..-:CREAR NUEVA TABLA EN DB:-.."
echo "SHOW DATABASES;" > newtable.sql
mysql -t -h $HOST -u $NAME < newtable.sql
echo "Escriba el nombre de la base de datos en la que desea crear una tabla:"
read db_use
echo "USE $db_use;" > newtable.sql
mysql -t -h $HOST -u $NAME < newtable.sql
echo "Cambiando a.. '$db_use'"
echo "Escriba el nombre de la tabla que desea crear en la db '$db_use':" read db_table
echo "CREATE TABLE $db_table;" > newtable.sql
mysql -t -h $HOST -u $NAME < newtable.sql
echo "Se creo la tabla '$db_table' en la db '$db_use'."
date > easylog.sql
cat newtable.sql >> easylog.sql
rm newtable.sql
}
#menú de opciones
opcion="Crear_db Borrar_db Crear_Tabla Salir"
select opt in $opcion; do
if [ "$opt" = "Crear_db" ]; then
touch easylog.sql
create
elif [ "$opt" = "Borrar_db" ]; then
touch delbase.sql
drop
elif [ "$opt" = "Crear_Tabla" ]; then
touch newtable.sql
table
elif [ "$opt" = "Salir" ]; then
echo GOOD BYE
exit
else
echo seleccione una opción correcta
fi
Tengo algunas funciones mas para mysql echas en bash, si me da la vena las pondre por aqui.
2.6.0-r:
un lapsus, no me habia dado cuenta que puse las mismas funciones que el script anterior.
Os pongo este, que es un menu grafico que empece a hacer para mi script de mysql. Como el anterior tampoco esta terminado.
Código
#!/bin/bash
#bash script para la administracion de bases de datos mysql
echo ".:EASYMySQL:. script para la administración de bases de datos MySQL"
#source llama al archivo que contiene las funciones
source functions
dialog --backtitle "EasyMySQL" --title "Login" --clear --ok-label "Aceptar"\
--inputmenu "Para poder usar EasyMySQL debe ingresar los datos de usuario y conexion" 20 50 10 \
"Nombre de usuario:" "$user" \
"Nombre del host:" "$host" \
"Password:" "$pass" \
#menú de opciones
echo "[1] Crear Base De Datos"
echo "[2] Borrar Base De Datos"
echo "[3] Crear Tabla"
echo "[4] Salir"
echo
read -p "Seleccione una opcion: " OPCION
case $OPCION in
1) create;;
2) drop;;
3) table;;
4) exit;;
esac
..sR. aDiKtO..:
Yo tambien quiero poner un pequeño script que hice hace un par de dias:
Código
#!/bin/sh
#
############################################################################
# "adk.sh v0.1" hecho por el ..sR. aDiKtO.. <adikto@elhacker.net>
#
# 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 .
#
# Este script se distribuye segun la licencia GPL v.2 o posteriores y
# no tiene garantias de ningun tipo. Puede obtener una copia de la
# licencia GPL o ponerse en contacto con la Free Software
# Foundation en http://www.gnu.org
############################################################################
#
# Variable que contiene tu ip
IP="127.0.0.1"
############################################################################
# Funcion encargada de limpiar todos los logs
############################################################################
function main()
{
mkdir -p /tmp/.adk &>/dev/null
for i in `find /var 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
############################################################################
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 a borrar tu ip de los log de este sistema.\n"
main
echo -e "\n Ordenador Limpiado Completamente"
SALU2
2.6.0-r:
Wow! casi, casi lo que estaba buscando... Funcionaria en un SunOS?
Solaris creo que no usa bash ¿no?
Navegación
[#] Página Siguiente
[*] Página Anterior