[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Problem w skrypcie bash/sed/awk.



On Thu, 2009-03-12 at 10:21 +0100, bartek szurgot wrote:
> pamietaj tez na przyszlosc, zeby przypisania do zmiennych i ich uzycie 
> zawsze brac w cudzyslowia - unikniesz dzieki temu sporej ilosc 
> "spacjowych problemow". :)

"Cudzysłowy"!!!

> #!/bin/bash
> cat /etc/passwd | \
>    while read line
>    do
>      C_USRNAME="`awk -F: '{print $1}' <<< "$line"`"
>      C_UID="`    awk -F: '{print $3}' <<< "$line"`"
>      C_HOMEDIR="`awk -F: '{print $6}' <<< "$line"`"
>      C_LSHELL="` awk -F: '{print $7}' <<< "$line"`"
>      C_COMMENT="`awk -F: '{print $5}' <<< "$line"`"
>      #C_PASSWORD=`egrep "^$C_USRNAME" /etc/shadow | cut -d: -f2`
>      echo useradd -u "$C_UID" -m -d "$C_HOMEDIR" -s "$C_SHELL" -c 
> "$C_COMMENT" -p "$C_PASSWORD" $C_USRNAME
>    done
> exit 0

1. Martwy kot. Właściwiej byłoby:
while read line; do
[...]
done < /etc/passwd
2. Jakoś wcześniej to zupełnie zignorowałem - bez sensu tu jeszcze awka
wrzucać. Trzeba po prostu IFS odpowiedni ustawić i dać readowi zrobić co
trzeba.

> w/w skrypt jest dosc toporny, ale dziala (grepowanie shadow'a 
> wykomentowalem, bo nie testowalem tego - zostawilem jak bylo u Ciebie).
> przed wykonaniem useradd dalem echo zebys widzial co sie dzieje (latwiej 
> bedzie Ci zmieniac/debugowac). jak skonczysz to wywalasz echo i voila. :)

Do debugowania dobre jest na początku skryptu 'shopt -s -o xtrace'

> btw: petla "while read" bedzie miala tu jeszcze jedna zalete - zapewne 
> bedizesz potrzebowal odfiltrowac UID'y systemowe lub uzyszkodniqw juz 
> obecnych w docelowym systemie (i.e.: root, cron, etc...) - teraz 
> wystarczy dodac jednego if'a przed wykonaniem useradd'a.

Źle stosuj'esz apostrof'y.


-- 
Mariusz Kruk
Administrator Sieci

Polskie Radio Rozgłośnia Regionalna w Warszawie ,,Radio dla Ciebie'' S.A.
ul. Myśliwiecka 3/5/7, 00-459 Warszawa
NIP 521-04-14-271
Numer KRS: 0000075953, Sąd Rejonowy dla M. St. Warszawy,
XII Wydział Gospodarczy Krajowego Rejestru Sądowego 
Wysokość kapitału zakładowego: 900 300,00 zł (wpłacony w całości)


Reply to: