webForumDet fria alternativet

Eget shellscript med argument

Linux & BSD

4 svar · 630 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Hej,

Jag har ett system som flera kunder använder.
Systemet är uppdelat i två delar, en "kunddel" och en "kärndel". När jag gör uppdateringar så gör jag det på ett ställe och sen kopierar jag alla filer som tillhör kärnan till alla andra och skriver över de befintliga filerna.

Nu tänkte jag snabba upp det här lite och göra ett shellscript som jag kan köra när jag har uppdaterat något.

Hur gör man?
Det som ska göras är:

  • Alla filer i webbrooten ska bort
  • Filer ska kopieras från katalog /home/user1.domain.com/public_html till /home/user2.domain.com/public_html
  • Rättigheter (chmod -R 777) ska sättas på tre mappar.

Jag vill kunna köra t.ex. sh myshell -user2 och då ska /home/user1/public_html kopieras till /home/[argument]/public_html och sen ska rättigheterna sättas på de tre mapparna i user2's public_html.

Är det här möjligt?

Medlem sedan aug. 20022 027 inlägg
#2

Titta på rsync är mitt tips.

Medlem sedan jan. 20059 inlägg
#3

Visst är det möjligt. Antingen gör du det via ett shellskript. Annars hade jag valt och skriva ett litet perlskript för ändamålet.

http://tldp.org/LDP/abs/html/

Medlem sedan juni 20014 421 inlägg
#4

Känns overkill att göra i perl. Här har du en otestad boilerplate du kan gå efter.

#! /bin/bash

FROM=$1
TO=$2

function doit() {
   rm -rf "/path/to/webrooten/*"
   cp -r "/home/$FROM.domain.com/public_html/*" "/home/$TO.domain.com/public_html"
   chmod -R 777 "/en/mapp" "/en/mapp"  "/en/mapp"
}

if [ -z $1 -o -z $2 ]; then
   echo "Exiting, i need both a from and a to desitnation"
else
   doit()
fi
Medlem sedan feb. 20034 441 inlägg
#5

colione skrev:

Känns overkill att göra i perl. Här har du en otestad boilerplate du kan gå efter.

#! /bin/bash

FROM=$1
TO=$2

function doit() {
   rm -rf "/path/to/webrooten/*"
   cp -r "/home/$FROM.domain.com/public_html/*" "/home/$TO.domain.com/public_html"
   chmod -R 777 "/en/mapp" "/en/mapp"  "/en/mapp"
}


if [ -z $1 -o -z $2 ]; then
   echo "Exiting, i need both a from and a to desitnation"
else
   doit()
fi

Det här ser ut som en riktigt bra början, ska kolla mer på det under dagen.

Tack!

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)