elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  shell script
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 2 3 4 5 [6] 7 8 Ir Abajo Respuesta Imprimir
Autor Tema: shell script  (Leído 174,168 veces)
JuszR


Desconectado Desconectado

Mensajes: 2.866


Programming & RI


Ver Perfil
Re: shell script
« Respuesta #50 en: 10 Septiembre 2006, 04:54 am »

Cual de esos esta en español men?
Ninguno. ;D

Pero como TLDP está en muchos idiomas, aquí están el de Bash en español: http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/
http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prompt-Como/
 
;)


En línea

- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]
NEO+

Desconectado Desconectado

Mensajes: 185


WhO DaRES WiN


Ver Perfil
Re: shell script
« Respuesta #51 en: 13 Septiembre 2006, 00:43 am »

Hola.
Tengo un script que cada dia a las 21, me crea un backup de unos directorios importantes.
Lo que me gustaría hacer, es que ese script contase el número de backups que hay y si hay más de tres que borre los más viejos.
Los backups son de la forma: nombre-fecha.tar.gz (universidad-09092006.tar.gz ; por ejemplo)
Sabéis algun comando o alguna forma de hacer eso?

Salu2


En línea

Dadme diez hackers y dominaré el mundo
H@T


Desconectado Desconectado

Mensajes: 540



Ver Perfil WWW
Re: shell script
« Respuesta #52 en: 9 Noviembre 2006, 01:38 am »

Consulta: Tengo que hacer un script que realice actividades de administracion de sistema y al final de script debo matar al bash, es decir que se ejecute un script ni bien inicio la maquina (eso ya lo tengo hecho), que de ciertas opciones (ya lo tengo hecho) y por ultimo (me falta) quiero que como ultima opcion el usuario solo tenga la opcion de salir del script, pero que lo desloguee, probe poner logout ó exit pero no funciona...

Tambien probe kill -9 $$ que supuestamente asi mataria el bash, pero no funciona!!

Como puedo hacerlo?

Gracias
En línea

H@T
http://www.redes-seguridad.com.ar
redes-seguridad.blogspot.com/
hakais
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.012


:-P


Ver Perfil WWW
Re: shell script
« Respuesta #53 en: 9 Noviembre 2006, 13:17 pm »

No comprendo bien la pregunta, si pasteas el script puede que se endienda mejor.
En línea

El hacker es el filósofo de la actualidad
H@T


Desconectado Desconectado

Mensajes: 540



Ver Perfil WWW
Re: shell script
« Respuesta #54 en: 10 Noviembre 2006, 11:49 am »

Por mas que te agregue el script no vas a entender lo que quiero porque no esta hecho lo que me falta, y por mas que veas todo lo anterior que hice no te serviria pq no sirve de nada con respecto a lo que me falta. Entendes?

Lo explico mejor, quiero ingresar al script una linea que me mate el bash, es decir que me desloguee la sesion en la cual estoy logueado?

Se entendio mejor?
En línea

H@T
http://www.redes-seguridad.com.ar
redes-seguridad.blogspot.com/
hakais
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.012


:-P


Ver Perfil WWW
Re: shell script
« Respuesta #55 en: 11 Noviembre 2006, 14:02 pm »

Ok, ahora si lo entiendo.
Pues supongo que puede hacerse con un
Código:
kill -9 $PPID

La veriable PPID contiene el pid del proceso actual que estas ejecutando (en tu caso el login de una bash), y kill -9 supongo que ya sabes lo que hace...

Suerte.
En línea

El hacker es el filósofo de la actualidad
H@T


Desconectado Desconectado

Mensajes: 540



Ver Perfil WWW
Re: shell script
« Respuesta #56 en: 13 Noviembre 2006, 05:10 am »

mmm interesante, una cosa muy facil que sabia, pero sinceramente no lo he probado, gracias man, lo probare mañana en la pc y te comento si funciono, creo que funcionara....

Nuevamente muchas gracias, a veces uno tiene su solucion en sus narices y no las ve!!!!
En línea

H@T
http://www.redes-seguridad.com.ar
redes-seguridad.blogspot.com/
ramkiller

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: shell script
« Respuesta #57 en: 6 Marzo 2008, 19:00 pm »

a ver estoi realizando un script para mis copias de seguridad, ya he conseguido que lo envie a traves de ssh, el problema ahora es que quiero comprobar mediante el script si tengo espacio suficiente en el equipo que va a recibir la copia de seguridad mediante ssh y no se comor realizarlo.
tambien me gustaria comprobar la integridad del fichero transferido y en caso de error, volver a transferirlo.
estoi harto de dar vueltas por google y no encuentro nada si me pudieseis hechar una mano os lo agradeceria

un saludo
En línea

hakais
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.012


:-P


Ver Perfil WWW
Re: shell script
« Respuesta #58 en: 9 Marzo 2008, 16:57 pm »

ramkiller todos tus problemas pueden ser resueltos con la herramienta "rsync", mirate un poco de que va, es muy sencillo y te facilita mucho el trabajo de tu script. También tienes rdiff-backup que es un poco más completo.

Aunque si no quieres utilizar esas dos herramientas y quieres seguir con tu script. Voy a darte algunos datos a ver si te ayudan:

Citar
comprobar mediante el script si tengo espacio suficiente en el equipo que va a recibir la copia de seguridad mediante ssh

Código
  1. ESP_LIBRE= $(ssh USER@HOST 'df | grep sda1'  | awk '{print $4}')
  2. TAM_ARCH=$(ls -s ARCHIVO | awk '{print $1}')
  3.  
  4. if [ $ESP_LIBRE -lt $TAM_ARCH ]; then
  5. NO SE PUEDE HACER EL BACKUP
  6. else
  7. SI SE PUEDE HACER EL BACKUP
  8. fi

Algo asi podría servirte, pero con tus datos. awk '{print $4}' imprime el parámetro 4 (separado por espacios) de la cadena que entra por la entrada estandar. Asegúrate de que tu df imprime el tamaño en esa posición.

Citar
tambien me gustaria comprobar la integridad del fichero transferido y en caso de error
Puedes comprobar la integridad con la fimra MD5 mediante el comando md5sum.

Por cierto, si no encuentras nada a google es porque seguramente buscas las cosas concretas que necesitas. Deberias estudiar a un nivel más general, leer un buen manual de bash script (sobre funciones, condicionales, bucles, sentencias, variables, exitcodes, entras/salidas, tuberias, etc...) y practicar con los comandos mientras lees sus manuales (man ssh, man awk, man grep, man df, man md5sum, etc...).

Suerte.
« Última modificación: 21 Noviembre 2010, 17:58 pm por Leo Gutiérrez. » En línea

El hacker es el filósofo de la actualidad
Leon8086x

Desconectado Desconectado

Mensajes: 125


Ver Perfil
Re: shell script
« Respuesta #59 en: 9 Octubre 2008, 21:41 pm »

        Exelente el tutorial, la cosa es que pense taria que alguien le haga un ctrl copy ctrl v y lo pornga enteriro en un txt para bajar o tenerlo mas ordenado en un unico archivo puesto que no cuesta nada. bueno por eso lo acabo de hacer.

        ---------------------------------------------------------------------------------------------------------------
        ¿Que es un shell script?

        Son basicamente programas escritos en lenguaje de shell muy parecidos a los programas de procesamiento por lotes de windows. Es natural que linux nos ofrezca esta capacidad gracias su sistema de entrada/salida que lo hace tan potente.

        ¿Para que nos sirve un shell script?

        Para automatizar tareas que hacemos habitualmente ahorrando un tiempo considerable al usuario.

        Ejemplo:

        Para que comprendamos el funcionamiento y que es un shell script la mejor manera es que veamos un ejemplo de un sencillo script que por ejemplo mandaremos un mail con el contenido de un archivo de log a un usuario registrado en nuestro sistema.

        Lo primero que debemos hacer es determinar que tipo de shell usaremos para el script y donde se encuentra en el sistema.

        El nombre del destinatario y su mail es algo que tambien deveremos averiguar.

        Pensaremos que esto sera como leer noticias y para ellos usaremos el comando inn (internetnews)

        Antes de seguir hay que explicar que es el concepto de canalizacion en linux. En linux no solo se puede redireccionar la entrada STDIN y la salida STDOUT de unos archivos a otros, si no que, como linux concibe esta entrada y salida como flujos de datos, tambien existe el concepto de canalizacion de flujos directamente de un programa a otro. Gracias a las canalizaciones se puede usar directamente la salida STDOUT de un programa como la entrada STIN de otro.

        Para introducir una canalizacion en linux hay que introduccir en la linea de comandos la barra vertical (|) entre los programas.

        Usaremos entre otros el comando tail que sirve para mostrar la parte final del documento. Como se trata de un archivo de logs solo nos interesara enviarle los ultimos registros del archivo puesto que la mayor parte de los registros aumentan por el final.

        Usaremos otros comando que no voy a explicar ya que esto es solo un ejemplo para que se vea el funcionamiento de un shell script.
        Código:
      [/list][/list]
      Código
      1. #!/bin/bash
      2. echo Hola a todos!! | mail destinatario@ensistema.mail
      3. grep "destinatario" /usr/local/httpd/logs/access_log | tail -l100 | lpr xterm -e trn &
      4. exit
      5.  
      Guardaremos esto en un archivo llamado mail_log y le daremos permisos de ejecucion chmod 755 mail_log.

      Ya solo nos quedara ejecutarlo ./mail_log.

      Pues hasta aqui creo que queda claro que es un script, para que se usa y como hacer uno.

      Cualquiera que desee añadir informacion a este tema puede hacerlo libremente intetare postear mas cosas sobre shell script ya que me parece un tema interesante y algo que cualquier usuario de linux deberia dominar en mayor o menor medida.

      Aver si la gente se anima y creamos un buen tema sobre shell script para empezar aprender desde 0.

      « Última modificación: 20 Mayo 2003, 20:35 por E·M·P·I·C·A·L »     En línea



      ..sR. aDiKtO..
      Colaborador

       Desconectado

      Mensajes: 1.455



      ..enseña lo que sabes, aprende lo que no..


                 Re:shell script
      « Respuesta #1 en: 21 Mayo 2003, 01:40 »   

      Ya k E*M*P*I*C*A*L ha empezado este tema ( k me parece MUY interesante), voy a continuar yo, primero con como se construye un shell script:
      Se crea un archivo de texto y se introduce en la primera linea el interprete k se va a utilizar para ejecutarlo, en el caso anterior:
      Código:
      Código
      1. #!/bin/bash
      En las lineas siguientes se ponen las intrucciones, una por linea:
      Código:
      Código
      1. echo Hola a todos!! | mail destinatario@ensistema.mail
      2. grep "destinatario" /usr/local/httpd/logs/access_log | tail -l100 | lpr xterm -e trn &
      3. exit
      o en la misma linea separadas por un punto y coma ( ; ), excepto cuando es background o nohup.
      Código:
      Código
      1. echo Hola a todos!! | mail destinatario@ensistema.mail; grep "destinatario" /usr/local/httpd/logs/access_log | tail -l100 | lpr xterm -e trn &
      2. exit
      Luego se tiene k dar permisos de ejecucion y ejecutarlo como ha dicho E*M*P*I*C*A*L. Tambien se puede ejecutar con un interprete de comandos distito al predefinido, por ejemplo con:
      Código:
      Código
      1. sh mail_log
      ó
      Código
      1. ksh mail_log
        ó
        ...
        Con estas ordenes el script seria ejecutado por sh ó ksh ó ... cuando en verdad tenia k ser ejecutado por bash (primera linea del script)

      Continuemos con los redireccionamientos:
      La tuberia ( pipe, o raya vertical '|' ), es un programa k redirige la salida de un programa a la entrada de otro, veamos un ejemplo:
      Código:
      Código
      1. cat archivo.txt | grep adikto
          Esta orden hace:
          cat archivo --> muestra el contenido de un archivo de texto.
          grep adikto --> muestra por pantalla las lineas k tengan el patron, en este caso 'adikto'.
          cat archivo.txt | grep adikto --> muestra por pantalla las lineas del archivo archivo.txt k tengan la palabra adikto.
          Como se ha podido comprobar, la salida de 'cat archivo.txt' se ha introducido como entrada a 'grep adikto' a traves de '|' y el resultado se ha mostrado por la salida estandar ( la pantalla).
          Redireccion de salida ( '>' ), es redirigir la salida estandar a otro sitio, veamos las clases k hay:
          '>' --> redireccion truncada, redirige la salida a otro sitio. Un ejemplo de esto seria:
          Código:
          ls -l / > archivo.txt
          Con lo k el contenido del archivo.txt contendria la salida del 'ls -l /'
          '>>' --> redireccion añadida, añade la salida a otro sitio. Por ejemplo:
          Código:
          ls -l /boot >> archivo.txt
          El contenido del archivo archivo.txt contiene la salida del 'ls -l /' del ejemplo anterior mas el 'ls -l /boot' de este ejemplo.
          Si ahora hicieramos lo mismo k en el ejemplo anterior:
          Código:
          ls -l / > archivo.txt
          El archivo archivo.txt SOLO contendria el 'ls -l /'.
          '2>' --> redireccion de errores, redirige la salida del programa y los errores a otro sitio. Por ejemplo:
          Código:
          cdrecord -adikto 2> archivo.txt
          La opcion '-adikto' no existe, y el error k tendria k salir va a parar al archivo archivo.txt.
          '&>' --> redireccionamiento total, redirige TODO a otro sitio. Por ejemplo:
          Código:
          cdrecord --help &> archivo.txt
          La ayuda de cdrecord ( --help ) va a parar a archivo.txt.
        Redireccionamiento de entrada ( '<' ), la entrada de un programa es un archivo. Por ejemplo:
        Código:
        grep adikto < archivo.txt
        La orden 'grep aditko' toma como entrada, el contenido de 'archivo.txt', (vease la similitud con las tuberias). Muestra las lineas k contiene archivo.txt con la palabra 'adikto'.
        [/list]

        Ahora le toca a otro continuar......xDDD

        « Última modificación: 10 Junio 2004, 19:07 por ..sR. aDiKtO.. »     En línea




        Rojodos
        "If you wanna be free, you must be different"

         Desconectado

        Mensajes: 3.525




                    Re:shell script
        « Respuesta #2 en: 22 Mayo 2003, 05:06 »   

        ----------   Uso de variables en shell-script:

        Asignación: Nombre=valor
        Acceso a su contenido: $Nombre

        Podemos utilizar el comando read para leer variables desde teclado y el comando echo para visualizar su contenido (este comando también puede utilizarse para mostrar mensajes por pantalla).

        Ejemplo:

        Código:
        read nombre apellido1 apellido2
        echo Los valores leidos por teclado son: $nombre $apellido1 $apellido2

        ----------   Variables especiales:
        Código
        1. $0: Nombre del Shell-Script que se está ejecutando.
        2. $n: Parámetro o argumento pasado al Shell-Script en la posición n, n=1,2,...
        3. $#: Número de argumentos.
        4. $*: Lista de todos los argumentos.
        5. $$: PID del proceso que se está ejecutando.
        6. $!: PID del último proceso ejecutado.
        7. $?: Salida del último proceso ejecutado



        Le toca a otro

        « Última modificación: 22 Mayo 2003, 06:14 por Rojodos »     En línea



        ..sR. aDiKtO..
        Colaborador

         Desconectado

        Mensajes: 1.455



        ..enseña lo que sabes, aprende lo que no..


                   Re:shell script
        « Respuesta #3 en: 22 Mayo 2003, 05:47 »   

        Ampliando un poco lo de las varibles, una varible puede tener como valor el resultado de un programa, por ejemplo:
        Código:
        variable=$(ls --help)
        El unico problema es k lo guarda sin retorno de carro. Para ver el resultado, ya sabeis:
        Código:
        echo $variable
        Una cosa curiosa es k los bash scripts tienen un error con la orden 'echo', para solucionarlo simplemente hay k utilizar la opcion '-e' y poner entre comillas los datos a mostrar:
        Código:
        echo -e "Asi ya no hay error"

        Ademas se puede utilizar la barra invertida al final de una linea para indicar al echo k la frase continua, aparte el echo tiene opciones adicionales como salto de linea, .... (vease 'man echo' y 'info echo'), por ejemplo:
        Código:
        echo -e " toda \
        esta \
        frase \
        se \
        escribe \
        en la \
        misma \
        linea."
        Esto puede ser util para organizar el bash script, al final os pondre un ejemplo k kedara todo mas claro
                              
        En los bash scripts se pueden utilizar colores en las letras y de fondo, simplemente con:
        Código:
        echo -e "\033[1;37m BLANCO \033[0m"
        Con lo k mostrara la palabra BLANCO en color blanco ( k original k soy xDD). Veamos ahora k colores hay:
        Código:
        Negro --> 0;30m    
        Gris oscuro --> 1;30m
        Rojo --> 0;31m    
        Rojo claro --> 1;31m
        Verde --> 0;32m    
        Verde claro --> 1;32m
        Marrón --> 0;33m    
        Amarillo --> 1;33m
        Azul --> 0;34m    
        Azul claro --> 1;34m
        Púrpura --> 0;35m    
        Púrpura claro --> 1;35m
        Cyan --> 0;36m    
        Cyan claro --> 1;36m
        Gris claro --> 0;37m    
        blanco --> 1;37m
        Como habreis supuesto para k las palabras salgan de un color hay k escribir:
        Código:
        \033[
        Y acontinuacion el codigo del color k os he puesto un par de lineas mas arriba, y para volver al color por defecto:
        Código:
        \033[0m

        Tambien se puede cambiar el color de fondo, de la misma manera k antes pero con esta codificacion:
        Código:
        Negro --> 40m  
        Rojo --> 41m  
        Verde --> 42m  
        Marrón --> 43m  
        Azul --> 44m  
        Púrpura --> 45m    
        Cyan --> 46m
        Gris claro --> 47m

        Un shell script k os puede ser util para recordar esto es:
        Código:
        #!/bin/bash
          echo "  Sobre gris claro:        Sobre negro:"
          echo -e "\033[47m\033[1;37m  Blanco        \033[0m\
          1;37m \
          \033[40m\033[1;37m  Blanco        \033[0m"
          echo -e "\033[47m\033[37m  Gris Claro    \033[0m\
             37m \
          \033[40m\033[37m  Gris Claro    \033[0m"
          echo -e "\033[47m\033[1;30m  Gris          \033[0m\
           1;30m \
          \033[40m\033[1;30m  Gris          \033[0m"
          echo -e "\033[47m\033[30m  Negro         \033[0m\
             30m \
          \033[40m\033[30m  Negro         \033[0m"
          echo -e "\033[47m\033[31m  Rojo          \033[0m\
             31m \
          \033[40m\033[31m  Rojo          \033[0m"
          echo -e "\033[47m\033[1;31m  Rojo Claro    \033[0m\
           1;31m \
          \033[40m\033[1;31m  Rojo Claro    \033[0m"
          echo -e "\033[47m\033[32m  Verde         \033[0m\
             32m \
          \033[40m\033[32m  Verde         \033[0m"
          echo -e "\033[47m\033[1;32m  Verde Claro   \033[0m\
           1;32m \
          \033[40m\033[1;32m  Verde Claro   \033[0m"
          echo -e "\033[47m\033[33m  Marrón        \033[0m\
             33m \
          \033[40m\033[33m  Marrón        \033[0m"
          echo -e "\033[47m\033[1;33m  Amarillo      \033[0m\
           1;33m \
          \033[40m\033[1;33m  Amarillo      \033[0m"
          echo -e "\033[47m\033[34m  Azul          \033[0m\
             34m \
          \033[40m\033[34m  Azul          \033[0m"
          echo -e "\033[47m\033[1;34m  Azul Claro    \033[0m\
           1;34m \
          \033[40m\033[1;34m  Azul Claro    \033[0m"
          echo -e "\033[47m\033[35m  Púrpura       \033[0m\
             35m \
          \033[40m\033[35m  Púrpura       \033[0m"
          echo -e "\033[47m\033[1;35m  Rosa          \033[0m\
           1;35m \
          \033[40m\033[1;35m  Rosa          \033[0m"
          echo -e "\033[47m\033[36m  Cyan          \033[0m\
             36m \
          \033[40m\033[36m  Cyan          \033[0m"
          echo -e "\033[47m\033[1;36m  Cyan Claro    \033[0m\
           1;36m \
          \033[40m\033[1;36m  Cyan Claro    \033[0m"

         
        Las variables son creadas y destruidas en el mismo script, si se kieren conservar o exportar a otra shell o script, se hace con:
        Código:
        export variable
        A partir de ese momento la varible 'variable' k era local, pasa a ser global, y se puede utilizar en otras shells.

        « Última modificación: 22 Mayo 2003, 06:26 por ..sR. aDiKtO.. »     En línea




        EMPICAL
        Visitante


                  Re:shell script
        « Respuesta #4 en: 22 Mayo 2003, 21:14 »   

        Ejecuciones condicionales while

        Para utilizar las instrucciones condicionales es necesario crear una condicion que la instruccion pueda comprobar.

        While

        El comando while realiza acciones mientras se cumpla una condicion determinada.

        Para entender mejor como funciona esta condicion vamos a poner un ejemplo:

        Queremos mandar mails cada cierto tiempo a una serie de personas y se seguiran enviando mientras no recibamos contestacion. Una vez recibida la contestacion los mails dejaran de enviarse.
        Código:
        >set saludo=('/bin/mail | grep -cv No')
        >wihle ($saludo==0)
        ?echo "Hola soy EMPICAL" | mail destinatario@caulquiera.mail
        ?echo "Hola soy EMPICAL" | mail destinatario2@caulquiera.mail
        ?sleep 60
        ?set saludo=('/bin/mail | grep -cv No')
        ?end
        Hacemos uso del comando grep para contar las lineas (opcion -c) que no conitienen la palabra No y asigna el resultado a la variable saludo. Si se canaliza la salida de /bin/mail hacia grep y se escriben los cambios entre comillas, la shell ejecutara los cambios y devolvera la salida correspondiente, que es lo que se asigna a la variable.

        Si fueramos malintencionados y variaramos algunas cosillas de este script podriamos llenar los buzones de correo de los destinatarios en poco tiempo, por que mientras la variable $saludo siga siendo igual a 0 el script seguira enviando mensajes cada 60 segundos a los destinatarios. Piensen que pasaria si modificamos sleep y le damos el valor 1, apenas daria tiempo a los destinatarios a contestar y tendrian su correo saturado y mientras no se reciba ningun mensaje en /bin/mail seguira mandando mensajes. Ya que hasta que no reciba un mail no habra una linea que no contenga No en mail.

        Mientras se cumpla la condicion while ($saludo==0) mail seguira enviando mensajes a los destinatarios.

        « Última modificación: 22 Mayo 2003, 21:14 por E·M·P·I·C·A·L »     En línea



        cokeing

         Desconectado

        Mensajes: 1.039



        SôNïC r0oLz


                   Re:shell script
        « Respuesta #5 en: 17 Noviembre 2003, 04:37 »   

        (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:
        Código
        1. bash
        2. Xdialog --yesno "Do you want to learn more about Xdialog?" 0 0;\
        3. case $? in
        4. 0)
        5. echo "Result: Yes chosen.";;
        6. 1)
        7. echo "Result: No chosen.";;
        8. 255)
        9. echo "ESC pressed.";;
        10. 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:
        Código
        1. dialog --help
        o
        Código
        1. 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 ;-)

            En línea




        2.6.0-r
        Visitante


                  Re:shell script
        « Respuesta #6 en: 11 Enero 2004, 06:49 »   

        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:
        Código
        1. #!/bin/bash
        2. #bash script para la administracion de bases de datos mysql
        3. #by ^Galactus^, estelaplateada@softhome.net
        4. echo ".:EASYMySQL:. script para la administración de bases de datos MySQL"
        5.  
        6. #Comrpobando la existencia de gdialog en el sistema
        7. if [ ! -f wihch dialog ]; then
        8. echo "No se ha encontrado gdialog, necesitas gnome-utils"
        9. exit 1
        10. fi
        11.  
        12.        echo "..-:IDENTIFICANDOSE:-.."
        13.        echo Nombre de usuario:
        14.        read NAME
        15.        echo Nombre del host:
        16.        read HOST
        17.        echo Password
        18.        read PASS
        19.  
        20. #Función para crear bases de datos en mysql.
        21. function create {
        22.        echo "..-:CREAR UNA BASE DE DATOS NUEVA:-.."
        23.        echo Nombre de la base de datos:
        24.        read new_db
        25.        touch newbase.sql
        26.        date > easylog.sql
        27.        echo "CREATE DATABASE $new_db;" >> newbase.sql
        28.        echo "SHOW DATABASES;" >> newbase.sql
        29.        echo "quit" >> newbase.sql
        30.        cat newbase.sql >> easylog.sql
        31.        dialog --title "Crear Una Base De Datos Nueva" --yesno "¿Desea crear la nueva db?" 200 100;
        32.        if [ $? -eq 0 ]; then
        33.        mysql -t -h $HOST  -u $NAME -p $PASS < newbase.sql
        34.        rm newbase.sql
        35.        else
        36.        create
        37.        rm newbase.sql
        38.        fi
        39.  
        40. }
        41. #Función para borrar bases de datos en mysql
        42. function drop {
        43.        echo "..-:BORRAR BASE DE DATOS:-.."
        44.        echo "SHOW DATABASES;" > delbase.sql
        45.        mysql -t -h $HOST -u $NAME -p $PASS < delbase.sql
        46.        echo "Escriba el nombre de la base de datos que desea borrar:"
        47.        read del_db
        48.        echo "Esta seguro de querer borrar esta db '$del_db' [si/no]"
        49.        read respuesta
        50.        if [ $respuesta = si ]; then
        51.        echo "DROP DATABASE $del_db;" > delbase.sql
        52.        echo "SHOW DATABASES;" >> delbase.sql
        53.        mysql -t -h $HOST -u $NAME -p $PASS < delbase.sql
        54.        cat delbase.sql >> easylog.sql
        55.        rm delbase.sql
        56.        elif [ $respuesta = no ]; then
        57.        drop
        58.        else
        59.        exit
        60.        fi
        61.  
        62. }
        63. #Función para crear tablas en db de mysql
        64. function table {
        65.        echo "..-:CREAR NUEVA TABLA EN DB:-.."
        66.        echo "SHOW DATABASES;" > newtable.sql
        67.        mysql -t -h $HOST -u $NAME < newtable.sql
        68.        echo "Escriba el nombre de la base de datos en la que desea crear una tabla:"
        69.        read db_use
        70.        echo "USE $db_use;" > newtable.sql
        71.        mysql -t -h $HOST -u $NAME < newtable.sql
        72.        echo "Cambiando a.. '$db_use'"
        73.        echo "Escriba el nombre de la tabla que desea crear en la db '$db_use':"        read db_table
        74.        echo "CREATE TABLE $db_table;" > newtable.sql
        75.        mysql -t -h $HOST -u $NAME < newtable.sql
        76.        echo "Se creo la tabla '$db_table' en la db '$db_use'."
        77.        date > easylog.sql
        78.        cat newtable.sql >> easylog.sql
        79.        rm newtable.sql
        80.        }
        81.  
        82. #menú de opciones
        83. opcion="Crear_db Borrar_db Crear_Tabla Salir"
        84. select opt in $opcion; do
        85.        if [ "$opt" = "Crear_db" ]; then
        86.        touch easylog.sql
        87.        create
        88.        elif [ "$opt" = "Borrar_db" ]; then
        89.        touch delbase.sql
        90.        drop
        91.        elif [ "$opt" = "Crear_Tabla" ]; then
        92.        touch newtable.sql
        93.        table
        94.        elif [ "$opt" = "Salir" ]; then
        95.        echo GOOD BYE
        96.        exit
        97.        else
        98.        echo seleccione una opción correcta
        99.        fi

        Tengo algunas funciones mas para mysql echas en bash, si me da la vena las pondre por aqui.

            En línea



        2.6.0-r
        Visitante


                  Re:shell script
        « Respuesta #7 en: 11 Enero 2004, 06:58 »   

        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:
        Código
        1. #!/bin/bash
        2. #bash script para la administracion de bases de datos mysql
        3. echo ".:EASYMySQL:. script para la administración de bases de datos MySQL"
        4. #source llama al archivo que contiene las funciones
        5. source functions
        6.  
        7. dialog --backtitle "EasyMySQL" --title "Login" --clear --ok-label "Aceptar"\
        8.       --inputmenu "Para poder usar EasyMySQL debe ingresar los datos de usuario y conexion" 20 50 10 \
        9. "Nombre de usuario:"    "$user" \
        10. "Nombre del host:"      "$host" \
        11. "Password:"             "$pass" \
        12.  
        13. #menú de opciones
        14. echo "[1] Crear Base De Datos"
        15. echo "[2] Borrar Base De Datos"
        16. echo "[3] Crear Tabla"
        17. echo "[4] Salir"
        18. echo
        19. read -p "Seleccione una opcion: " OPCION
        20. case $OPCION in
        21. 1) create;;
        22. 2) drop;;
        23. 3) table;;
        24. 4) exit;;
        25. esac

        « Última modificación: 11 Enero 2004, 09:44 por 2.6.1-rc »     En línea



        ..sR. aDiKtO..
        Colaborador

         Desconectado

        Mensajes: 1.455



        ..enseña lo que sabes, aprende lo que no..


                   Re:shell script
        « Respuesta #8 en: 20 Enero 2004, 09:46 »   

        Yo tambien quiero poner un pequeño script que hice hace un par de dias:
        Código:
        Código
        1. #!/bin/sh
        2. #
        3. ############################################################################
        4. # "adk.sh v0.1" hecho por el ..sR. aDiKtO.. <adikto@elhacker.net>
        5. #
        6. # Este script borra todas las lineas de todos los archivos
        7. # que esten en /var que contengan tu ip, conservando la fecha
        8. # de antes de la modificacion .
        9. #
        10. # Este script se distribuye segun la licencia GPL v.2 o posteriores y
        11. # no tiene garantias de ningun tipo. Puede obtener una copia de la
        12. # licencia GPL o ponerse en contacto con la Free Software
        13. # Foundation en http://www.gnu.org
        14. ############################################################################
        15. #
        16. # Variable que contiene tu ip
        17. IP="127.0.0.1"
        18.  
        19. ############################################################################
        20. # Funcion encargada de limpiar todos los logs
        21. ############################################################################
        22. function main()
        23. {
        24. mkdir -p /tmp/.adk &>/dev/null
        25. for i in `find /var 2>/dev/null`
        26. do
        27.  linea=$(cat $i 2>/dev/null | grep $IP )
        28.  if [ "$linea" != "" ]
        29.  then
        30.      ls -l $i > /tmp/.adk/fecha 2>/dev/null
        31.      aux=$(awk '{ print $6 $7 }' /tmp/.adk/fecha 2>/dev/null)
        32.      TIEMPO=$(echo $aux | tr "-:" "\000" 2>/dev/null)
        33.      sed "/$IP/d" $i > /tmp/.adk/datos 2>/dev/null
        34.      cat /tmp/.adk/datos > $i 2>/dev/null
        35.      touch -t $TIEMPO $i 2>/dev/null
        36.      echo -e "IP limpiada del archivo $i"
        37.  fi
        38. done
        39.  
        40. rm -rf /tmp/.adk &>/dev/null
        41. }
        42.  
        43. ############################################################################
        44. #Funcion principal
        45. ############################################################################
        46. clear
        47. echo -e "\n    \033[40m\033[1;37m  adk.sh v0.1  \033[0m\n"
        48. if [ $GROUPS != 0 ]
        49. then
        50.  echo -e "ERROR: Necesitas tener privilegios de root para poder ejecutar este script"
        51.  exit
        52. fi
        53. echo -e "\n Empecemos a borrar tu ip de los log de este sistema.\n"
        54. main
        55. echo -e "\n Ordenador Limpiado Completamente"
        SALU2


        ---------------------------------------------------------------------------------------------------------------
        « Última modificación: 21 Noviembre 2010, 18:03 pm por Leo Gutiérrez. » En línea

        Páginas: 1 2 3 4 5 [6] 7 8 Ir Arriba Respuesta Imprimir 

        Ir a:  

        Mensajes similares
        Asunto Iniciado por Respuestas Vistas Último mensaje
        [Shell script] Un pequeño script para ver temperaturas.
        Scripting
        manute_powa 3 5,978 Último mensaje 7 Enero 2012, 02:18 am
        por manute_powa
        [Shell Script] Elimina hardlinks
        Scripting
        RON06 0 2,451 Último mensaje 7 Abril 2012, 16:56 pm
        por RON06
        Shell Script
        Programación General
        Leandr0 0 2,190 Último mensaje 10 Abril 2012, 23:18 pm
        por Leandr0
        [Power Shell] Noob al canto con script
        Programación General
        slyfx 0 2,432 Último mensaje 9 Abril 2014, 23:05 pm
        por slyfx
        shell script
        Scripting
        juanxo12 0 2,103 Último mensaje 3 Julio 2017, 23:06 pm
        por juanxo12
        WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines