Pentru funcționalități de automatizare folosim shell scripting. Un script shell este o înlănțiure de comenzi agregate pentru un scop final. Un shell script este o formă quick'n'dirty de automatizare. Pentru aspecte mai complexe, este util să se folosească forme avansate de automatizare precum Awk, Python, Perl sau altele.
for
vs. argumente în listă vs. while read
if <command>
tr
vs. sed
cut
vs. awk
find
, stat
, basename
, dirname
echo
, cat
, head
, tail
, nl
, tac
, rev
cut
, tr
, sort
, uniq
, grep
, awk
, sed
seq
, for
, if
, test
, while read
Folosire head, tail, sort, uniq, cut, tr.
Folosire sed pentru substituție.
Folosire sed pentru ștergere.
Folosire sed pentru interschimbare.
Folosire awk pentru afișarea unor coloane.
Folosire awk și expresii regulate pentru afișarea unor coloane.
Afișați fișierele din ierarhia /usr/include
în ordinea numărului de apariții ale cuvântului FILE
.
Listați numele protocoalelor cu număr de port între 100 și 200. Portul se obține din fișierul /etc/services
.
Pentru început adăugați în sistem utilizatorii ana
, bogdan
, corina
, dan
și elena
folosind utilitarul adduser
.
Ca root, parcurgeți utilizatorii sistemului care au home-ul în /home/
, și creați un director public_html
în home-ul fiecăruia.
Realizați apoi un one-liner sau un script care să șteargă directorul public_html
.
Ca root, parcurgeți utilizatorii sistemului care au home-ul în /home/
, și creați un director public_html
în home-ul fiecăruia. Schimbați ownership-ul acelui director la utilizator folosind chown
.
Realizați pasul de mai sus doar că schimbați numele directorului nou creat în public_html_<UID>
unde UID
este numele de utilizator al utilizatorului.
Afișați numele paginilor de manual din secțiunea 5. Numele sunt partea fără extensie din fișierele existente în /usr/share/man/man5/
. De exemplu, pentru fișierul issue.5.gz
, numele este issue
.
Recomandăm pașii de mai jos.
Parcurgeți folosind for
intrările din /usr/share/man/man5/
.
Folosiți comanda basename
pentru a extrage doar numele de bază al fișierului.
basename
ca argumente numele fișierului și extensia care va fi eliminată din numele fișierului, rămânând doar cu numele de bază.
Trebuie să scoateți extensia 5.gz
.
Din lista de mai sus, extrageți doar comenzile care încep cu o anumită literă. Adică din outputul de mai sus, folosiți o comandă de forma grep '^a
' pentru a extrage liniile care încep cu litera a
folosind grep
.
Vrem să schimbăm parola utilizatorilor care au directorul home în /home
și să facem asta corect Vom crea un script numit change-home-users-pw
.
Pentru început adăugați în sistem utilizatorii ana
, bogdan
, corina
, dan
și elena
folosind utilitarul adduser
.
În cadrul scriptului folosiți /etc/passwd
, while
și read
pentru a afișa doar numele utilizatorilor (username) care au home-ul în /home
.
while
, puteți folosi o construcție de forma echo $var | grep '^/home/
' pentru a afla dacă variabila var
începe cu șirul /home
.
Sau dacă folosiți awk
nu mai aveți nevoie de construcția de mai sus.
Pentru parole generați o parolă folosind utilitarul pwgen
. Parola trebuie să aibă 12 caractere și să conțină numere și caractere speciale.
pwgen
sau exemplele de aici: http://www.maketecheasier.com/password-generators-for-linux/
Schimbați, în mod neinteractiv, folosind comanda chpasswd
, parola pentru utilizatorii sistemului care au home-ul în /home
. După schimbarea parolei afișați la ieșirea standard, pentru fiecare utilizator, numele de utilizator și noua parolă.
echo ... | sudo chpasswd
pentru schimbarea parolei în mod neinteractiv. Vedeți și exemplele de aici: http://linoxide.com/linux-command/change-passwords-batch-mode-chpasswd/