Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Unix / Linux (http://www.forosdelweb.com/f41/)
-   -   Enviar valor al prompt desde script Bash (http://www.forosdelweb.com/f41/enviar-valor-prompt-desde-script-bash-659459/)

jam1138 06/01/2009 04:56

Enviar valor al prompt desde script Bash
 
Estoy creando un script Bash que, dentro de sus monerías, está el crear un nuevo usuario de PostgreSQL. Resulta que dicho comando pregunta por su password y posteriormente pide confirmación; ¿cómo podría pasarle esos valores desde el propio script?

Código bash:
Ver original
  1. # Parte de mi script ...
  2.     echo "Creando usuario y base de datos..."
  3.     su postgres -c "createuser -A -D -P -U postgres nuevo_usuario"
  4. # Y continúa

Y en la terminal el script se detiene esperando se metan esos valores manualmente, quisiera poder hacerlo desde el script... es la confirmación lo que me lo complica aún más :-/
Código sh:
Ver original
  1. Creando usuario y base de datos...
  2. Ingrese la contraseña para el nuevo rol:
  3. Y posteriormente me pedirá la confirme:

.... y, al margen, aprovecho para otra cuestión, adelantándome a los sucesos :-).

Igual necesitaré reiniciar la máquina un par de veces (por paquetes de actualizaciones), entonces lo ideal sería se re-lanzara el script de manera automática y continuar donde se quedó. Creo tener controlado el cómo saber dónde continuar (creando y leyendo archivos) y cómo lanzar una terminar que ejecute el script (gnome-terminal -e ruta/al/script.sh), pero no sé cual será la mejor manera de hacer para que se auto-ejecute al loguearse. Estoy en un Ubuntu 8.04.

Gracias de antemano :adios:

AleSanchez 06/01/2009 06:19

Respuesta: Enviar valor al prompt desde script Bash
 
De atrás para adelante: No creo que haga falta usar una terminal en modo gráfico para correr los scripts.
Yo los correría desde el /etc/rc.local, para que no sea necesario iniciar sesión en el entorno gráfico ni tener que usar nada de él.

Y para tu script podes usar expect.
Saludos.

jam1138 06/01/2009 11:04

Respuesta: Enviar valor al prompt desde script Bash
 
Gracias AleSanchez. De atrás para adelante para equilibrar las cosas :-).

Gracias, busco acerca de expect.

Del script, precisamente lo que quiero es lanzar la aplicación en una terminal en modo gráfico :-). Año nuevo, máquinas nuevas, de una instalación limpia hay que actualizar e instalar X paquetes necesarios, es lo que hará (hace :-P) el script, pero dentro de las actualizaciones el SO pide reiniciar (un cambio de Kernel), entonces la idea es reiniciar y al volver a loguearse continuar con el script, con los siguientes pasos ... una ves terminado igual debería eliminarse, no es algo permanente.

Intenté colocando la instrucción en .bashrc, pero no se lanza hasta que lanzo una terminal (una terminal que lanza otra terminal) ... pero igual esto no es algo "impresindible", total, se abre y se teclea manualmente ... es más curiosidad :-P.

Entonces gracias, ya volveré a postear si me topo con algún problema. :adios:

AleSanchez 06/01/2009 12:27

Respuesta: Enviar valor al prompt desde script Bash
 
Pero salvo que sea necesario para la instalación de lo siguiente al kernel, no es necesario el reinicio antes de eso.
Sigo pensando que no hace falta el uso del entorno gráfico.
Yo lo haría a traves de SSH de foerma remota, jeje.
Saludos.

jam1138 06/01/2009 12:35

Respuesta: Enviar valor al prompt desde script Bash
 
Pues todo son instalación y actualización de paquetes, algunos compilados sobre "el SO ya actualizado", pero no tendría que afectar ¿verdad? ... tendría que volver a compilar con cada cambio de Kernel, y, hasta ahora. no ha sido necesario :-P.

En realidad el reinicio es solo para no errarle, pero igual y me lo salto como dices.

¿cómo instalar paquetes de manera remota? :pensando: ... tendría que copiarlos ¿no?.

BTW: Gracias, expect me sirvió :arriba: ... aunque aún no lo implemento, estoy en eso.

jotaaigriegao 06/01/2009 16:58

Respuesta: Enviar valor al prompt desde script Bash
 
si decides usar expect, prueba con autoexpect. es muy sencillo y útil.

AleSanchez 07/01/2009 07:36

Respuesta: Enviar valor al prompt desde script Bash
 
Y si no están en los repositorios, si, tenes que bajarlos, pero lo harías desde el mismo script...
Saludos

jam1138 07/01/2009 11:11

Respuesta: Enviar valor al prompt desde script Bash
 
:pensando: ... perdón Ale, que no entendí tu último mensaje. ¿Qué estaría en los repositorios?.

jotaaigriegao, gracias por el tip. Por ahora lo tengo resuelto con expect, aunque no he podido resolver algunas pantallas de aceptar licencias y avisos (donde hay que "precionar" aceptar) de algunos paquetes, que entendí con este autoexpect podría resolverlo ... pero por ahora lo dejo así.

Veo esto de expect es muy completo, ya se me están ocurriendo algunos otros usos. Gracias :arriba:

AleSanchez 08/01/2009 11:19

Respuesta: Enviar valor al prompt desde script Bash
 
Decía que quizás, si estas instalando nuevos paquetes que están el los repositorios, los bajás directamente con el instalador. Sino, los bajarías con wget, o algo así.

Un comando que quizás te sirva para contestar "Y" es yes que hace simplemente eso... poner una Y a cada pregunta que aparezca ;-)

Saludos.


La zona horaria es GMT -6. Ahora son las 16:29.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.