Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2009-07-13 11:14:10

  debianus_userus - Członek DUG

debianus_userus
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2005-08-29
Serwis

skrypt - edycja pliku poprzez zmienna

Panowie, pisze sobie skrypt do robienia raida idzie calkiem niezle jednak zawiesilem sie na jednym zagadnieniu.
Mianowicie jest sobie plik vfstab

Kod:

#device         device          mount           FS      fsck    mount   mount
#to mount       to fsck         point           type    pass    at boot options
#
fd      -       /dev/fd fd      -       no      -
/proc   -       /proc   proc    -       no      -
/dev/dsk/c1t0d0s1       -       -       swap    -       no      -
/dev/dsk/c1t0d0s0       /dev/rdsk/c1t0d0s0      /       ufs     1       no      -
/dev/dsk/c1t0d0s3       /dev/rdsk/c1t0d0s3      /usr    ufs     1       no      -
/dev/dsk/c1t0d0s4       /dev/rdsk/c1t0d0s4      /var    ufs     1       no      -
/dev/dsk/c1t0d0s6       /dev/rdsk/c1t0d0s6      /export/home    ufs     2       yes     -
/dev/dsk/c1t0d0s5       /dev/rdsk/c1t0d0s5      /opt    ufs     2       yes     -
/devices        -       /devices        devfs   -       no      -
ctfs    -       /system/contract        ctfs    -       no      -
objfs   -       /system/object  objfs   -       no      -
swap    -       /tmp    tmpfs   -       yes     -
/dev/dsk/c1t1d0s0       /dev/rdsk/c1t1d0s0      /zones  ufs     2       yes     -

Do raidowania wykorzystywane sa wiersze:

Kod:

/dev/dsk/c1t0d0s1       -       -       swap    -       no      -
/dev/dsk/c1t0d0s0       /dev/rdsk/c1t0d0s0      /       ufs     1       no      -
/dev/dsk/c1t0d0s3       /dev/rdsk/c1t0d0s3      /usr    ufs     1       no      -
/dev/dsk/c1t0d0s4       /dev/rdsk/c1t0d0s4      /var    ufs     1       no      -
/dev/dsk/c1t0d0s6       /dev/rdsk/c1t0d0s6      /export/home    ufs     2       yes     -
/dev/dsk/c1t0d0s5       /dev/rdsk/c1t0d0s5      /opt    ufs     2       yes     -

Rzecz w tym, ze w skrypcie uzywam zmiennej np. $swap ktora w tym konretnym przypadku odpowiada np. c1t0d0s1
Zmiennych uzywam bo dysk moze byc podlaczony do innego kontrolera wiec aby skrypt byl uniwersalny dyski musza byc nazywane po zmiennych.

Jednym z zadan (koncowych) tego skryptu jest zamiana np lini:

Kod:

/dev/dsk/c1t0d0s1       -       -       swap    -       no      -

na

Kod:

/dev/md/dsk/d1       -       -       swap    -       no      -

Jak to ladnie zrobic?


Czyli mam np.

#!/sbin/sh
echo -n " Podaj nazwe dysku swap: "
read swap        # tu wpisuje np. c1t0d0s1

# skrypt cos tam robiacy #
# czesc dotyczaca edycji pliku vfstab

Wiem, ze troche moglem zamotac czy da rade cos z tym zrobic?

Offline

 

#2  2009-07-13 11:48:53

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: skrypt - edycja pliku poprzez zmienna

Kod:

sed -i.bck -e "s#/dev/dsk/$swap#/dev/md/dsk/d1#g" /etc/vfstab

"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#3  2009-07-13 12:12:12

  debianus_userus - Członek DUG

debianus_userus
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2005-08-29
Serwis

Re: skrypt - edycja pliku poprzez zmienna

Dzieki!

Mam dwa pytania co oznacza:

Kod:

i.bck

Nie wiem czy dobrze kombinuje ale aby zapisac trwale zmiane w pliku chyba musze zrobic tak:

Kod:

sed -i.bck -e "s#/dev/dsk/$swap#/dev/md/dsk/d1#g" > /etc/vfstab

??

Offline

 

#4  2009-07-13 12:25:13

  winnetou - złodziej wirków ]:->

winnetou
złodziej wirków ]:->
Skąd: Jasło/Rzeszów kiedyś Gdańs
Zarejestrowany: 2008-03-31
Serwis

Re: skrypt - edycja pliku poprzez zmienna

man sed napisał(-a):

-i[SUFFIX], --in-place[=SUFFIX]
          edit files in place (makes backup if extension supplied)


LRU: #472938
napisz do mnie: ola@mojmail.eu
Hołmpejdż | Galerie | "Twórczość" || Free Image Hosting

Offline

 

#5  2009-07-13 12:52:52

  debianus_userus - Członek DUG

debianus_userus
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2005-08-29
Serwis

Re: skrypt - edycja pliku poprzez zmienna

Dostaje taki komunikat:

Kod:

sed: illegal option -- i

Dodam, ze sed jest Solarisowy a nie Linuksowy.
Przelukalem man'a i nie wiedze w sedzie na solka opcji --i :(
Mozna to jakos inaczej elegancko zrobic?

Offline

 

#6  2009-07-13 13:00:35

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: skrypt - edycja pliku poprzez zmienna

skoro nie ma -i to

Kod:

sed -e "s#/dev/dsk/$swap#/dev/md/dsk/d1#g" /etc/vfstab > /tmp/plik && mv /tmp/plik /etc/vfstab

uprzednio mozesz zrobic tez kopie /etc/vfstab ...

Edit: z aktualnego openslaris ma juz -i ... wiec moze kiedys i w "koszernym" solarisie sie pojawi ...

Ostatnio edytowany przez bercik (2009-07-13 13:03:38)


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)