sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #19270
Re: Expect og passwd
Morten Christensen wrote:
> Jeg ville gerne kunne oprette 40 brugere i et script uden at indtaste alle passwords manuelt.
>
> Jeg har fundet expect-scriptet autopasswd, som burde kunne løse problemet:
> #!../expect -f
> # wrapper to make passwd(1) be non-interactive
> # username is passed as 1st arg, passwd as 2nd
>
> set password [lindex $argv 1]
> spawn passwd [lindex $argv 0]
> expect "password:"
> send "$password\r"
> expect "password:"
> send "$password\r"
> expect eof
>
> Password'et bliver sendt første gang, men ikke anden gang. Jeg har ændret anden udgave af
> expect "password:" til expect "password (again):" uden nogen virkning.
>
> Har en af jer en løsning på masseoprettelse af brugere?
> mvh...
> Morten Christensen
Hvis du kører RedHat og har installeret expect, så prøv og check /usr/bin/mkpasswd
"mkpasswd - make a password, if username given, set it."
Du kan evt. lave et lille script hvor du indtaster brugernavn, og redirecter brugernavn og
password ud i en fil.
#!/bin/bash
clear
echo -n "Username: "
read USERNAME
PASSWD=`/usr/bin/mkpasswd`
/usr/sbin/adduser $USERNAME
/usr/bin/updpasswd $USERNAME $PASSWD
echo -e "Username:\t$USERNAME" >$USERNAME.info
echo -e "Password:\t$PASSWD" >>$USERNAME.info
Hvor "/usr/bin/updpasswd" er følgende:
#!/usr/bin/expect --
set password [lindex $argv 1]
set user [lindex $argv 0]
spawn /usr/bin/passwd $user
expect {
"assword*:" {
sleep .5s
send "$password\r"
exp_continue
}
}
Mvh.
Michael
References