Na servery v /etc/passwd su ulozeny uzivatelia podla id takto:
.
.
.
09050721
09058332
09050729
09076231
.
.
.
Skript ma byt napisany v bash. A ja chcem zistit ze ci uzivatel ktory je zadany ako parameter skriptu ci taky existuje...napr spustim skript ako
bash meno 09050721 a teraz sa to pozre do /etc/passwd ci tam taky je a ak je vypise ze mam takeho... skusal som to robit grepom ako
grep "$1" "/etc/passwd" ak som ako parameter zadal napr 09050721 tak mi to naslo ale ked som zadal 0905072 tak uz mi to naslo dvoch a to (09050721 a 09050729 je to tym ze on asi porovnava retazce) a vtedy to nemalo najst nikoho pretoze uzivatel 0905072 neexistuje. Neviete nejak poradit ako to napisat aby to slo? nemusi to byt grepom moze to byt hocijak len nech to ide..diki
Unix Bash uzivatelia
Mozno aj takto:
Pouzitie a vysledok skriptu bude vyzerat asi takto:
Ale bez kraska by to neslo, som tu mal daco spravene a vyzeralo to otrasne, toto je uplne nieco ine s pouzitim id.
Kód: Vybrať všetko
#! /bin/bash
# set -x # odkomentuj, ak chces vidiet ako pracuje skript
for i in "$@" # pre kazdy jeden argument prikazu reprezentujuci uzivatela
do
id "$i" &>/dev/null # standardny vystup a chyby nie su vypisane
if [ "$?" -eq 1 ] # ak skonci prikaz "id uzivatel" chybou z dovodu, ze uzivatel neexistuje a teda bude exit status 1
then
echo " $i --> neexistuje " # potom sa vypise, ze neexistuje
else
echo " $i --> existuje " # inak existuje, pretoze exit status bude pre prikaz "id uzivatel " 0
fi
done
exit 0Kód: Vybrať všetko
pato@debian-xps:~$ sh check_user.sh miro jano pato lucka peto mail daemon root xyz
miro --> neexistuje
jano --> neexistuje
pato --> existuje
lucka --> neexistuje
peto --> neexistuje
mail --> existuje
daemon --> existuje
root --> existuje
xyz --> neexistuje daydalos1 napísal:diki je to id -P
Kód: Vybrať všetko
pato@debian-xps:~$ id -P pato
id: invalid option -- 'P'
Try `id --help' for more information.