in der aktuellen openSUSE 11.2 mit SAMBA 3.4.2 sind
SAMBA-Accounts nach dem anlegen disabled.
Ein
smbpasswd -a -n user1
legt ihn zwar ohne Passwort an, aber der Account ist disbled.
Mit
smbpasswd -e user1
wird er zwar enabled, fragt aber trotzdem nach dem Passwort,
das ich dann mit 2 x ENTER bestᅵtigen muss.
Wie kann ich das bei 20 Accounts scripten?
Bisher hatte ich das so gemacht:
for ((i=1;i<21;i++));do useradd -G workgroup -m -s /bin/bash -p "" \
user$i;done
for ((i=1;i<21;i++));do smbpasswd -a -n user$i;done
for ((i=1;i<21;i++));do smbpasswd -e user$i;done
MfG
AK
--
Alles war so schᅵn und unkompliziert...
...als es das Internet noch nicht gab.
Dafuer ist die Option -s bei smbpasswd gedacht. Trotzdem brauchts zwei
Eingaben. Mit -s kannst du das dann aber z.B. so schreiben:
smbpasswd -s $USER <<EOF
$PASSWORD
$PASSWORD
EOF
(Wichtig: die Zeilen *nicht* einruecken, sie muessen linksbuendig
stehen).
Oder (BASH/zsh built-in echo mit -e Option):
echo -e "$PASSWORD\n$PASSWORD" | smbpasswd -s $USER
Oder portabler mit POSIX semantik:
echo "$PASSWORD
$PASSWORD" | smbpasswd -s $USER
Juergen
--
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)
for ((i=1;i<21;i++));do smbpasswd -a -n user$i;done <<EOF
$PASSWORD
$PASSWORD
EOF
?
useradd -G workgroup -m -s /bin/bash -p "" supervisor
useradd -G workgroup -m -s /bin/bash -p "" administrator
for ((i=1;i<21;i++));do useradd -G workgroup -m -s /bin/bash -p ""
user$i;done
smbpasswd -a -n supervisor
smbpasswd -e -s supervisor <<EOF
$PASSWORD
$PASSWORD
EOF
smbpasswd -a -n administrator
smbpasswd -e -s administrator <<EOF
$PASSWORD
$PASSWORD
EOF
for ((i=1;i<21;i++));do smbpasswd -a -n user$i;done
for ((i=1;i<21;i++));do smbpasswd -e -e user$i;done <<EOF
$PASSWORD
$PASSWORD
EOF
Geht.
Du koenntest dir die vielen einzelnen Schleifen sparen und den
user-teil in eine Schleife packen:
for ((i=1;i<21;i++));do
useradd -G workgroup -m -s /bin/bash -p "" user$i
smbpasswd -a -n user$i;done
smbpasswd -s -e user$i;done <<EOF
$PASSWORD
$PASSWORD
EOF
done
Ich nehme meist
for i in `seq 20`;do
wobei ich nicht wei�, welches performanter ist. Finde ich zumindest
einfacher zu tippen.
--
Andreas
Linux: The choice of a GNU generation.
bash: seq: command not found.
POSIX-Shellkonform und zudem IMO besser lesbar ist eine while-schleife:
i=1
while [ "$i" -le 20 ]; do
...
i=$i+1
done
Das funktioniert dann auch ganz ohne GNU tools auf jedem System mit
einer POSIX-Shell.
Juergen
> POSIX-Shellkonform und zudem IMO besser lesbar ist eine while-schleife:
> ...
> i=$i+1
i=$((i+1))
Manche Shells m�gen auch i=$(($i+1)).
Gru�,
Heike
Stimmt, danke fuer die Korrektur. Ich hatte die (( )) vergessen.
> Manche Shells mᅵgen auch i=$(($i+1)).
Das funktioniert, weil das $i in der Klammer vor Auswertung der
Klammer durch den Inhalt ersetzt wird und auch z.B. $((3+1)) richtig
berechnet wird.
MfG
AK
> funktionieren tut's dann so, da warn dann zwei done zuviel:
> for ((i=1;i<21;i++));do
> useradd -G workgroup -m -s /bin/bash -p "" user$i
> smbpasswd -a -n user$i
> smbpasswd -s -e user$i <<EOF
> $PASSWORD
> $PASSWORD
> EOF
> done
Ich weiss nicht, warum so kompliziert:
user_add() {
username=$1
password=$2
echo $password | useradd -s /bin/false -g $master $username
(echo $password; echo $password) | smbpasswd -a -s $username
(so aus einem unserer Scripte kopiert)
Bernd
--
Visit http://www.nixwill.de and http://www.spammichvoll.de
jean....@nixwill.de & bernado....@spammichvoll.de
Stilfrage. HERE-Dokumente sparen dir den Aufruf von Subshells.