Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Unix / Linux (http://www.forosdelweb.com/f41/)
-   -   tengo que crear un script (http://www.forosdelweb.com/f41/tengo-que-crear-script-442326/)

cnsey 11/11/2006 12:28

tengo que crear un script
 
hola amigos
tengo dudas con respecto a como asiganar la password a un usuario dentro de un script:

if [ $x -eq 2]
then
echo -e "ingrese nombre de nuavo usuaro: \c"
read a
useradd $a
echo -e "ingrese cotraseña para usuario: \c"
read b
passwd $a
creo que eso no esta bien!!! alguien sabe que le falta??
estoy haciendo un menu con varias opciones mas adelante necesitare mas ayuda pero por ahora esta agradesco de antemano:si:

AleSanchez 11/11/2006 15:35

Por razones de seguridad, el comando passwd no lo podes ejecutar desde un script. Necesita si o si la interaccion con un usuario.
Una forma de poder correrlo es con expect, busca info en el foro que se ha hablado del tema, o en internet.
Saludos!

pablasso 11/11/2006 19:47

como te dijeron bajate el expect (yum install expect, aptitude install expect, etc) y despues ya puedes correr un script como este para cambiarlo

Código:

#!/bin/sh
# \
exec expect -f "$0" ${1+"$@"}
set password [lindex $argv 1]
spawn passwd [lindex $argv 0]
sleep 1
expect "assword:"
send "$password\r"
expect "assword:"
send "$password\r"
expect eof

funciona con 'nombredescript usuario password'

cnsey 12/11/2006 21:23

gracias por las respuestas
pero les cuento que este script es para una tarea que debo entregar este miercoles y lo del root daria lo mismo por que se supone que lo ejecutaria solamente root, se trata de automatizar tareas en un script y deveria poderse... algo asi como lo que mostre al principio si no se puede avisenme porfa para no calentarme la cabez buscando como...

ademas alguien sabe donde puedo encontrar el manual de " case "porque cambie los if por case asi puedo meter if dentro de los case para poder hacer un else...
ya encotre la solucion¡¡¡¡
http://es.tldp.org/Tutoriales/NOVATO...-novato-9.html
jejeje

cnsey 12/11/2006 23:41

hola amigos sigo con mi tarea
no puedo encontrar la forma en que haciendo la comparacionen el if encuentre si el usuario ya esta creado.. aqui el ejemplo:

echo -e "ingrese nombre de nuevo usuaro: \c";
read a;
adduser $a;
if [ $a -O ]; #que se pone aqui...???
then
echo "!! el usuario ya existe ¡¡";
else
echo "ingrese contraseña para usuario: ";

si alguien conoce la solucion se lo agradeceré...

pablasso 13/11/2006 00:49

asi como lo tienes al llamar a adduser el mismo te dira si el usuario existe o te pedira el pass en caso contrario

en la condicional -O es para respuestas sobre existencia de archivos, talvez deberias usar expect o $& para ver que respuesta te esta dando.. yo confiaria en solo ejecutar adduser

cnsey 13/11/2006 09:54

Cita:

Iniciado por pablasso (Mensaje 1779673)
asi como lo tienes al llamar a adduser el mismo te dira si el usuario existe o te pedira el pass en caso contrario

en la condicional -O es para respuestas sobre existencia de archivos, talvez deberias usar expect o $& para ver que respuesta te esta dando.. yo confiaria en solo ejecutar adduser

tienes razon pero lo que pasa es que igual me dice que le cambie la password
al usuario ya creado.... mi intencion es que si el usuario existe que pare ahi y lo del $& no lo entendi bien a que se refieres? o donde pongo eso y para que sirve ( expect tengo que instalarlo aun).... gracias

pablasso 13/11/2006 09:59

con el script que te puse primero le puedes cambiar el pass

cnsey 13/11/2006 10:26

Cita:

Iniciado por pablasso (Mensaje 1780356)
con el script que te puse primero le puedes cambiar el pass

gracias pablasso
pero te cuento que mi nivel de programacion es super basico y no entiendo como funciona el script que me enviaste por eso buscaba una forma mas convencional... algo asi como una comparacion de algo que si existia no siguiera ejecutando el script... lo del passwd iba a dejarlo asi como esta osea que se ejecute normalmente, ponerlo despues del else...

AleSanchez 13/11/2006 11:50

Código:

read a
cat /etc/passwd | grep "$a:" > /dev/null
if [ $? == "0" ]
then
        ... Aqui lo que harias si el usuario SI existe ...
else
        ... Aqui lo que harias si el usuario NO existe ...
fi

Cita:

Iniciado por cnsey
(...)pero te cuento que mi nivel de programacion es super basico(...)

No hay excusa. Hay que leer y estudiar.
Programación en BASH - COMO de introducción

cnsey 13/11/2006 22:52

Cita:

Iniciado por AleSanchez (Mensaje 1780638)
Código:

read a
cat /etc/passwd | grep "$a:" > /dev/null
if [ $? == "0" ]
then
        ... Aqui lo que harias si el usuario SI existe ...
else
        ... Aqui lo que harias si el usuario NO existe ...
fi



No hay excusa. Hay que leer y estudiar.

te aseguro que lo hare gracias
asi lo deje y funsiono:

comp=`grep "$a" /etc/passwd `
if [ -r $comp ];
se agradece :si:

cnsey 13/11/2006 23:58

amigos he buscado informacion sobre el comando at
pero no encuentro por lo menos en google o no he sabido buscar
tengo nociones de como funciona pero tengo que agregarlo al mi script
alguien tiene informacion en español, intente con man pero ya ven las posibles respuestas estan en ingles y los traductores traducen como el forro....no me he quedado.... para que despues no digan que he sido flojo,
lo positivo es que leyendo lo que voy encontrando igual se aprende, pero no lo que busco.... jejejeje
espero su ayuda gracias...

pablasso 14/11/2006 00:05

'man at' :-)

cnsey 14/11/2006 11:02

Cita:

Iniciado por pablasso (Mensaje 1781875)
'man at' :-)

otraves intente man at pero no entiendo ni J
por ejemplo: esto dice de la opcion c:

-c cats the jobs listed on the command line to standard output

y la traduccion es:

- gatos de c que los trabajos enumeraron en la línea de comando a la salida estándar

no se si alguien sabe de algo en español del comando at
no entiendo nada de esta traduccion ni de las otras

AleSanchez 14/11/2006 13:21

Yo tengo instalado un paquete que se llama man-page-es entre las que esta la pagina del manual de at en español.
Quizas para tu distribucion exista algo igual...


La zona horaria es GMT -6. Ahora son las 19:04.

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