Unix Bash uzivatelia

Všetko ohľadom Linuxu...
daydalos1
Medium Expert
Medium Expert
Príspevky: 83
Registrovaný: 08 feb 2007, 19:00

Unix Bash uzivatelia

Príspevok od používateľa daydalos1 »

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
krasko
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 305
Registrovaný: 10 mar 2008, 5:02

Príspevok od používateľa krasko »

volbou vhodnych parametrov prikazu "id" (viz man id) sa da dostiahnut pozadovany vysledok.
pato83
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3916
Registrovaný: 21 nov 2005, 22:12

Príspevok od používateľa pato83 »

Mozno aj takto:

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 0
Pouzitie a vysledok skriptu bude vyzerat asi takto:

Kó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 
Ale bez kraska by to neslo, som tu mal daco spravene a vyzeralo to otrasne, toto je uplne nieco ine s pouzitim id.
daydalos1
Medium Expert
Medium Expert
Príspevky: 83
Registrovaný: 08 feb 2007, 19:00

Príspevok od používateľa daydalos1 »

krasko napísal:volbou vhodnych parametrov prikazu "id" (viz man id) sa da dostiahnut pozadovany vysledok.
diki je to id -P
pato83
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3916
Registrovaný: 21 nov 2005, 22:12

Príspevok od používateľa pato83 »

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.
Co to mas za id :)
krasko
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 305
Registrovaný: 10 mar 2008, 5:02

Príspevok od používateľa krasko »

-P Display the id as a password file entry.

-- freebsd

distribucne sa to moze lisit, ako som napisal, pozri si manualove stranky, pre spravne doladenie...
pato83
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3916
Registrovaný: 21 nov 2005, 22:12

Príspevok od používateľa pato83 »

krasko napísal:-P Display the id as a password file entry.

-- freebsd

distribucne sa to moze lisit, ako som napisal, pozri si manualove stranky, pre spravne doladenie...
To ma nenapadlo, ze mu tam bezi freebsd. :)
Napísať odpoveď