[LUGOS-PROG] Bash skripta

Borut Mrak b at aufbix.org
Tue Apr 6 13:35:15 CEST 2004


On Tuesday 06 of April 2004 13:11, Nejc Skoberne wrote:
> Zdravo.
>
> Imam en cuden problem. Hocem narediti skripto, ki bo chownala dolocene
> direktorije, UIDje pa dobim tako, da naredim ls -la na enem drugem
> direktoriju. Torej stvar izgleda takole:
>
> (to naredim v /home)
>
> #!/bin/bash
> for home in *
> do
>   home2="$home/"
>   usid=`ls -la /var/spool/postfix/virtual/domena.si | grep $home2  | cut
> -d' ' -f 5` gid=1000
>   chown -R $usid.$gid /var/spool/postfix/virtual/domena.si/$home
>   cd /mnt/hd/home
> done
>
> Ta stvar ne deluje. usid ostane prazen. Ce _identicen_ ls ukaz izvedem
> "rocno", dobim kar hocem. Kot sem ugotovil je problem v tistem slashu,
> ki je v home2. Ta slash pa mora biti, ker so nekateri userji tudi
> taksni: marko, markom, ... torej mora iz "ls -la" poparsati tocno
> dolocenega uporabnika - zato mora biti na koncu slash, ker grepam
> celotno ime direktorija, kot ga izpise ls:
>
> drwxr-xr-x   26 1079     1000         4096 Apr  6 10:58 marko/
>
> usid enostavno ostane prazen. Ima kdo kaksno idejo? Sem probal tud z
> narekovaji pa dobim cisto isto...

Zgoraj imas napako tam v cut -f 5.
To ti izpise 5. polje namesto 3, ki je UID. (Mogoce se motim, z cut-om
nisem toliko domac)

Ce prav razumem, bi rad vsebino direktorija v
/var/spool/postfix/virtual/domena.si/xxx chownal na iste vrednosti kot je
ima direktorij xxx? Ce ni tako, si itak napisal kar nekaj... :-)


cd /home || exit 1 # ce /home ne obstaja
gid=1000
for home in *
do
  if [ -d /var/spool/postfix/virtual/domena.si/${home} ];
  then
    uid=`ls -ld /var/spool/postfix/virtual/domena.si/${home} | awk '{print $3}`
    chown -R $uid:$gid /var/spool/postfix/virtual/domena.si/${home}
  fi
done

Namesto kompliciranja z grepom in slashem na koncu enostavno reces
ls -ld (a je odvec) in z awkom izpises 3. part...

Ce direktorij /var/spool/.../domena.si/${home} ne obstaja oz. ni
direktorij, se ti del v zanki ne bo izvedel, tako se bos izognil
morebitnim napakam.

lp,
Borut.



More information about the lugos-prog mailing list