Avatar billede nogetfx Nybegynder
20. oktober 2005 - 21:22 Der er 6 kommentarer og
1 løsning

Shellscript mapperettigheder

Hej

Mine script evner er desværre meget begrænset, men jeg mangler et script
der kan udføre en handling ved hver mappe i en mappe. Dvs:
For hver mappe i "/sti/"
    chown "mappenavn" osv...

Så der skulle vel ikke være en venlig og langt bedre scripter...

/Lars
Avatar billede lap Nybegynder
20. oktober 2005 - 21:31 #1
du mangler at fortælle lidt, men:

find /sti/ -type d -exec chown ??? {} \;
Avatar billede nogetfx Nybegynder
20. oktober 2005 - 21:40 #2
Jeg er igang med et projekt, hvor en samba server står som filserver og når vores windows2003 opretter nye brugere (med homedir) kommer der ikke det rigtige rettiheder på mapperne. Så jeg vil 5-6 gange om dagen køre en crontab som kører et script. Det passer med at mappens navn er det samme som brugeren der skal eje mapen. Så ved hver mappe skal scriptet køre:
            chown <mappenavn>.grp <mappenavn>

Så et eller andet loop, med en variabel, der består af mappenavn. Håber dette gjorde det mere overskueligt..

/Lars
Avatar billede lap Nybegynder
20. oktober 2005 - 21:43 #3
prøv:

find /sti -type d -exec chown {}.grp {} \;

alternativt:

cd /sti
ls -d | while read dir
do
  chown ${dir}.grp $dir
done
Avatar billede nogetfx Nybegynder
21. oktober 2005 - 16:16 #4
Den "-d" switch hjælper ikke på det, den gør at outputtet bliver et punktum. Men der er lige meget hvis bare man kan køre en if-sætning der sortere de uønsket mapper fra. Det nedenstående script virker, MEN så snart jeg vil have flere Or-betingelser går der ged i den. Der er 3 systemmapper i der skal springes over "lost+found" , "." og "..". Men hvis jeg smider en or på ved at skrive
"| [ $[dir} != "." ] bliver ingen af systemmapperne sprunget over og den skal sår'n set bare være dir != "lost+found" OR dir != "." OR dir != "..";
Hvordan så skriver det i et bash-script...

/Lars

ls | while read dir
do
  if [ ${dir} != "lost+found" ]; then
          chown ${dir}.grp $dir
  fi
done
Avatar billede lap Nybegynder
21. oktober 2005 - 16:31 #5
Du mener AND og ikke OR, men lad det nu ligge - du bruger -o for or og -a for and:

ls | while read dir
do
  if [ ${dir} != "lost+found" -a ${dir} != "." -a ${dir} != ".." ]; then
          chown ${dir}.grp $dir
  fi
done
Avatar billede nogetfx Nybegynder
22. oktober 2005 - 12:58 #6
Det ser fornuftigt ud, men jeg har desværre glemt resten af scriptet, der hvor jeg arbejder på det. Men det funker temlig sikkert på mandag...

God weekend....
Avatar billede lap Nybegynder
23. oktober 2005 - 16:39 #7
takker for points - og god week-end til dig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester