shell script

<< < (2/16) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior