← Back to team overview

sslug-teknik team mailing list archive

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