Título: shell script Publicado por: EMPICAL en 20 Mayo 2003, 20:34 pm ¿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 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. Título: Re:shell script Publicado por: ..sR. aDiKtO.. en 21 Mayo 2003, 01:40 am 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:
Código: #!/bin/bash
Código o en la misma linea separadas por un punto y coma ( ; ), excepto cuando es background o nohup. Código
Código Con estas ordenes el script seria ejecutado por sh ó ksh ó ... cuando en verdad tenia k ser ejecutado por bash (primera linea del script)[/list] Continuemos con los redireccionamientos:
Código: cat archivo.txt | grep adikto
Código: ls -l / > archivo.txt
Código: ls -l /boot >> archivo.txt Si ahora hicieramos lo mismo k en el ejemplo anterior: Código: ls -l / > archivo.txt
Código: cdrecord -adikto 2> archivo.txt
Código: cdrecord --help &> archivo.txt
Código: grep adikto < archivo.txt
Ahora le toca a otro continuar......xDDD Título: Re:shell script Publicado por: Rojodos en 22 Mayo 2003, 05:06 am ---------- 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
---------- Variables especiales: $0: Nombre del Shell-Script que se está ejecutando. $n: Parámetro o argumento pasado al Shell-Script en la posición n, n=1,2,... $#: Número de argumentos. $*: Lista de todos los argumentos. $$: PID del proceso que se está ejecutando. $!: PID del último proceso ejecutado. $?: Salida del último proceso ejecutado Le toca a otro :D Título: Re:shell script Publicado por: ..sR. aDiKtO.. en 22 Mayo 2003, 05:47 am 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) Código 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
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 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" Código: Negro --> 0;30m Código 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
Tambien se puede cambiar el color de fondo, de la misma manera k antes pero con esta codificacion: Código
Un shell script k os puede ser util para recordar esto es: Código
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 Título: Re:shell script Publicado por: EMPICAL en 22 Mayo 2003, 21:14 pm 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') 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. Título: Re:shell script Publicado por: cokeing en 17 Noviembre 2003, 04:37 am (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
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 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 ;-) Título: Re:shell script Publicado por: 2.6.0-r en 11 Enero 2004, 06:49 am 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
Tengo algunas funciones mas para mysql echas en bash, si me da la vena las pondre por aqui. Título: Re:shell script Publicado por: 2.6.0-r en 11 Enero 2004, 06:58 am 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
Título: Re:shell script Publicado por: ..sR. aDiKtO.. en 20 Enero 2004, 09:46 am Yo tambien quiero poner un pequeño script que hice hace un par de dias:
Código SALU2 Título: Re:shell script Publicado por: 2.6.0-r en 20 Enero 2004, 11:05 am Wow! casi, casi lo que estaba buscando... Funcionaria en un SunOS?
Solaris creo que no usa bash ¿no? Título: Re:shell script Publicado por: ..sR. aDiKtO.. en 20 Enero 2004, 13:08 pm La shell por defecto de solaris creo que es ksh, y en solaris si que hay bash. Por lo que el script tiene que funcionar en solaris.
SALU2 Título: Re:shell script Publicado por: terku en 30 Marzo 2004, 18:22 pm Hola a todos;
En primer lugar he de felicitaros por la pagina y por el foro. En particular este post acerca de shell scripts esta genial. Me preguntaba si me podrían ayudar: tengo que referenciar Y MODIFICAR una variable shell dentro de un módulo de procesado awk. Supongamos que tengo la variable shell maximo=11. Dentro de mi modulo awk puedo hacer cosas como print '$maximo' y visualizaría el valor 11 Mi problema está cuando intento modificar dicha variable; por ejemplo 'maximo'=70; al ejecutar el script el motor de awk no se queja pero la variable maximo no se modifica. Espero me puedan ayudar; saludos a todos y gracias. Título: Re:shell script Publicado por: ..sR. aDiKtO.. en 30 Marzo 2004, 19:05 pm Ese mismo problema he tenido yo varias veces, y no he encontrado la solucion, ya que para que el awk funcione las ordenes tienes que estar entre comillas simples, siendo estas las comillas mas fuertes que hay, y por lo tanto las variables externas no las reconoce. Si en lugar de comillas simples fueran dobles se podria hacer sin mas, pero siendo doble no se puede hacer.
SALU2 Título: Re: shell script Publicado por: ghz_amd en 30 Diciembre 2004, 02:13 am Buenas, Sr.Adikto, tengo un problem al compilar su script para borrar los logs, tiene buena pinta y me jode que no me rule =(
me salen unos cuantos errores, aver si podez ayudarme, graxxx bytesss Citar clean.c:1:2: directiva de preprocesamiento #! inválida clean.c:3: error sintáctico en el elemento '##' clean.c:4:3: directiva de preprocesamiento #"adk.sh v0.1" inválida clean.c:6:3: directiva de preprocesamiento #Este inválida clean.c:7:3: directiva de preprocesamiento #que inválida clean.c:8:3: directiva de preprocesamiento #de inválida clean.c:10:3: directiva de preprocesamiento #Este inválida clean.c:11:3: directiva de preprocesamiento #no inválida clean.c:12:3: directiva de preprocesamiento #licencia inválida clean.c:13:3: directiva de preprocesamiento #Foundation inválida clean.c:14: error sintáctico en el elemento '##' clean.c:16:3: directiva de preprocesamiento #Variable inválida clean.c:19: error sintáctico en el elemento '##' clean.c:20:3: directiva de preprocesamiento #Funcion inválida clean.c:21: error sintáctico en el elemento '##' clean.c:22: aviso: asignación de valores iniciales crea un entero desde un apuntador sin una conversión clean.c:22: error de decodificación antes de "function" clean.c:25: '`' parásito en el programa clean.c:27: '\302' parásito en el programa clean.c:27: '\240' parásito en el programa clean.c:28: '\302' parásito en el programa clean.c:28: '\240' parásito en el programa clean.c:29: '\302' parásito en el programa clean.c:29: '\240' parásito en el programa clean.c:30: '\302' parásito en el programa clean.c:30: '\240' parásito en el programa clean.c:30: '\302' parásito en el programa clean.c:30: '\240' parásito en el programa clean.c:30: '\302' parásito en el programa clean.c:30: '\240' parásito en el programa clean.c:31: '\302' parásito en el programa clean.c:31: '\240' parásito en el programa clean.c:31: '\302' parásito en el programa clean.c:31: '\240' parásito en el programa clean.c:31: '\302' parásito en el programa clean.c:31: '\240' parásito en el programa clean.c:31:20: aviso: constante de carácter demasiado larga clean.c:32: '\302' parásito en el programa clean.c:32: '\240' parásito en el programa clean.c:32: '\302' parásito en el programa clean.c:32: '\240' parásito en el programa clean.c:33: '\302' parásito en el programa clean.c:33: '\240' parásito en el programa clean.c:34: '\302' parásito en el programa clean.c:34: '\240' parásito en el programa clean.c:35: '\302' parásito en el programa clean.c:35: '\240' parásito en el programa clean.c:35: '\302' parásito en el programa clean.c:36: '\302' parásito en el programa clean.c:36: '\240' parásito en el programa clean.c:37: '\302' parásito en el programa clean.c:37: '\240' parásito en el programa clean.c:43: error sintáctico en el elemento '##' clean.c:44:2: directiva de preprocesamiento #Funcion inválida clean.c:45: error sintáctico en el elemento '##' clean.c:50: '\302' parásito en el programa clean.c:50: '\240' parásito en el programa clean.c:51: '\302' parásito en el programa clean.c:51: '\240' parásito en el programa Título: Re: shell script Publicado por: ..sR. aDiKtO.. en 30 Diciembre 2004, 04:04 am Los shell script no se compilan. Te recomiendo que te leas todo el hilo y no solo el del adk.sh (el bash script que borra tu IP). En los 2 primeros post encontraras que un shell script se ejecuta con:
Código: sh shell_script.sh Código: chmod u+x shell_script.sh Código: ./ shell_script.sh Por otro lado te recomiendo que leas el shell script antes de ejecutarlo, yo lo he provado y funciona perfectamente, pero es recomendable saber que es lo que hace. Por ejemplo tienes que cambiar: Código: IP="127.0.0.1" Y que el shell script tarda un ratito en hacer toda la faena. Salu2 Título: Re: shell script Publicado por: ghz_amd en 30 Diciembre 2004, 11:15 am lo de cambiar el codigo ya sabia que debia hacerlo, muchas gracias, pense que se compilaba tambien, sorry por la ignor4nc1a, y graciaz de nuevo.
bytesss ;) Título: Re: shell script Publicado por: Mr. Anderson en 30 Marzo 2005, 03:46 am Bueno, les presento mi proyecto en el cual estuve trabajando horas y dias y aun sigo mejorandolo, se llama Netin y actualmente está en su version 1.0, les comento que es un programa el cual sirve para configurar dispositivos de red, solo ethernet por el momento, tiene para configurar dispositivos ADSL, no tanto los dispositivos pero sí su configuracion, DNS´s, baja paquetes y sirve para todas las distros (o la mayoría, si no llega a funcionarte en alguna, hacemelo saber y le pongo soporte para ella). Y bueno, en fin les pongo los links y si tienen alguna duda, sugerencia o algo por decir, diganlo, espero opiniones, que la disfruten!, será actualizada con nuevas mejoras y demás, de paso tambien les pongo el changelog.
ACLARACION: Para bajarlo, click derecho y "guardar como", porque si lo abren asi nomás, les sale el codigo por el navegador. LINKS DE VERSION ACTUALIZADA Netin-1.0 (http://www.infohackargentina.com.ar/descargas.php?id=13) Changelog (http://www.infohackargentina.com.ar/cirus/changelog) Distribuido bajo licencia GPL, se puede reproducir y/o modificar siempre y cuando se respete la autenticidad del autor, para mas informacion visite http://www.gnu.org/licenses/licenses.es.html para ver la licencia en español. SALUDOS Título: Re: shell script Publicado por: ghz_amd en 9 Mayo 2005, 13:19 pm Buenas, tengo una duda, como llamo a las funciones que he definido? es decir, yo meto
functio x { aqui meto el contenido de la funcion } como hago para que al poner x se ejecute¿? nose se si me explico....un saludo ;) Título: Re: shell script Publicado por: ..sR. aDiKtO.. en 9 Mayo 2005, 20:42 pm Simplemente tienes que llamar a la funcion despues de haberla creado, como en ANSI C. Pongo el script que antes has posteado:
Código
Salu2 Título: Re: shell script Publicado por: ghz_amd en 9 Mayo 2005, 22:00 pm tio, no entiendo bien o noseke, yo hago el
function main, pongo lo que quiero que haga esa funcion, y despues en el codigo, le pongo main y al ejecutar me dice que no existe el comando main xDD lo toma como un comando :S Título: Re: shell script Publicado por: ghz_amd en 9 Mayo 2005, 22:03 pm lo que voy hacer va ser pegar el codigo de la tool que quiero hacer y me exlpicas que es lo que esta mal, sino no entiendo nada xDDD
Título: Re: shell script Publicado por: ghz_amd en 10 Mayo 2005, 10:01 am Sr adikto, si pongo while true, siempre que se cumpla, me saldra eso, por lo que no parara de salir en el caso de que se cumpla, otra cosa, yo le pongo if groups = 0 y hace lo que tiene que hacer cuando eres root aunque no lo seas :S
salu2 ;) Título: Re: shell script Publicado por: JorgeEMX en 11 Mayo 2005, 06:41 am aqui la funcion que haces se llama main, bastara con llamarla despues para poder utilizarla... por que no en vez de hacerlo con while haces el if solo .....
Título: Re: shell script Publicado por: ..sR. aDiKtO.. en 11 Mayo 2005, 15:17 pm Creo que tienes un problema, que no sabes muy bien lo que hace cada cosa:
Código
Yo por ahora no soy adivino, si me dices lo que quieres que haga el shell script te puedo ayudar. Salu2 Título: Re: shell script Publicado por: antonio23 en 18 Mayo 2005, 16:05 pm Antes de nada un saludo a todas las personas del foro,espero que me podais ayudar,pues estoy dandole vueltas al problema y no se por donde empezar.Es un proyecto de shell script que tengo que resolver,weno hay os dejo el enunciado:
Crear un script llamado adduser_lista, el cual tomara como argumento el nombre de un fichero (con la siguiente estructura: nombre apellido1 apellido2 directorio_home grupo) y nos dara de alta un usuario por linea. El nombre de usuario sera la primera letra del nombre junto al primer apellido, si el usuario ya existiera debera introducirse al final del nombre de usuario un numero (rmuñoz, rmuñoz1, rmuñoz2, ...). Cada vez que se crea un usuario debe aparecer en pantalla una linea indicando usuario rmuñoz creado, y en un fichero llamado adduser_lista.log debe agregarse la misma linea. En caso de algun error creando algun usuario se reflejara solo en el fichero adduser_lista.log con una linea indicando el nombre y apellidos del usuario que no se pudo crear. Se debe comprobar que no existan todos los argumentos pasados a los script y en el caso de no existir mostrar mensaje de error indicando cual es el problema y como solventarlo. Eso es todo, espero que puedan ayudarme,aunque sea poquito, o solo una idea de como cogerlo,gracias. Título: un script para automatizar ftp Publicado por: aristidezzz en 30 Mayo 2005, 02:44 am Buenas una consulta me gustaria una orientacion de como podria realizar un cron k se ejecuta cada cierto tiempo y se conecte a un servidor y ponga(put)al directorio /home/user la carpeta donde guarde mis archivos y se desconecte una ves terminado el translado de archivos.
Me olvidaba y como podria realizar un dialog donde logee al user y este realize operaciones basicas como guardar archivos(en una carpeta) , delete,update,salir Muchas gracias ....estare publicando mis avances peor tb espero la ayuda de todos bye bye Título: Re: shell script Publicado por: charly230 en 5 Septiembre 2005, 09:23 am QUe temita tan interesante no? ???
que lindo poder resumir con un poco de tiempo nuestras tareas habituales sobre la consola, con un simple ./comando_nuestro jejejeje me acuerdo que hace un tiempo cuando montar las cosas (cdrom o floppy) era tan tedioso me habia echo uno que me hacia todo solito con el simple echod e llamar a CDROM jejejej cosas muy tontas he echo! o un simple firewall muy basico y diije!!! DIOS QUE FACIL pero ahora se me ha venido uan duda muy grande! que la podria solucionar muy simnplemente peor prefiero intentar que todo lo resuelva el script! la cosa es esta soy poseedor de un modem USB, de esos tediosos bajo linux! pero bueno... buscando info para mi slack encontre una manera de hacerlo... la cosa es que cada vez que me quiero conectar tengo que seguir unos pasos que no logran quedarse en al configuracion (segun el documento deberia de andar de 10! pero en mi caso! hay ciertos pasos que tengo que hacer cada vez que me quiero conectar... ) entonces porque no haces esos dos pasos en un shel asi no tengo que revisar el historial del shel para ejecutarlos???? es obvio que un paso o tres o cuatro lso tengoq ue ejecutar como root! AQUI VA MI PREGUNTA!!! hay alguna amnera de en el script definir en una variable el pass del root (se que noe s aconsejable, si alguien ingresase a mi pc y leyera el script hoooo dios ahi esta la contraseña peor bueno.... no veo demasiada peligrosidad en eso) y luego que el script ejecute el comando "su" y se le de automaticamente el contenido de esa variable? (que va a contener el pass del root" en fin explicado eso ahi va el script que realizo... Código
OTRA PREGUNTA!!! AHI TERMINA!! POR ENDE VA ALGUN END O FIN O COSA POR EL ESTILO??? TENGO ENTENDIDO QUE NO!!! CORRIJANME!!! un saludo a todos desde Argentina Título: Re: shell script Publicado por: JorgeEMX en 6 Septiembre 2005, 00:07 am No hay que poner nada al finalizar, pero por que no lo agregas a algún runlevel y que se cargue al inicio del sistema..
Título: Re: shell script Publicado por: charly230 en 6 Septiembre 2005, 04:41 am es lo que yo estaba pensando peor no se como se hace :( :-\
Título: Re: shell script Publicado por: JorgeEMX en 6 Septiembre 2005, 06:36 am mm pos creas el script y los agregas a /etc/init.d con un enlace al runlevel correspondiente /etc/rc.d/ (dependiendo en que modo tengas el init, me imagino que el 5 o 3), podría quedar /etc/rc.d/rc3.d o /etc/rc.d/rc5.d ..
Lo que no recuerdo xD (raro) es con que inicial estan los script que se inicial al ejecutar runlevel, creo es "S" podría quedar como "Sinternet", esto es para el enlace.. Título: Re: shell script Publicado por: charly230 en 6 Septiembre 2005, 07:41 am mmmmm muy claro no me quedo pero lo investigare! vale que tb algo de trabajo para mi tiene que quedar no??? ;D
jajaja bueno muchisimas gracias e intentare averiguar... PD://perdon por irme del hilo principal de este tema :-[ Título: shell script Publicado por: josecito en 8 Septiembre 2005, 01:53 am ??? hola
bueno estoy empezando a programar en shell y quiero saber como puedo hacer un programa que trabaje como cliente-servidor el cual es para registrar las entradas y salidas de empleados ademas si hay otra manera de mandarle los datos al servidor como variables y no usar un archivo de mediador entre los dos cualquier ayuda será bienvenida. gracias mi correo es m-c@adinet.com.uy Título: Re: shell script Publicado por: gews en 27 Octubre 2005, 19:38 pm :-[
hola soy nuevo en el foro, y estoy realizando un script, para modificar un archivo borrarlo cambiarlo, etc, pero quiero que cuando realice un cambio con el archivo me muestre una especie de barra de progreso pero no se como hacerla, de antemano muchas gracias por la ayuda Título: Re: shell script Publicado por: JorgeEMX en 28 Octubre 2005, 12:25 pm si lo haces con dialog puede hacerlo facil con la opción --gauge:
--gauge <texto> <alto> <ancho> <porcentaje_inicial> Título: Re: shell script Publicado por: gews en 28 Octubre 2005, 15:32 pm :D
muchas gracias por su colaboracion y en especial a Soul Lost, funciona bastante bien, otra forma para hace esto seria con el siguiente shell: Código
Título: Re: shell script Publicado por: JorgeEMX en 28 Octubre 2005, 19:35 pm bien XD, mira que estaremos ampleando el tema, es cuestión de tiempo, y podrías enseñarnos tus scripts ;)
Título: Re: shell script Publicado por: xxjimmyxx en 12 Noviembre 2005, 16:47 pm Holas .. , Soy Novato en Linux, mi problema es que necesito crear una base de datos Oracle (No con su asistente) sino a traves de comandos y todo debe ejecutarse automaticamente (mediante un shell) para ello debo pasarle parametros y ademas en el transcurso de este proceso debo cambiar de usuario (de root a "orto usuario" y ciceversa) ya que algunos comandos debo eecutarlos con root y otros en otro usuario(don de instale Oracle)...... yo lo hice pero no con shell ...
Aguien me podra ayudar ... se lo agradeceria mucho .. thanks .. Título: Re: shell script Publicado por: thefame en 25 Enero 2006, 09:51 am Hola.
Me gustaria saber si hay alguna manera de si te entran el login y password mediante una pagina web, puedes saber si este login existe y si el password es correcto. Muchas gracias de antemano. saludos a tod@s Título: Re: shell script Publicado por: JorgeEMX en 25 Enero 2006, 16:42 pm Rotundamente si..
Mira el tema de CGI'S.. Lo mas sencillo para interactuar con el sistema es que lo crees con bash, aunque puede admitir cualquier lenguaje (c++, c, perl, etc) Dime bien como esta la situación y lo pruebo con el servidor apache :P Título: Re: shell script Publicado por: thefame en 25 Enero 2006, 19:47 pm hola Soul Lost...
Gracias por la ayuda. Te explico: tengo un servidor apache donde el user entra en la pagina principal y tiene q introducir un login y password. Este login y pass los cojo mediante form con metodo post y los envio a un script dentro de la carpeta cgi-bin con extension .sh. Dentro de este script, trato los parametros de entrada, cojiendolos por separado y al final me quedo con un login y un pass. Lo que necesito es saber si este login existe en el servidor linux q tengo y además que el pass que me pone sea el correcto. El problema esta ahi, en como hago un script que me implemente el reconocer si el pass es correcto o no. He estado probando y no hay problema para saber si este user existe en el server pero lo que no se es como mirar si es correcto o no el pass. Muchas gracias . saludos Título: Re: shell script Publicado por: JorgeEMX en 25 Enero 2006, 23:08 pm Si mm :\ deja ver, por ahora me tengo que ir XD, pero si quieres pon aqui el cgi para que lo vea en la noche..
El problema es que el password esta cifrado mediante un programa llamado creo crypt o algo así.. deja lo verifico y checo si se puede comparar apartir del hash que devuelva.. Edit ---------------------- Pensandolo bien XD mejor has un archivo con el nombre de usuario y hash (usuario:hash) ya seá MD5 o DES, el cual debe también existir en el /etc/shadow.. Aunque en verdad no se que es lo que quieras hacer con eso xD, si quieres identificarte en una pagina web es mejor que uses la misma utentificación de apache.. Saludos!! Título: Re: shell script Publicado por: thefame en 26 Enero 2006, 12:31 pm Muy buenas.
He estado preguntando y me han dixo que si cojo el password que me ha entrado el usuario mediante web, le hago la funcion crypt y si la contraseña que me ha entrado es correcta, esta funcion crypt me devolverá el pass cifrado. Asi solo tendré que comparalo con el que hay en el fichero /etc/shadow. El problema q tengo es q no se como utilizar esta funcion: Código
A ver si alguien me podria decir si de la maenra que he pensado se podria hacer y como he de poner la funcion crypt. Gracisa de antemano. Título: Re: shell script Publicado por: JorgeEMX en 26 Enero 2006, 18:10 pm usa perl ;)
es que depende con que sal y algoritmo este hecha (puede variar y sería cosa de averiguar cual usa tu distro).. ademas te sugiero que crees una contraseña con crypt y esa misma pongas en el /etc/shadow y la misma función la uses para generar la que te envie del formulario y compararla (así sabras exactamente en que esta hecha y con que sal).. Saludos!! Título: Re: shell script Publicado por: xasvix en 23 Marzo 2006, 17:39 pm El string que se almacena en shadow, depende del momento ( date ) que se introduce el passwd. Solo con crypt no vas a conseguir el mismo string ( no recuerdo bien el proceso, tendrÃa que buscarlo ).
Aprovecho para soltar otro problemilla: Quero hacer una cosa tal que asà : FICHER=/usr/bin/* /usr/sbin/* md5 $FICHER La variable FICHER puede ir creciendo conforme agregue directorios y puede que al final desborde el tamaño máximo. Esto sucede pq al asignarla a FICHER el shell interpreta '*' y mete toda la ristra de ficheros. Hay alguna forma de evitar esto ?? La alternativa serÃa pasarle al md5 un `ls -` que devuelva el listado de ficheros con el path pero tampoco se como hacerlo. En fin, se agradece cualquier sugerencia. :-\ Título: Re: shell script Publicado por: situ en 2 Abril 2006, 01:45 am Buenas aca tienen algunos ejemplos sobre shell script.
http://foro.elhacker.net/index.php/topic,12214.30.html Si alguno necesita algo en especial, podemos ver si entre todos podemos realizar lo pedido :D Título: Re: shell script Publicado por: cthulhufhtagn en 5 Agosto 2006, 16:35 pm La variable FICHER puede ir creciendo conforme agregue directorios y puede que al final desborde el tamaño máximo. Esto sucede pq al asignarla a FICHER el shell interpreta '*' y mete toda la ristra de ficheros. Hay alguna forma de evitar esto ?? La alternativa serÃa pasarle al md5 un `ls -` que devuelva el listado de ficheros con el path pero tampoco se como hacerlo. En fin, se agradece cualquier sugerencia. :-\ md5sum $(ls -d $FICHER) Te tirará error por cada direcotorio, pero no los lista recursivamente. Título: Re: shell script Publicado por: kennet en 1 Septiembre 2006, 02:50 am Hola the fame..como t efue con el desarrollo de ti script para validar el usuario y password para el apache....yo estoy tratando de hacer algo similar y tu informacion seria muy importante..gracias de antemano
Título: Re: shell script Publicado por: kennet en 8 Septiembre 2006, 02:08 am :huh: Tengo este shell script :
echo -e $2 | passwd --stdin $1 que me permite cambiar el password del cualquier usuario del SO (Centos 4.x)esto me funciona siempre y cuando lo ejecuto como root, pero ahora estoy en como hacer una pagina dinamica (PHP o cualquier otro) que me permita llamar y ejecutar este script obiamente pasandole los parametros de user y nuevaclave. Su(s) ayuda(s) para ver como hago esta pagina. Ah..esta pagina se ejecutara cuando ya este en dentro de una sesion de usuario del sistema, es decir solo se pedira la nueva clave, para que junto al user que ya se tiene en ese momento enviarla como parametros al script. Les quedare muy agradecido por sus ayuda. Título: Re: shell script Publicado por: JuszR en 8 Septiembre 2006, 05:16 am Aquí les dejo algunos manuales. Son de BASH y Shell Script:
;) Título: Re: shell script Publicado por: comapalta en 8 Septiembre 2006, 06:57 am Cual de esos esta en español men?
Título: Re: shell script Publicado por: JuszR en 10 Septiembre 2006, 04:54 am Cual de esos esta en español men? Ninguno. ;DPero 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/ ;) Título: Re: shell script Publicado por: NEO+ 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 Título: Re: shell script Publicado por: H@T 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 Título: Re: shell script Publicado por: hakais en 9 Noviembre 2006, 13:17 pm No comprendo bien la pregunta, si pasteas el script puede que se endienda mejor.
Título: Re: shell script Publicado por: H@T 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? Título: Re: shell script Publicado por: hakais 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. Título: Re: shell script Publicado por: H@T 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!!!! Título: Re: shell script Publicado por: ramkiller 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 Título: Re: shell script Publicado por: hakais 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
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. Título: Re: shell script Publicado por: Leon8086x en 9 Octubre 2008, 21:41 pm
--------------------------------------------------------------------------------------------------------------- ¿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: Código 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 En las lineas siguientes se ponen las intrucciones, una por linea: Código: Código o en la misma linea separadas por un punto y coma ( ; ), excepto cuando es background o nohup. Código: Código 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 ó Código
... 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
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. 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
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
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 o Código
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
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
« Ú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 SALU2 --------------------------------------------------------------------------------------------------------------- Título: Re: shell script Publicado por: likhary en 20 Noviembre 2008, 16:37 pm Que es un menu grafico que empece a hacer para mi script de mysql. Como el anterior tampoco esta terminado.
Código
Título: Re: shell script Publicado por: iea0 en 9 Mayo 2009, 18:02 pm Hola tengo una duda dudosa, es basica, yo crreo,creo que me podeis ayudar he leido lo que aqui se enseña nuy bueno, mi duda es como pasar variables de un script a otro por ejemplo:
1.sh Código
2.sh Código Esto esta bien?, yo realmente lo que queria es, que estuviese en un txt y no en un sh, me refiero a la declaracion de variables.. se complicaria?, se puede, esta bien..?mi ejemplo, de estar bien siento que moleste a 2 compañeros x pv... Me explico mejor, quisiera que se lean ciertas variables de un fichero, y se pasen al .sh, para luego usarlas alli. Título: Re: shell script Publicado por: iea0 en 10 Mayo 2009, 10:07 am Me han ayudado y ya se como se hace:CITO, para que todo el mundo le pueda ayudar...
Imaginate que tengo un archivo de texto llamado archivo.txt con la siguiente Info en 1 sola linea: ls cama mesa silla Para abrir esto y leerlo desde bash y ejecutarlo haria algo tipo : variable=$(gawk '{print $1}' archivo.txt) exec $variable -l digo print $1 porke solo me interesa la palabra "ls" del archivo.txt asi ejecuto ls -l La duda que me surge es (esta duda es pura curiosidad), si en vez de 1 renglon con palabras tengo dos el sh se estropea, como hago para declarar cada variable de cada renglon columra?, con iteradores y do? La duda que si me hace falta, imaginar tengo un sh en una consola grafica dentro de las X, como hago "ordeno", para que una parte de las sh se ejecute en otro terminal, se que es con xterm un ejemplito gracias, mandar una funcion a otro terminal y que sh princpal continue...y si de paso me deciis como lepaso las variables declaradas a esa terminal pues ya estai completo. gracias muchas muchas gracias Título: Re: shell script Publicado por: iea0 en 10 Mayo 2009, 10:15 am Un ejemplo tonto de lo q se puede hacer
Código y en configura.txt 1tara 2variable variabe ath33 Añado cuidado con el nombre de las variables xp pueden coincidir con comandos internos en este tonto ej me ha pasado 2veces, lan y iface estan usadas x algun programa o no se; jodia todo el sh... Título: Re: shell script Publicado por: [u]nsigned en 14 Diciembre 2009, 19:10 pm Listar solo directorios con ls:
Código Ejemplo: Código
Código Ejemplo: Código
Listar solo archivos con ls Código Ejemplo: Código
Saludos Título: Re: shell script Publicado por: leogtz en 18 Diciembre 2009, 02:09 am @m3g@ h@x0R
Código: leo@lein:~$ ls -F Título: Re: shell script Publicado por: [u]nsigned en 18 Diciembre 2009, 03:54 am Vale, esa no la conocia ;D
Existe alguna algun comando para listar solo los archivos? Yo de momento uso: Código
Saludos Título: Re: shell script Publicado por: leogtz en 18 Diciembre 2009, 04:08 am Código: leo@lein:/$ ls -DF1 | grep -v "/$" Título: Re: shell script Publicado por: b10s_0v3rr1d3 en 22 Diciembre 2009, 00:42 am Código
un ejemplo de un sistema para subir un backup a un server ftp nos leemos Título: Re: shell script Publicado por: [u]nsigned en 22 Diciembre 2009, 17:07 pm Código: #!/bin/bash un ejemplo de un sistema para subir un backup a un server ftp nos leemos En vez de: Código
O directamente usar $HOME..Buen Aporte ;D Saludos Título: Re: shell script Publicado por: leogtz en 22 Diciembre 2009, 19:40 pm O directamente usar la variable $HOME; no le veo el caso de ahorrarse una letra creando una variable local.
Título: Re: shell script Publicado por: b10s_0v3rr1d3 en 25 Diciembre 2009, 22:03 pm como bien decis se puede utilizar la variable del sistema tratandose del directorio home, pero el script original era para un sistema de monitorizacion (nagios) en el cual se indicaba el directorio donde se guardaban las configuraciones y los distintos logs que generaba, peticion de la empresa donde estuve haciendo practicas y que al final no llego a implementarse (se mudaron a otro sistema xD). lo modifique con los users para mostrar un ejemplo mas de como se podia utilizar para darle otros usos distintos del original (no pense en las var. del sistema, detalle a tener en cuenta la proxima xDD). Título: Re: shell script Publicado por: leogtz en 27 Febrero 2010, 19:56 pm Para un exámen de Quimica, en el que tenía que aprenderme 104 elementos, nombre, simbolo, número atómico, etc, me sirvió este script y el siguiente archivo de texto:
Código
elementos.txt: Código: Actinio Ac 89 Código: leo@lein:~/Escritorio$ bash quimic.sh Título: Re: shell script Publicado por: leogtz en 4 Marzo 2010, 06:18 am Subir una imagen a imageshack:
Código
La parte de curl no es mia, lo saqué de commandlinefu.com. Saludos. Título: Re: shell script Publicado por: iago99 en 9 Julio 2011, 22:32 pm ola!
me gustaria acer un script para un juego, asi poder subir antes de nivel y todo eso. estuve buscando y no me aparecio nada de un programa que grava los movimientos y clicks del raton, es lo que necesito, vosotros sabeis algo? gracias Título: Re: shell script Publicado por: displayorder en 30 Julio 2013, 03:15 am 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'. |