🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

9 total messages Started by bohateur Wed, 01 Oct 2008 10:42
FreeBSD 7.0 ustawienie hasła w trybie interaktywnym
#20495
Author: bohateur
Date: Wed, 01 Oct 2008 10:42
6 lines
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
#20498
Author: Marcin Gryszkalis
Date: Wed, 01 Oct 2008 12:32
14 lines
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
#20496
Author: bohateur
Date: Wed, 01 Oct 2008 12:56
17 lines
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
#20500
Author: Paweł Kania
Date: Wed, 01 Oct 2008 16:34
52 lines
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
#20502
Author: Paweł Kania
Date: Wed, 01 Oct 2008 16:47
67 lines
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
#20503
Author: bohateur
Date: Wed, 01 Oct 2008 18:18
13 lines
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
#20504
Author: Robert Rędziak
Date: Wed, 01 Oct 2008 21:27
58 lines
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
#20505
Author: Robert Rędziak
Date: Wed, 01 Oct 2008 21:30
59 lines
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
#20506
Author: Paweł Kania
Date: Thu, 02 Oct 2008 08:51
32 lines
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