Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

enter sripten

1 view
Skip to first unread message

Achim Klausmann

unread,
Dec 25, 2009, 4:28:49 AM12/25/09
to
Moin,

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.

Juergen P. Meier

unread,
Dec 25, 2009, 4:51:04 AM12/25/09
to
Achim Klausmann <achim.k...@t-online.de>:

> 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?

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)

Achim Klausmann

unread,
Dec 25, 2009, 5:54:40 AM12/25/09
to
Juergen P. Meier schrieb:

> Achim Klausmann <achim.k...@t-online.de>:
>> 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?
>
> 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
Hm, fᅵr einen User hab ich begriffen und wie setz ich das fᅵr meine
Schleife um?

for ((i=1;i<21;i++));do smbpasswd -a -n user$i;done <<EOF
$PASSWORD
$PASSWORD
EOF

?

Achim Klausmann

unread,
Dec 25, 2009, 7:13:17 AM12/25/09
to
Ich hab's latᅵrnich so gelᅵst:

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.

Juergen P. Meier

unread,
Dec 25, 2009, 11:10:30 AM12/25/09
to
Achim Klausmann <achim.k...@t-online.de>:

> Ich hab's latᅵrnich so gelᅵst:

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

Andreas Kohlbach

unread,
Dec 25, 2009, 7:44:55 PM12/25/09
to
Juergen P. Meier wrote on 25. December 2009:
>
> Achim Klausmann <achim.k...@t-online.de>:
>> Ich hab's lat�rnich so gel�st:

>
> Du koenntest dir die vielen einzelnen Schleifen sparen und den
> user-teil in eine Schleife packen:
>
> for ((i=1;i<21;i++));do
...

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.

Juergen P. Meier

unread,
Dec 26, 2009, 3:55:36 AM12/26/09
to
Andreas Kohlbach <a...@spamfence.net>:

> Ich nehme meist
>
> for i in `seq 20`;do
>
> wobei ich nicht weiᅵ, welches performanter ist. Finde ich zumindest
> einfacher zu tippen.

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

Heike C. Zimmerer

unread,
Dec 26, 2009, 5:18:17 AM12/26/09
to
"Juergen P. Meier" <nospa...@jors.net> writes:

> 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

Juergen P. Meier

unread,
Dec 26, 2009, 5:31:46 AM12/26/09
to
Heike C. Zimmerer <nospa...@gmx.net>:

> "Juergen P. Meier" <nospa...@jors.net> writes:
>
>> POSIX-Shellkonform und zudem IMO besser lesbar ist eine while-schleife:
>> ...
>> i=$i+1
>
> i=$((i+1))

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.

Message has been deleted

Achim Klausmann

unread,
Dec 26, 2009, 4:24:14 PM12/26/09
to
Juergen P. Meier schrieb:

> 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
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

MfG
AK

Bernd Hohmann

unread,
Dec 26, 2009, 4:35:56 PM12/26/09
to
Achim Klausmann schrieb:

> 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

Juergen P. Meier

unread,
Dec 27, 2009, 5:11:14 AM12/27/09
to
Bernd Hohmann <bernd.hohma...@freihaendler.com>:

> (echo $password; echo $password) | smbpasswd -a -s $username
>
> (so aus einem unserer Scripte kopiert)

Stilfrage. HERE-Dokumente sparen dir den Aufruf von Subshells.

0 new messages