Thread View: pl.comp.os.bsd
9 messages
9 total messages
Started by bohateur
Wed, 01 Oct 2008 10:42
FreeBSD 7.0 ustawienie hasła w trybie interaktywnym
Author: bohateur
Date: Wed, 01 Oct 2008 10:42
Date: Wed, 01 Oct 2008 10:42
6 lines
966 bytes
966 bytes
Witam, Muszę napisać skrypt do automatycznego założenia kont dla kilkuset osób. W jaki sposób z poziomu pętli for w bashu ustawić hasło dla danego konta? Próboję użyć opcji -stdin passwd ale nie działa.
Re: FreeBSD 7.0 ustawienie hasła w trybie interaktywnym
Author: Marcin Gryszkalis
Date: Wed, 01 Oct 2008 12:32
Date: Wed, 01 Oct 2008 12:32
14 lines
1105 bytes
1105 bytes
bohateur wrote: > Muszę napisać skrypt do automatycznego założenia kont > dla kilkuset osób. W jaki sposób z poziomu pętli for > w bashu ustawić hasło dla danego konta? Próboję > użyć opcji -stdin passwd ale nie działa. man pw opcja -h albo -H pozdrawiam -- Marcin Gryszkalis, PGP 0x9F183FA3 jabber jid:mg@fork.pl, gg:2532994 http://the.fork.pl
Re: FreeBSD 7.0 ustawienie hasła w trybie interaktywnym
Author: bohateur
Date: Wed, 01 Oct 2008 12:56
Date: Wed, 01 Oct 2008 12:56
17 lines
1327 bytes
1327 bytes
Marcin Gryszkalis pisze: > bohateur wrote: >> Muszę napisać skrypt do automatycznego założenia kont >> dla kilkuset osób. W jaki sposób z poziomu pętli for >> w bashu ustawić hasło dla danego konta? Próboję >> użyć opcji -stdin passwd ale nie działa. > man pw > opcja -h albo -H zrobiłem inaczej. gdyby kogoś interesowało pw user add konto chpass -p `openssl passwd -1 haslo_do_konta_plain` konto pozdrawiam
Re: FreeBSD 7.0 ustawienie hasła w trybie interaktywnym
Author: Paweł Kania
Date: Wed, 01 Oct 2008 16:34
Date: Wed, 01 Oct 2008 16:34
52 lines
2151 bytes
2151 bytes
bohateur napisał(a):
> Muszę napisać skrypt do automatycznego założenia kont
> dla kilkuset osób. W jaki sposób z poziomu pętli for
> w bashu ustawić hasło dla danego konta? Próboję
> użyć opcji -stdin passwd ale nie działa.
Najlepiej użyć do tego polecenia, które służy we FreeBSD do zakładania
kont, czyli jak sama nazwa wskazuje: adduser. Można wykorzystać opcję
-f, na przykład tak:
$ cat lista_kont.csv
jkowalski,Jan,Kowalski,dupa.8
$ cat add_users.sh
#!/usr/local/bin/bash
userDataFile=$1
if [ ! -f "$userDataFile" ] ; then
echo "Musisz podać plik z listą kont do założenia w formacie:
login1,Imię1,Nazwisko1,hasło1
login2,Imię2,Nazwisko2,hasło2"
exit 1
fi
while read userData ; do
# parsowanie danych wejściowych
user=(`echo $userData | awk -F, '{print $1,$2,$3,$4}'`)
login=${user[0]}
imie=${user[1]}
nazwisko=${user[2]}
haslo=${user[3]}
# zakładanie konta
echo "$login::500::::$imie $nazwisko:/home/$login:/usr/sbin/nologin:$haslo" | adduser -f - >> /var/log/adduser.log 2>&1
# i tutaj miejsce na dowolne dodatkowe operacje przy zakładaniu konta
done < $userDataFile
Powodzenia,
Elb
--
- No wiesz, pijany i o trzeciej nad ranem wracasz do domu!?
- A kto powiedział, że wracam? Po gitarę tylko przyszedłem.
===========================================================
FAQ pl.rec.muzyka.gitara: http://faq.prmg.art.pl/
Re: FreeBSD 7.0 ustawienie hasła w trybie interaktywnym
Author: Paweł Kania
Date: Wed, 01 Oct 2008 16:47
Date: Wed, 01 Oct 2008 16:47
67 lines
2748 bytes
2748 bytes
bohateur napisał(a):
> Muszę napisać skrypt do automatycznego założenia kont
> dla kilkuset osób. W jaki sposób z poziomu pętli for
> w bashu ustawić hasło dla danego konta? Próboję
> użyć opcji -stdin passwd ale nie działa.
Najlepiej użyć do tego polecenia, które służy we FreeBSD do zakładania
kont, czyli jak sama nazwa wskazuje: adduser. Można wykorzystać opcję
-f, na przykład tak:
$ cat lista_kont.csv
jkowalski,Jan,Kowalski,dupa.8
$ cat add_users.sh
#!/usr/local/bin/bash
userDataFile=$1
if [ ! -f "$userDataFile" ] ; then
echo "Musisz podać plik z listą kont do założenia w formacie:
login1,Imię1,Nazwisko1,hasło1
login2,Imię2,Nazwisko2,hasło2"
exit 1
fi
while read userData ; do
# parsowanie danych wejściowych
user=(`echo $userData | awk -F, '{print $1,$2,$3,$4}'`)
login=${user[0]}
imie=${user[1]}
nazwisko=${user[2]}
haslo=${user[3]}
# zakładanie konta
echo "$login::500::::$imie $nazwisko:/home/$login:/usr/sbin/nologin:$haslo" | adduser
-f - >> /var/log/adduser.log 2>&1
# i tutaj miejsce na dowolne dodatkowe operacje przy zakładaniu konta
done < $userDataFile
Oczywiście wywołanie:
$ add_users.sh lista_kont.csv
Takie rozwiązanie jest wygodne z kilku powodów:
* listę kont można sobie zaimportować z arkusza (a tak często ją nam
dostarczają)
* można skorzystać z dobrodziejstw adduser.conf
* można sobie tak napisać skrypt do zakładania kont, żeby dla każdego
konta móc pobierać jakieś dodakowe opcje z pliku wejściowego (na
przykład 5 luserów na 300 chce mieć inną niż domyślna powłokę, a 15
innych dostęp do samby).
Powodzenia,
Elb
--
- No wiesz, pijany i o trzeciej nad ranem wracasz do domu!?
- A kto powiedział, że wracam? Po gitarę tylko przyszedłem.
===========================================================
FAQ pl.rec.muzyka.gitara: http://faq.prmg.art.pl/
Re: FreeBSD 7.0 ustawienie hasła w trybie interaktywnym
Author: bohateur
Date: Wed, 01 Oct 2008 18:18
Date: Wed, 01 Oct 2008 18:18
13 lines
1233 bytes
1233 bytes
Paweł Kania pisze: > Oczywiście wywołanie: > $ add_users.sh lista_kont.csv Super. dzięki za gotowca. Dodam jeszcze to co znalazłem a co ciężko było mi wcześniej wyczytać w man. Łatwo można dodać konto w trybie wsadowym za pomocą echo haslo_do_konta | pw user add konto -h0 pozdrawiam
Re: FreeBSD 7.0 ustawienie hasła w trybie interaktywnym
Author: Robert Rędziak
Date: Wed, 01 Oct 2008 21:27
Date: Wed, 01 Oct 2008 21:27
58 lines
2949 bytes
2949 bytes
On 1 Oct 2008 16:47:14 GMT, Paweł Kania <elb@sgh.waw.pl> wrote:
> Najlepiej użyć do tego polecenia, które służy we FreeBSD do zakładania
> kont, czyli jak sama nazwa wskazuje: adduser. Można wykorzystać opcję
> -f, na przykład tak:
[...]
> $ cat add_users.sh
> #!/usr/local/bin/bash
>
> userDataFile=$1
>
> if [ ! -f "$userDataFile" ] ; then
> echo "Musisz podać plik z listą kont do założenia w formacie:
> login1,Imię1,Nazwisko1,hasło1
> login2,Imię2,Nazwisko2,hasło2"
> exit 1
> fi
>
> while read userData ; do
>
> # parsowanie danych wejściowych
> user=(`echo $userData | awk -F, '{print $1,$2,$3,$4}'`)
> login=${user[0]}
> imie=${user[1]}
> nazwisko=${user[2]}
> haslo=${user[3]}
>
> # zakładanie konta
> echo "$login::500::::$imie $nazwisko:/home/$login:/usr/sbin/nologin:$haslo" | adduser
> -f - >> /var/log/adduser.log 2>&1
A nie prościej wypluć ze skryptu plik we właściwym formacie, a
potem zaciągnąć go do addusera (-f nazwa_pliku)? Po co
dziesiątki, setki czy tysiące razy wywoływać tę samą komendę?
>
> # i tutaj miejsce na dowolne dodatkowe operacje przy zakładaniu konta
>
> done < $userDataFile
Żeby już nie przedłużać:
awk -F, '{print $1"::500::::"$2" "$3":/home/"$1":/usr/sbin/nologin:"$4}' < lista_kont.csv > konta_batch.txt ; adduser -f konta_batch.txt
A jak któryś użytkownik ma mieć np. inną powłokę to:
awk -F, '/userx/ {print $1"::500::::"$2" "$3":/home/"$1":/bin/ksh:"$4;next};{print $1"::500::::"$2" "$3":/home/"$1":/usr/sbin/nologin:"$4}'
i dalej tak samo...
r.
--
_________________________________________________________________
robert rędziak mailto:giekao-at-gmail-dot-com
zmien kreseczkę na kropeczkę: http://forum-subaru.pl
I hope they don't fart at Greenpeace. That's bad for Gaia.
Re: FreeBSD 7.0 ustawienie hasła w trybie interaktywnym
Author: Robert Rędziak
Date: Wed, 01 Oct 2008 21:30
Date: Wed, 01 Oct 2008 21:30
59 lines
2868 bytes
2868 bytes
On 1 Oct 2008 16:47:14 GMT, Paweł Kania <elb@sgh.waw.pl> wrote:
> Najlepiej użyć do tego polecenia, które służy we FreeBSD do zakładania
> kont, czyli jak sama nazwa wskazuje: adduser. Można wykorzystać opcję
> -f, na przykład tak:
[...]
> $ cat add_users.sh
> #!/usr/local/bin/bash
>
> userDataFile=$1
>
> if [ ! -f "$userDataFile" ] ; then
> echo "Musisz podać plik z listą kont do założenia w formacie:
> login1,Imię1,Nazwisko1,hasło1
> login2,Imię2,Nazwisko2,hasło2"
> exit 1
> fi
>
> while read userData ; do
>
> # parsowanie danych wejściowych
> user=(`echo $userData | awk -F, '{print $1,$2,$3,$4}'`)
> login=${user[0]}
> imie=${user[1]}
> nazwisko=${user[2]}
> haslo=${user[3]}
>
> # zakładanie konta
> echo "$login::500::::$imie $nazwisko:/home/$login:/usr/sbin/nologin:$haslo" | adduser
> -f - >> /var/log/adduser.log 2>&1
A nie prościej wypluć ze skryptu całość we właściwym formacie, a
potem zaciągnąć to do addusera (czy to przez plik pośredni, czy
potok)? Po co dziesiątki, setki czy tysiące razy wywoływać tę
samą komendę?
>
> # i tutaj miejsce na dowolne dodatkowe operacje przy zakładaniu konta
>
> done < $userDataFile
Żeby już nie przedłużać:
awk -F, '{print $1"::500::::"$2" "$3":/home/"$1":/usr/sbin/nologin:"$4}' < lista_kont.csv | adduser -f -
A jak któryś użytkownik ma mieć np. inną powłokę to:
awk -F, '/userx/ {print $1"::500::::"$2" "$3":/home/"$1":/bin/ksh:"$4;next};{print $1"::500::::"$2" "$3":/home/"$1":/usr/sbin/nologin:"$4}'
i dalej tak samo...
r.
--
_________________________________________________________________
robert rędziak mailto:giekao-at-gmail-dot-com
zmien kreseczkę na kropeczkę: http://forum-subaru.pl
I hope they don't fart at Greenpeace. That's bad for Gaia.
Re: FreeBSD 7.0 ustawienie hasła w trybie interaktywnym
Author: Paweł Kania
Date: Thu, 02 Oct 2008 08:51
Date: Thu, 02 Oct 2008 08:51
32 lines
2143 bytes
2143 bytes
Robert Rędziak napisał(a): > A nie prościej wypluć ze skryptu całość we właściwym formacie, a > potem zaciągnąć to do addusera Zgodzę się, że z wydajnościowego punktu widzenia zaproponowałeś lepsze rozwiązanie. > Po co dziesiątki, setki czy tysiące razy wywoływać tę > samą komendę? Zrobiłem copy-paste fragmentu mojego programu instalacyjnego, który oprócz zakładania konta systemowego w każdej iteracji wykonuje jeszcze inne operacje na tymże założonym koncie. Niepowodzenie którejkolewiek z nich powoduje przerwanie wykonywania programu i wyjście z błędem, podobnie jak błąd w założeniu samego konta. Takie podejście pozwala mi naprawić błąd i wznowić wykonywanie skryptu od użytkownika, na którym się wywaliło przez proste obcięcie początku pliku wsadowego, co jest w moim przypadku wygodniejsze niż ręczne (albo osobnym skryptem) wykonanie operacji na wszystkich założonych kontach. Że już nie wspomnę o dostawaniu list kont do założenia ze zdublowanymi rekordami :) Jednak pytanie było o to czym ustawić hasło, także myślę że EOT. Elb -- - No wiesz, pijany i o trzeciej nad ranem wracasz do domu!? - A kto powiedział, że wracam? Po gitarę tylko przyszedłem. =========================================================== FAQ pl.rec.muzyka.gitara: http://faq.prmg.art.pl/
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads