[LUG.ro] problemas con script

Pat Carr lugro@lugro.org.ar
Tue, 12 Aug 2003 22:56:50 -0700


roberto pablo barreiro arcos wrote:
> hola lista
> tengo un equipo al que cada cierta cantidad de tiempo tengo que
> actualizar los archivos de un programa que estoy diseniando
> por lo general voy yo mismo a hacerlo.
> pero ocasionalmente algun error ocurre y hay que hacerlo urgente .. 
> generalmente me avisan del error por via telefonica lo corijo en la
> version que tengo en casa y de alli a llevarlo
> como estoy lejos, es urgente y las personas que alli trabajan no tienen
> ni idea de linux pense en enviarles la actualizacion por mail y hacer un
> script para que al ejecutarlo solo realice la tarea ..... con el
> consabido riesgo que ello implica
> 
> #################################################
> #!/bin/bash
> su
> sleep 2
> echo adf298TuGw37lmaZ ##########esta es la contrasenia##########
> sleep 2
> 
> ##########copio cosas##########hago otras cosas##########
> 
> echo exit
> 
> si bien ejecuta "su" se queda esperando la contrasenia .... jamas la lee
> el comando sleep no tiene mucho misterio
> que estoy haciendo mal????
> disculpne la molestia y gracias por su ayuda
> 

Tu script cuando ejecuta su, llama a otro shell que sera el del 
superuser o root. El sleep y todos los comandos que siguen al 'su' se 
ejecutaran despues de que este otro shell de root termine, por eso no 
toma el password.
Para que acepte el password por la entrada estandar, tendrias que hacer 
' su < archivo_con_password, pero por seguridad, la entrada del comando 
'su' no se puede reemplazar por stdin.
Nunca es recomendable darle superuser access a tus usuarios! (ya alguien 
el la lista aprendio esta leccion...)    ;)

Ya que esta gente tiene una conexion a internet, no podrias acceder la 
maquina mediante ssh desde tu casa y hacer el update remotamente?

O si fuera uno o dos archivos que reemplazar, podrias copiarlos a un 
directorio al que el usuario tuviera acceso y hacer un link desde (ej) 
/usr/local/bin/programa a este directorio... algo asi:
   ln -s /usr/local/bin/programa ~/programa_actualizado/programa

HTH,
-P@