• Nebyly nalezeny žádné výsledky

2009JanPleva Absolvova´nı´individua´lnı´odborne´praxeIndividualProfessionalPractiseintheCompany VSˇB–Technicka´univerzitaOstravaFakultaelektrotechnikyainformatikyKatedrainformatiky

N/A
N/A
Protected

Academic year: 2022

Podíl "2009JanPleva Absolvova´nı´individua´lnı´odborne´praxeIndividualProfessionalPractiseintheCompany VSˇB–Technicka´univerzitaOstravaFakultaelektrotechnikyainformatikyKatedrainformatiky"

Copied!
30
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

Fakulta elektrotechniky a informatiky Katedra informatiky

Absolvova´nı´ individua´lnı´ odborne´

praxe

Individual Professional Practise in the Company

2009 Jan Pleva

(2)

V Ostraveˇ 30. cˇervna 2009 . . . .

(3)

Na´vrh a realizace komunikace klienta se serverem. Komunikace musı´ procha´zet prˇes kli- entsky´ firewall bez jeho dalsˇı´ho nastavova´nı´, data musı´ by´t sˇifrova´na, nava´zana´ komuni- kace musı´ by´t stabilnı´, automaticke´ prˇesmeˇrova´nı´ komunikace prˇi vy´padku prima´rnı´ho prˇipojovacı´ho kana´lu, automaticke´ navazova´nı´ spojenı´. Na´vrh sekunda´rnı´ho zpu˚sobu prˇipojenı´ prˇi vy´padku hlavnı´ho druhu prˇipojenı´. U´ prava zvolene´ linuxove´ distribuce (Slax) pro potrˇeby sondy. Ukla´da´nı´ konfigurace na externı´ me´dium (USB flash disk), omezenı´ cˇaste´ho za´pisu na flash disk, automaticke´ nacˇı´ta´nı´ konfigurace po startu, zmeˇna konfigurace za´meˇnou flash media s jiny´m konfiguracˇnı´m souborem.

Klı´cˇova´ slova: virtua´lnı´ priva´tnı´ sı´t’, klient-server komunikace, monitoring, Slax, ukla´- da´nı´ konfigurace

Abstract

The design and implementation of communication between client and server. The com- munication must run through the client firewall without its further setting, the data must be ciphered, the established communication must be stable, the automatic rerouting of communication during primary connection channel dropout, the automatic connection establishment. The design of secondary connection during main connection dropout.

Modification of chosen linux distribution (Slax) for probe needs. Saving the configura- tion on an external medium (USB flash disk), the limitation of frequent writing to flash disk, the automatic configuration loading after startup, the change of configuration by replacing the flash medium with another configuration file.

Keywords: virtual private network ,client-server communication, monitoring, Slax, sav- ing of configuration

(4)

3G – Third generation

CDMA – Code division multiple access

EDGE – Enhanced data rates for GSM evolution

GPRS – General packet radio service

GRE – Generic Routing Encapsulation

GSM – Global system for mobile

HDD – Hard disk drive

HTTP – Hypertext Transfer Protocol

HTTPS – Hypertext Transfer Protocol Secure

HW – Hardware

IDE – Integrated Device Electrocnics

IP – Internet Protocol

IPSec – IP security

ISDN – Integrated Services Digital Network

IT – Information technology

kbps – kilobit per second

L2TP – Layer 2 Tunneling Protocol

LAC – L2TP Access Concentrator

LNS – L2TP Network Server

PPP – Point-to-Point Protocol

PPTP – Point-to-Point Tunneling Protocol

RAM – Random-access Memory

SIM – Subscriber identity module

SMS – Short message service

SSL – Secure sockets layer

SSTP – Secure Socket Tunneling Protocol

SW – Software

TCP – Transmission Control Protocol

TLS – Transport Layer Security

TTL – Transistor-transistor-logic

USB – Universal Serial Bus

VPN – Virtual Private Network

(5)

Obsah

1 U´ vod 4

2 Zada´nı´ 5

3 Komunikace sonda-server 6

3.1 Monitorovacı´ sonda . . . 6 3.2 Volba prima´rnı´ho druhu prˇipojenı´ . . . 6 3.3 Volba sekunda´rnı´ho druhu prˇipojenı´ . . . 9

4 Ukla´da´nı´ konfigurace 11

4.1 Teoreticky´ rozbor . . . 11 4.2 Provedene´ zmeˇny a u´pravy ve filesyste´mu . . . 11

5 Za´veˇr 14

6 Literatura 15

Prˇı´lohy 17

A Zdrojovy´ ko´d rc.saveconf 18

(6)

Seznam obra´zku ˚

1 Spojenı´ Client - Nagios server . . . 8 2 Datova´ na´rocˇnost komunikace client-Nagios server . . . 9

(7)

Seznam vy´pisu ˚ zdrojove´ho ko ´ du

1 rc.saveconf - rˇı´dı´cı´ promeˇnne´ . . . 12

2 rc.S - spusˇteˇnı´ skriptu rc.saveconf . . . 13

3 rc.S - mapova´nı´ USB filesyste´mu . . . 13

4 Zdrojovy´ ko´d rc.saveconf . . . 18

(8)

1 U ´ vod

Odbornou praxi jsem vykona´val u firmy Storyflex a.s., Soukenicka´ 3181/19, 702 00 Os- trava, ktera´ se zaby´va´ prˇedevsˇı´m doda´vkou a implementacı´ softwarove´ho a hardwaro- ve´ho vybavenı´ urcˇene´ho pro za´lohova´nı´ dat a syste´mu˚, pro ukla´da´nı´ a migraci dat v prostrˇedı´ sˇiroke´ho spektra platforem a poskytova´nı´ s tı´m souvisejı´cı´ch servisnı´ch sluzˇeb.

Jedna ze za´kladnı´ch sluzˇeb v tomto odveˇtvı´ je poskytova´nı´ monitoringu zarˇı´zenı´, ktera´

by umozˇnˇovala predikci budoucı´ch proble´mu se zarˇı´zenı´m, nebo by na prˇı´padnou po- ruchu bylo upozorneˇno v co nejkratsˇı´m mozˇne´m termı´nu. Za´rovenˇ se na monitorova´nı´

dajı´ na´sledneˇ postavit dalsˇı´ doplnˇkove´ sluzˇby, jako naprˇı´klad okamzˇita´ vy´meˇna nebo oprava zrˇı´zenı´, garance dostupnosti sluzˇby atd. Zvolene´ rˇesˇenı´ monitorovacı´ho syste´mu bylo postaveno na Nagios monitoring serveru. My´m u´kolem beˇhem praxe byl na´vrh a optimalizace monitorovacı´ch sond1a nalezenı´ vhodne´ho zabezpecˇenı´ komunikace mezi sondou a monitorovacı´m centrem.

1jednotka zajisˇt’ujı´cı´ spojenı´ do za´kaznicke´ sı´teˇ

(9)

2 Zada´nı´

Pro monitorovacı´ syste´m storage syste´mu˚ navrhneˇte a optimalizujte:

1. SW platformu monitorovacı´ch sond ve vztahu k stabiliteˇ syste´mu, mozˇnostem ak- tualizacı´, vzda´lene´ spra´vy, minimalizace na HW na´roky

2. Proveˇrˇte a popisˇte ru˚zne´ mozˇnosti vhodne´ho zabezpecˇenı´ komunikace mezi sondou se zameˇrˇenı´m na propustnost informacı´ z a do za´kaznicke´ sı´teˇ, resp. monitorovacı´ho centra

(10)

3 Komunikace sonda-server

Cı´lem te´to cˇa´sti je zvolenı´ vhodne´ho rˇesˇenı´ pro komunikaci monitorovacı´ sondy se serve- rem, na´vrh za´lozˇnı´ho spojenı´, ktere´ bude vyuzˇito v prˇı´padeˇ vy´padku spojenı´ prima´rnı´ho.

Provedu vy´beˇr nejvhodneˇjsˇı´ho protokolu s ohledem na komunikaci, ktera´ by meˇla pro- cha´zet prˇes klientsky´ firewall bez jeho dalsˇı´ho nastavova´nı´, data musı´ by´t sˇifrova´na, nava´zana´ komunikace by meˇla by´t co nejvı´ce stabilnı´.

3.1 Monitorovacı´ sonda

Monitorovacı´ sonda je v tomto prˇı´padeˇ pocˇı´tacˇ klasicke´ konstrukce s omezenı´m vy´skytu mechanicky´ch cˇa´stı´ (ventila´tory chlazenı´, harddisk) a s maxima´lnı´ velikostı´ jednoho slotu racku. Sonda se skla´da´ ze za´kladnı´ desky, procesoru, RAM pameˇtı´, IDE flash modulu a prˇı´- padneˇ dalsˇı´ch zarˇı´zenı´. Jako operacˇnı´ syste´m byl zvolen Slax - UNIXovy´ operacˇnı´ syste´m, ktery´ vycha´zı´ z linuxove´ distribuce Slackware. Jeho volba byla ucˇineˇna s prˇihle´dnutı´m na potrˇeby jednoduche´ho prˇida´va´nı´ a odebı´ra´nı´ aplikacˇnı´ch programu˚, jednoduchost, malou velikost distribuce, snadnou instalaci, omezenı´ za´pisu dat na pameˇt’ove´ me´dium, spolehlivost a snadnou modifikovatelnost.

Sonda jako takova´ slouzˇı´ k vytvorˇenı´ sı´t’ove´ho tunelu mezi Nagios serverem a klient- skou sı´tı´, dı´ky cˇemuzˇ je mozˇne´ potrˇebne´ sluzˇby a hardware monitorovat.

3.2 Volba prima´rnı´ho druhu prˇipojenı´

Nasˇı´ snahou je vytvorˇit prˇipojenı´ neza´visle´ na klientske´m sı´t’ove´m rˇesˇenı´ (firewall, proxy) a za´rovenˇ je vhodne´, aby data byla chra´neˇna prˇed zneuzˇitı´m, zmeˇnou nebo odposlechem (putujı´ prˇes verˇejnou sı´t’- internet).

3.2.1 Teoreticky´ rozbor

Jako nejlepsˇı´ zpu˚sob se jevı´ pouzˇitı´ zabezpecˇene´ho spojenı´ VPN tunelem, ktery´ propojı´

Nagios server a monitorovana´ zarˇı´zenı´ v klientske´ sı´ti. Za´rovenˇ je vsˇak potrˇeba bra´t v u´vahu fakt, zˇe neˇktere´ protokoly neumı´ vytva´rˇet obousmeˇrne´ tunely (naprˇ. IPsec), cozˇ se mu˚zˇe sta´t proble´mem, pokud ma´ klient restriktivneˇ nastaven firewall a neocˇeka´vanou komunikaci firewall odmı´ta´ a zahazuje.

Za´kladnı´ tunelovacı´ protokoly:

• GRE - Generic Routing Encapsulation

spı´sˇe jen na´vrh samotne´ho syste´mu zapouzdrˇenı´ paketu˚

prˇı´lisˇ jednoduchy´

NENI´ sˇifrova´n – tudı´zˇ jej nenı´ mozˇne´ pouzˇı´t

• IPoverIP

obdoba GRE – vytvorˇenı´ nove´ho packetu do ktere´ho je vlozˇen prˇedchozı´

(11)

• PPTP - Point-to-Point Tunneling Protocol vyuzˇı´va´ point to point protokol vyuzˇı´va´ slabsˇı´ho sˇifrovanı´

teˇzˇce pronika´ firewallem (dveˇ sı´t’ove´ relace)

• L2TP - Layer 2 Tunneling Protocol LAC (koncentra´tor)

LNS (server)

spojenı´ inicializova´no LAC

sˇifrovanı´ pomocı´ IPSec = jednosmeˇrne´

od firmy Cisco

nutnost nastavenı´ vy´jimek u firewallu klienta

• SSTP – Secure Socket Tunneling Protocol

obousmeˇrny´ PPP (peer-to-peer protokol) zapouzdrˇeny´ do HTTPS sˇifrova´no pomocı´ SSL (TCP 443)

protokol pro vzda´lenou spra´vu vyvinuty pro Microsoft Windows Longhorn a Microsoft Windows 2008

Nestandardizovany´ a uzavrˇeny´ - pouze Windows platforma

• OpenVPN (OpenVPN 2.1 rc15)

umozˇnˇuje tunelovanı´ prˇes port 443 umozˇnˇuje pru˚chod prˇes http proxy dostupne´ pro linuxovou platformu sˇifrova´nı´ pomocı´ OpenSSL

obousmeˇrny´ tunel 3.2.2 Za´veˇr

Rozhodl jsem se vyuzˇı´t protokolu OpenVPN, ktery´ splnˇuje vesˇkere´ zadane´ pozˇadavky.

Tunelova´nı´ prˇes port 443 zajistı´ takrˇka bezproble´move´ procha´zenı´ firewally, protozˇe tento port je beˇzˇneˇ uzˇı´va´n pro transport zabezpecˇene´ho HTTP protokolu a proto by´va´ velmi cˇasto povolen. Vytva´rˇı´ obousmeˇrny´ komunikacˇnı´ tunel a nepotrˇebuje tudı´zˇ mı´t otevrˇen dalsˇı´ port.

(12)

Obra´zek1:Spojenı´Client-Nagiosserver

(13)

3.3 Volba sekunda´rnı´ho druhu prˇipojenı´

3.3.1 Teoreticky´ rozbor

Na´vrhem sekunda´rnı´ho prˇipojenı´ se snazˇı´me vyhnout stavu, kdy by prˇi at’uzˇ neocˇeka´va- ne´m nebo ocˇeka´vane´m vy´padku internetove´ konektivity za´kaznı´ka dosˇlo k situaci, kdy nebude mozˇno zjistit aktua´lnı´ stav zarˇı´zenı´, nebo dokonce dojde k nerozpoznane´mu vy´- padku monitorovane´ sluzˇby nebo zarˇı´zenı´. Vzhledem k faktu zˇe mezi klientem (sondou) a serverem probı´ha´ komunikace maxima´lneˇ na u´rovni textovy´ch rˇeteˇzcu˚ ko´dovany´ch do packetu˚, nenı´ datova´ na´rocˇnost nikterak vysoka´ (obra´zek 2). Mu˚zˇeme tedy bra´t v u´vahu i prˇipojenı´ pomala´, ktera´ nejsou pro beˇzˇnou sı´t’ovou komunikaci (web, webove´ aplikace) vhodna´, jmenoviteˇ mobilnı´ sı´t’(GSM) a analogovy´ modem.

Obra´zek 2: Datova´ na´rocˇnost komunikace client-Nagios server

• GSM prˇipojenı´ (GPRS, EDGE, 3G...)

+ pru˚meˇrneˇ 40kbps (srovnatelne´ s dial-up) + dostupne´

+ mu˚zˇe by´t soucˇa´stı´ sondy (s vy´stupem na externı´ ante´nu v prˇı´padeˇ potrˇeby) + zmeˇna druhu prˇipojenı´ podle dostupnosti (GPRS/GSM/EDGE)

+ nevyzˇaduje zˇa´dny´ za´sah do klientske´ komunikacˇnı´ sı´teˇ – neza´visle´

+ snadna´ zmeˇna poskytovatele pomocı´ SIM (vy´beˇr nejlepsˇı´ho pokrytı´/sluzˇeb) + podpora vı´ce rezˇimu˚ prˇipojenı´ v jednom zarˇı´zenı´

- pomale´ (dial-up, GPRS, prˇesto nejspı´sˇ dostatecˇne´) - prˇi zatı´zˇenı´ mozˇne´ proble´my s prˇipojenı´m/rychlostı´

- velke´ odezvy

• Dial-up - klasicke´ vyta´cˇene´ prˇipojenı´ prˇes telefonnı´ linku + pru˚meˇrneˇ 50 kbps

+ dostupne´

+ levne´ (z hlediska na´kladu˚ na zarˇı´zenı´)

(14)

+ nena´rocˇne´ technicky

- mozˇnost za´vislosti na internetove´m prˇipojenı´ jako takove´m (naprˇ. prˇi ISDN) - dodatecˇna´ kabela´zˇ vedoucı´ k sondeˇ

- v prˇı´padeˇ velke´ho zatı´zˇenı´ telefonnı´ sı´teˇ se nemusı´ prˇipojenı´ podarˇit (vy´padky)

• ostatnı´ druhy sekunda´rnı´ho prˇipojenı´ (wi-fi, ADSL ...) + rychlost

+ minima´lnı´ odezva

- jsou limitovane´ pokrytı´m (wi-fi)

- velikost a instalace ante´ny (wi-fi, satelit) - dostupnost (ADSL, wi-fi)

- je nesmysl platit dveˇ rovnocenne´ prˇipojenı´ k internetu, pokazˇde´ jine´ a jinde Shrnutı´m a porovna´nı´m prˇipojenı´ jako nejlepsˇı´ vycha´zı´ zpu˚sob prˇipojenı´ pomocı´ tech- nologie GSM, proto budeme nada´le uvazˇovat tuto mozˇnost. Mozˇnosti zpu˚sobu prˇipojenı´:

• GSM/GPRS modem

nejcˇasteˇji se´riove´ rozhranı´ (USB, COM)

zbytecˇne´ (zapouzdrˇene´ v pouzdrˇe, rˇesˇenı´ prˇevodnı´ku˚ USB/COM = cena navı´c)

• GSM/GPRS modul

rozhranı´ TTL/RS232 serial

pouze deska modulu bez dalsˇı´ch zbytecˇnostı´

integrovatelne´ do sondy

Zarˇı´zenı´ GSM modemu cˇasto obsahuje sluzˇby navı´c (SMS, E-mail, rˇı´zenı´ prˇes SMS atd), ktere´ je mozˇne´ take´ vyuzˇı´t. Detekce samotne´ho vy´padku prˇipojenı´ a jeho nava´zanı´

pomocı´ GPS modulu je v rezˇii operacˇnı´ho syste´mu. Vzhledem k tomu, zˇe se jedna´ o standardnı´ modem pouzˇı´vajı´cı´ AT prˇı´kazy, jeho vyuzˇitı´, nastavenı´ a zprovozneˇnı´ pod linuxovy´mi OS by nemeˇl prˇedstavovat zˇa´dny´ proble´m. GSM modul bude umı´steˇn uvnitrˇ sondy a prˇipojen prˇes se´riove´ rozhranı´. Napa´jecı´ napeˇtı´ by´va´ nejcˇasteˇji mezi 3 – 25V a ma´

pomeˇrneˇ velkou toleranci (cˇasto i kolem 10V), takzˇe ani s napa´jenı´m nenı´ proble´m.

3.3.2 Za´veˇr

Pro sekunda´rnı´ prˇipojenı´ v prˇı´padeˇ vy´padku bych doporucˇoval vyuzˇitı´ technologie GSM.

Podle dostupnosti jednotlivy´ch sluzˇeb sı´teˇ je pak mozˇne´ pouzˇı´t GPRS (dnes jizˇ dostupne´

kdekoliv, kde je mobilnı´ sı´t’), prˇı´padneˇ jine´, rychlejsˇı´ technologie (EDGE, CDMA). V prˇı´padeˇ slabe´ho signa´lu, je mozˇne´ pozˇı´t externı´ ante´nu pro lepsˇı´ prˇı´jem. Jako urcˇity´

bonus pak mu˚zˇe prˇijı´t vhod konfigurace a rˇı´zenı´ GSM modemu pomocı´ SMS.

(15)

4 Ukla´da´nı´ konfigurace

Nasˇı´m cı´lem je u´prava linuxove´ distribuce tak, abychom mohli snadno ulozˇit konfigu- raci syste´mu (naprˇ. nastavenı´ sı´teˇ), za´rovenˇ vsˇak chceme toto ukla´da´nı´ minimalizovat na nezbytnou mı´ru, abychom prˇedesˇli prˇedcˇasne´mu znicˇenı´ USB pameˇt’ovy´ch mediı´ flash, ktere´ ma´ byt’ velky´, prˇesto omezeny´ pocˇet za´pisu˚. Nacˇı´ta´nı´ konfigurace by meˇlo pro- bı´hat automatizovaneˇ z pameˇt’ove´ho USB flash media, cˇı´mzˇ se zajistı´ mozˇnost za´meˇny konfigurace sondy prostou vy´meˇnou USB flash media a restartem sondy.

4.1 Teoreticky´ rozbor

Nasˇe rˇesˇenı´ bude vycha´zet z mozˇnostı´ pouzˇite´ distribuce. Acˇkoliv umozˇnˇuje tato distri- buce ukla´da´nı´ zmeˇn - tzv. changes - prˇi jejich zapnutı´ by se vy´razneˇ zvy´sˇil pocˇet ukla´da´nı´

na medium, na ktere´ by se zmeˇny ukla´daly. Bohuzˇel se ukla´da´ nejen konfigurace ale i jake´koliv zmeˇny souboru˚, logu˚, vnitrˇnı´ch promeˇnny´ch a dalsˇı´ch polozˇek, jejichzˇ ukla´danı´

pro na´s nenı´ podstatne´. Proto musı´me navrhnout vlastnı´ zpu˚sob ukla´da´nı´ konfigurace.

Distribuce Slax vyuzˇı´va´ pro rozsˇı´rˇenı´ funkcˇnosti LZM moduly, cozˇ je ve sve´ podstateˇ jen adresa´rˇova´ struktura zkomprimova´na LZM kompresı´, ktere´ se prˇipojı´ do korˇene filesyste´mu prˇed samotny´m zavedenı´m syste´mu. Te´to vlastnosti jsem se rozhodl vyuzˇı´t pro ukla´da´nı´ konfigurace. Vytvorˇı´m tedy skript, ktery´ zkopı´ruje soubory, ktere´ chceme do ulozˇene´ konfigurace zahrnout, zkomprimuje je LZM kompresi a tento ”modul” pak na´sledneˇ zkopı´ruje do adresa´rˇe/slax/modules/, kde se nacha´zejı´ moduly nahra´vane´

beˇhem startu. Prˇi startu skript porovna´ modul na USB flash mediu se souborem na vnitrˇnı´m HDD (v nasˇem prˇı´padeˇ IDE flash modulu) a v prˇı´padeˇ rozdı´lnosti jej nahradı´

souborem z USB flash media.

4.2 Provedene´ zmeˇny a u´ pravy ve filesyste´mu

Nejdrˇı´ve je potrˇeba vytvorˇit samotny´ skript, ktery´ bude tuto cˇinnost prova´deˇt. Aby se pak prˇi startu vzˇdy spustil a provedla se prˇı´padna´ aktualizace modulu, je nutne´ prˇidat spusˇteˇnı´ tohoto skriptu do inicializacˇnı´ho skriptu syste´mu - /etc/rc.d/rc.S. Tento skript obsahuje prˇı´kazy, ktere´ se majı´ vykonat po zavedenı´ ja´dra syste´mu.

Z uzˇivatelske´ho hlediska je take´ vhodne´ vytvorˇit v adresa´rˇi /usr/binsymbolicky´

odkaz na tento skript (prˇı´kazln [volby] existujı´cı´_soubor novy_odkaz), aby bylo mozˇne´ jej spustit bez zada´va´nı´ jake´koliv cesty ke skriptu, ale pouze na´zvem skriptu, prˇesneˇji rˇecˇeno jme´na souboru odkazujı´cı´ho na tento skript.

• Editace

/etc/rc.d/rc.S - startovacı´ skript

• Nove´ soubroy

/etc/rc.d/rc.saveconf - skript zajisˇt’ujı´cı´ nacˇı´ta´nı´ a ukla´da´nı´ zmeˇn /usr/bin/save-conf - symbolicky´ odkaz na skript rc.saveconf

(16)

4.2.1 rc.saveconf

Skript slouzˇı´cı´ k ukla´da´nı´ a nacˇı´ta´nı´ konfigurace. Jme´no souboru bylo zvoleno v za´vislosti na dodrzˇenı´ analogie pojmenova´nı´ skriptu˚ v adresa´rˇi/etc/rc.d.

Ulozˇenı´ konfigurace pod vy´chozı´m na´zvem na externı´ pameˇt’ove´ me´dium se provede zavola´nı´m skriptu bez parametru, ulozˇenı´ do pracovnı´ho adresa´rˇe se provede s para- metrem-saveza ktery´m volitelneˇ na´sleduje na´zev souboru pod ktery´m se konfigurace ulozˇı´.

save-config

save-config -save [jme´no_souboru]

Postup ukla´da´nı´ je pak na´sledujı´cı´: Pokud je volba pro ukla´da´nı´ prˇedchozı´ch zmeˇn zapnuta a za´rovenˇ existuje modul s prˇedchozı´mi zmeˇnami, jsou tyto pu˚vodnı´ zmeˇny nakopı´rova´ny do docˇasne´ho adresa´rˇe. Pote´ na´sleduje nakopı´rova´nı´ adresa´rˇe changes obsahujı´cı´ aktua´lnı´ zmeˇny provedene´ od poslednı´ho startu. Kopı´rova´nı´ konkretnı´ch slo- zˇek a souboru˚ je omezeno a upraveno nastavenı´m promeˇnny´ch na zacˇa´tku skriptu (vy´pis ko´du 1). Tı´mto zı´ska´me kompletnı´ provedene´ zmeˇny azˇ do okamzˇiku spusˇteˇnı´ ukla´da- cı´ho procesu. Po zkopı´rova´nı´ jsou odstraneˇny docˇasne´ datove´ soubory, ktere´ nemajı´ s hlediska konfigurace zˇa´dny´ vy´znam. Pote´ jsou konfiguracˇnı´ soubory zabaleny do LZM archivu.

Nacˇı´ta´nı´ konfigurace je zajisˇteˇno parametrem -loadza ktery´m volitelneˇ na´sleduje na´zev souboru.

save-conf -load [jme´no_souboru]

Skript porovna´ soubor na externı´m pameˇt’ove´m mediu se souborem na vnitrˇnı´m u´lozˇisˇti a v prˇı´padeˇ rozdı´lnosti je soubor nahrazen souborem z externı´ho pameˇt’ove´ho me´dia.

Nakonec jsou tady parametry -h nebo -help pro na´poveˇdu a parametr -debug slouzˇı´cı´ k testovacı´m u´cˇelu˚m.

Nastavenı´ chova´nı´ skriptu je pomocı´ na´sledujı´cı´ch promeˇnny´ch:

############ OBECNE NASTAVENI ####################

# USB MOUNTPOINTna jakou cestu se ma USB disk namapovat (/mnt/sda1)

# HD MOUNTPOINTna jakou cestu se ma HDD namapovat (/mnt/hda1)

# USB DEVPOINT jak je systemem USB rozpoznano (/ dev/sda)

# HD DEVPOINT jak je systemem HDD rozpoznan (/ dev/hda1)

# MODULES DIR Cesta k ’modules’ adresari

# DEFAULT FILE NAMEDefaultni nazev souboru konfigurace

# SAVECONF LOGlogy o nahrati / aktualizaci modulu (pokud neni potreba pouzit /dev/null)

# SAVECONF ERRlogy o neexistujicich cestach a chybach branicich v dokonceni skriptu

# (pokud neni potreba pouzit /dev/null )

############### SAVE−CONFIG ########################

# TMPDIR adresar kam se zkopiruji kopie vsech zmenenych souboru

# adresar musi existovat, podadresar se vytvori sam

(17)

# CHANGES cesta k adresari se zmenamichanges

# DIRS TO SAVE jmenny´ seznam adresaru, ktere jsou v CHANGES a maji se zalohovat

# odeleno mezerou napr. DIRS TO SAVE=”etc opt root var”

# INC CHANGE={1|0} −ulozene zmeny se tykaji POUZE aktualne pozmenenych souboru!!!!

Pokud je potreba

# zachovat i predchozi zmeny, je treba zkopirovat image puvodniho modulu ulozeneho

# v pameti. !!! POZOR!! Kopiruje se vzdy jen image z nazvem DEFAULT FILE NAME !!!

Vy´pis 1: rc.saveconf - rˇı´dı´cı´ promeˇnne´

4.2.2 rc.S

Postupny´m testova´nı´m jsem jako nejlepsˇı´ pro spusˇteˇnı´ skripturc.saveconfzvolil po- zici hned za cˇa´stı´, ktera´ ma´ na starosti otestova´nı´ namapova´nı´ korˇenove´ho filesyste´mu.

Vlozˇı´me za tuto cˇa´st tedy na´sledujı´cı´ ko´d:

# Save−config load

if [ −x /etc/ rc .d/rc .saveconf ]; then sh / etc / rc .d/rc .saveconf−load else

echo”∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗”

echo”saveconf: Skript nenalezen”

echo”∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗”

date>/root / err . log

echo”Error: Skript / etc / rc .d/rc .saveconf nenalezen!”>>/root/err.log fi

Vy´pis 2: rc.S - spusˇteˇnı´ skriptu rc.saveconf

za´rovenˇ jsem beˇhem testova´nı´ musel zakomentovat automaticke´ mapova´nı´ USB file- syste´mu, protozˇe docha´zelo ke sˇpatne´mu namapova´nı´. Zakomentoval jsem tedy na´sle- dujı´cı´ cˇa´st skriptu:

# Mount usbfs:

if grep−wq usbfs /proc/filesystems;then if ! grep−wq usbfs /proc/mounts ;then

/sbin/mount−v usbfs /proc/bus/usb−t usbfs fi

fi

Vy´pis 3: rc.S - mapova´nı´ USB filesyste´mu

(18)

5 Za´veˇr

Doufa´m, zˇe ma´ pra´ce byla pro firmu Storyflex a.s. prˇı´nosem a mnou navrhnuta´ a na´sledneˇ zrealizovana´ rˇesˇenı´ zadany´ch proble´mu˚ budou spolehliveˇ plnit svoji funkci.

Vzhledem k neusta´le´mu obrovske´mu vy´voji v oblasti IT mohou mı´t mnou navrzˇena´

rˇesˇenı´ beˇhem kra´tke´ho obdobı´ na´stupce, prˇı´padneˇ zcela nove´ technologie, ktere´ le´pe vyhovujı´ zadanı´, stejneˇ jako mu˚zˇe dojı´t k zastara´nı´ neˇktere´ho z pouzˇity´ch rˇesˇenı´, jako naprˇı´klad vy´razne´ zkra´cenı´ doby, potrˇebne´ pro prolomenı´ mnou zvolene´ sˇifry, cˇı´mzˇ se rˇesˇenı´ sta´va´ nesplnˇujı´cı´m zada´nı´ a tı´m take´ nevhodny´m. Proto sledova´nı´ dalsˇı´ho vy´voje v tomto odveˇtvı´ a jeho na´sledna´ integrace, je vhodna´, nebo dokonce nutna´. Zvla´sˇtnı´m prˇı´padem je pak zhotovene´ rˇesˇenı´ ukla´da´nı´ konfigurace, ktere´ by zajiste´ bylo mozˇne´

rozsˇı´rˇit naprˇı´klad o vhodne´ mapova´nı´ USB diskovy´ch zarˇı´zenı´ a skript je mozˇne´ napsat vı´ce obecneˇ s pomoci funkcı´.

Jan Pleva

(19)

6 Literatura

[1] PRU˚ CHA, Ondrˇej,Vsˇe kolem VPN : Vsˇe co jste chteˇli veˇdeˇt o VPN, ale ba´li jste se zeptat [online]

c2005 [cit. 2008-10-31] Dostupny´ z WWW:

<http://home.zcu.cz/˜ondrous>. [2] SPENNEBERG, Ralf,IPsec HOWTO[online]

Revision 0.9.96. c2003 , Revision 0.9.96 - Feb 26 2007 [cit. 2008-10-31]

Dostupny´ z WWW:

<http://www.ipsec-howto.org/t1.html>. [3] HABRMAN, Robert,Sı´t’ove´ protokoly[online]

2007 [cit. 2008-10-31]. Dostupny´ z WWW:

<http://www.owebu.cz/serialy.php?serial=63>. [4] LUHOVY´, Karel,Virtua´lnı´ priva´tnı´ sı´teˇ VPN[online]

2003 [cit. 2008-10-31] Dostupny´ z WWW:

<http://www.svetsiti.cz/

view_list.asp?rubrika=Tutorialy&temaID=219>. [5] KA´ RA, Michal,Seria´l Tuneluji, tunelujesˇ, tunelujeme[online]

2003 [cit. 2008-10-31]. Dostupny´ z WWW:

<http://www.root.cz/serialy/tuneluji-tunelujes-tunelujeme/>. [6] Cisco Systems,Layer 2 Tunnel Protocol[online]

c1992-2006 [cit. 2008-10-31]. Dostupny´ z WWW:

<http://www.cisco.com/

warp/public/cc/pd/iosw/tech/l2pro_tc.htm>. [7] SˇEVECˇEK, Ondrˇej,L2TP, IPSec a PPTP[online]

[2003] [cit. 2008-10-31]. Dostupny´ z WWW:

<http://www.sevecek.com/index.php?id=15>. [8] SˇINDELKA, Vladimı´r,Na rychlosti prˇipojenı´ (ne)za´lezˇı´[online]

2005 [cit. 2008-10-24]. Dostupny´ z WWW:

<http://www.finance.cz/

zpravy/finance/54835-na-rychlosti-pripojeni-ne-zalezi/>. [9] BRBLA,Prˇipojenı´ k internetu[online]

c2003-2009 [cit. 2008-10-24]. Dostupny´ z WWW:

<http://www.abowe.brbla.net/1-kapitola-uzivatelske-minimum/

pripojeni-k-internetu/gprs.php>. [10] Prˇipojenı´: gsm[online]

c2004-2009 [cit. 2008-10-24]. Dostupny´ z WWW:

<http://rychlost.cz/pripojeni-internetu/gsm/>.

(20)

[11] Microsoft Corporation,VPN Tunneling Protocols[online]

c2009 [cit. 2009-01-23]. Dostupny´ z WWW:

<http://technet.microsoft.com/

en-us/library/cc771298%28WS.10%29.aspx>. [12] JEROEN,SSTP and SSTP is that confusing??[online]

[2007] [cit. 2009-01-24]. Dostupny´ z WWW:

<http://www.buit.org/

2007/11/30/sstp-and-sstp-is-that-confusing/>.

[13] Gibson Research Corporation, Port Authority Database : Port 443 [online]

c2008 [cit. 2009-01-23]. Dostupny´ z WWW:

<http://www.grc.com/port_443.htm>.

[14] OpenVPN Technologies, OpenVPN Technologies : Documentation [online]

c2002-2009 [cit. 2009-01-23]. Dostupny´ z WWW:

<http://openvpn.net/

index.php/open-source/documentation.html>. [15] Slax: your pocket operating system[online]

Dostupny´ z WWW:

<http://Slax.org/>.

[16] The Slackware Linux Project[online]

Dostupny´ z WWW:

<http://slackware.com/>. [17] ,SLAX save & restore changes[online]

c2006-2009 [cit. 2009-02-27]. Dostupny´ z WWW:

<http://www.pendrivelinux.com/slax-savingrestoring-settings/>. [18] KRAUSE, Michal,Linux - pohled do nitra[online]

1999 [cit. 2009-02-27]. Dostupny´ z WWW:

<http://www.root.cz/clanky/linux-pohled-do-nitra/>. [19] KRAUSE, Michal,Linux - druhy´ pohled do nitra[online]

1999 [cit. 2009-02-27]. Dostupny´ z WWW:

<http://www.root.cz/clanky/linux-druhy-pohled-do-nitra/>. [20] BOHDAN, Milar,Seria´l o BASHi[online]

2005 [cit. 2009-04-03]. Dostupny´ z WWW:

<http://www.linuxexpres.cz/praxe/serial-o-bashi>. [21] SHEPPARD, Simon,Bash command : Linux MAN Pages[online]

Last update: June 24th [cit. 2009-04-03]. Dostupny´ z WWW:

<http://www.ss64.com/bash/>.

(21)

[22] DVORˇA´ K, Josef,Regula´rnı´ vy´razy a program grep[online]

[cit. 2009-04-03]. Dostupny´ z WWW:

<http://www.josef-dvorak.webzdarma.cz/36unx/36unx.htm>. [23] VA´ CLAVI´K, Jirˇı´,Linux v prˇı´kazech - porovna´va´nı´ souboru˚[online]

2006 [cit. 2009-04-03]. Dostupny´ z WWW:

<http://www.linuxsoft.cz/article.php?id_article=1136>.

(22)

A Zdrojovy´ ko ´ d rc.saveconf

# !/ bin /bash

#

############ OBECNE NASTAVENI ####################

# USB MOUNTPOINTna jakou cestu se ma USB disk namapovat (/mnt/sda1)

# HD MOUNTPOINTna jakou cestu se ma HDD namapovat (/mnt/hda1)

# USB DEVPOINT jak je systemem USB rozpoznano (/ dev/sda)

# HD DEVPOINT jak je systemem HDD rozpoznan (/ dev/hda1)

# MODULES DIR Cesta k ’modules’ adresari

# DEFAULT FILE NAMEDefaultni nazev souboru konfigurace

# LOGYvhodne pro odaleni chybicek, napriklad pri jinem umisteni USB klicenky atp.

# SAVECONF LOGlogy o nahrati / aktualizaci modulu (pokud neni potreba pouzit /dev/null)

# SAVECONF ERRlogy o neexistujicich cestach a chybach branicich v dokonceni skriptu

# (pokud neni potreba pouzit /dev/null ) USB MOUNTPOINT=/mnt/sda1

HD MOUNTPOINT=/mnt/hda1 USB DEVPOINT=/dev/sda HD DEVPOINT=/dev/hda1

MODULES DIR=$HD MOUNTPOINT/slax/modules DEFAULT FILE NAME=save−config.lzm

SAVECONF LOG=/root/saveconf.log SAVECONF ERR=/root/saveconf−err.log

############### SAVE−CONFIG ########################

# TMPDIR adresar kam se zkopiruji kopie vsech zmenenych souboru

# adresar musi existovat, podadresar se vytvori sam

# CHANGES cesta k adresari se zmenamichanges

# DIRS TO SAVE jmenny´ seznam adresaru, ktere jsou v $CHANGES a maji se zalohovat

# odeleno mezerou napr. DIRS TO SAVE=”etc opt root var”

# INC CHANGE={1|0} −ulozene zmeny se tykaji POUZE aktualne pozmenenych souboru!!!!

Pokud je potreba

# zachovat i predchozi zmeny, je treba zkopirovat image puvodniho modulu ulozeneho

# v pameti. !!! POZOR!! Kopiruje se vzdy jen image z nazvem

$DEFAULT FILE NAME !!!

TMPDIR=/tmp

CHANGES=/mnt/live/memory/changes DIRS TO SAVE=”etc opt root”

INC CHANGE=1 case”$1” in

(23)

−load )

if [ −e $SAVECONF ERR ];then rm $SAVECONF ERR

fi

if [ −e $SAVECONF LOG ];then rm $SAVECONF LOG

fi

date>>$SAVECONF LOG

echo>>$SAVECONF LOG

echo”Mounting USB...”

mkdir $USB MOUNTPOINT

# Unmounting sda∗

for mnt in ” ” 1 2 3; do

echoumount $USB DEVPOINT$mnt done

mount $USB DEVPOINT $USB MOUNTPOINT echo”Mouting HDA”

mount $HD DEVPOINT $HD MOUNTPOINT echo”End mouting...”

if [ ”$2” = ” ” ]; then

MODUL USB=$USB MOUNTPOINT/$DEFAULT FILE NAME# Soubor na USB MODUL HD=$MODULES DIR/$DEFAULT FILE NAME# Cil kam se bude kopirovat else

MODUL USB=$USB MOUNTPOINT/$(basename ”$2” .lzm).lzm# Soubor na USB MODUL HD=$MODULES DIR/$(basename ”$2” .lzm).lzm# Cil kam se bude kopirovat fi

echoMODUL USB=$MODUL USB>>$SAVECONF LOG echoMODUL HD=$MODUL HD>>$SAVECONF LOG

echo>>$SAVECONF LOG

# Existuje adresar modules if [ ! −d $MODULES DIR ];then

echoVytvarim ”$MODULES DIR” ...>>$SAVECONF LOG echo”Vytvarim ”$MODULES DIR” ...”

mkdir $MODULES DIR if [$?−ne 0 ]; then

echoVytvoreni ”$MODULES DIR” selhalo!>>$SAVECONF ERR exit 1

fi

echo>>$SAVECONF LOG

# Vse se zda v poradku else

echoAdresar ”$MODULES DIR” existuje>>$SAVECONF LOG echo”Adresar ”$MODULES DIR” existuje [OK]”

fi

# Kontrola existence souboru na pametovem mediu

(24)

if [ −e $MODUL USB ];then # −e/TRUEexistuje soubor ...

echo”Modul $MODUL USB... [OK]”

# Kontrola adresare s moduly if [ −d $MODULES DIR ];then

echo”$MODULES DIR existuje [OK]”

# Porovna´me, zda se stary a novy´ modul lisi

if [ −e $MODUL HD ] && ! cmp $MODUL HD $MODUL USB>/dev/null;then echo”Prepisuji soubor ”$MODULES DIR” souborem ”$MODUL USB””>>

$SAVECONF LOG

echo”∗∗∗Prepisuji starou konfiguraci ∗∗∗”

cp $MODUL USB $MODULES DIR chmod 755 $MODUL HD

echo””>>$SAVECONF LOG

echo”∗∗∗∗ls −l $MODULES DIR ∗∗∗∗”>>$SAVECONF LOG ls −l $MODULES DIR>>$SAVECONF LOG

date>>$SAVECONF LOG

echo”===== UPDATE =====”>>$SAVECONF LOG

echo””>>$SAVECONF LOG

echo”∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗”

echo” Konfigurace aktualizovana...”

echo”∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗”

shutdown−nrF now# Po uspesnem zavedeni je potreba jeste restartovat

# Pokud neexistuje configuracem tak ji jen nahrajeme elif [ ! −e $MODUL HD ];then

echoKopuruji modul ”$MODUL USB”do”$MODULES DIR”>>$SAVECONF LOG echo”∗∗∗Kopiruji konfiguraci ... ∗∗∗”

cp $MODUL USB $MODULES DIR chmod 755 $MODUL HD

echo””>>$SAVECONF LOG

date>>$SAVECONF LOG

echo”===== COPY =====”>>$SAVECONF LOG

echo””>>$SAVECONF LOG

echo”∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗”

echo” Nova konfigurace nahrana...”

echo”∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗”

shutdown−nrF now# A restartujeme

# Soubory se zdaji byt shodne, pokracujeme dal else

echoSoubor je shodny.>>$SAVECONF LOG echo”∗∗∗Soubory jsou shodne....preskakuji ∗∗∗”

echo ∗∗∗∗ls $MODULES DIR ∗∗∗∗ ls $MODULES DIR>>$SAVECONF LOG

echo””>>$SAVECONF LOG

fi else

echoNeexistuje adresar ”$MODULES DIR”>>$SAVECONF ERR fi

else

echoNeni mozne nacist modul $MODUL USB !

echoNeni mozne nacist modul $MODUL USB !>>$SAVECONF ERR fi

exit 0

;;

(25)

−debug )

if [ −e $SAVECONF ERR ];then rm $SAVECONF ERR fi

#find −name modules−type d>/root/find−modules.log

date>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗ Parametry ∗∗∗∗∗”>>$SAVECONF LOG echop0=$0, p1=$1, p2=$2, p3=$3>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗ lsusb ∗∗∗∗∗”>>$SAVECONF LOG lsusb>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗ fdisk−l ∗∗∗∗∗”>>$SAVECONF LOG fdisk −l>>$SAVECONF LOG

#umount /dev/sda1 /mnt/usbflash

echo>>$SAVECONF LOG

echo>>$SAVECONF LOG

echo”∗∗∗∗∗ ls −l /mnt ∗∗∗∗∗”>>$SAVECONF LOG ls −l /mnt/>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗ ls −l /mnt/live ∗∗∗∗∗”>>$SAVECONF LOG ls −l /mnt/live >>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗∗ ls−l $HD MOUNTPOINT ∗∗∗∗∗∗∗”>>$SAVECONF LOG ls −l $HD MOUNTPOINT>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

∗∗∗∗∗∗∗ls−l usbflash∗∗∗∗∗∗∗>>$SAVECONF LOG ls −l /mnt/usbflash>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo”∗∗∗∗∗ ls −l / ∗∗∗∗∗”>>$SAVECONF LOG

ls −l / >>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

echo” ”>>$SAVECONF LOG

exit 0

;;

−−help )

echo”Pouzˇitı´: ‘ basename $0‘”>&2

echo”Pouzˇitı´: ‘ basename $0‘ [OPTION] SOURCE”>&2

(26)

echo”Uklada konfiguraci nebo ji nacita behem startu”>&2 echo”Argumenty:”>&2

echo”\”\” ulozeni configurace na USB klicenku pod defaultnim nazvem”>&2 echo”−save ulozeni konfigurace (defaultni nazev je $DEFAULT FILE NAME)”>&2 echo”−load nacte $DEFAULT FILE NAME z USB klicenky behem startu a pouzije”

>&2

echo”−debug debugovaci mod pro testovaci ucely (specialni logy a vypisy)”>&2 echo”−h / −help vypise tuto napovedu”>&2

echo””>&2

echo”−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−”>&2 echo””>&2

echo”Usage: ‘basename $0‘”>&2

echo”Usage: ‘basename $0‘ [OPTION] SOURCE”>&2

echo”Saving configuration or load it on startup from USB stick”>&2 echo”Arguments:”>&2

echo”\”\” save configuration on USB stick by default name”>&2

echo”−save save configuration (default name if $DEFAULT FILE NAME)”>&2 echo”−load load $DEFAULT FILE NAME from USB stick on startup and apply

changes”>&2

echo”−debug debug mode for testing purposes (special logs and prints)”>&2 echo”−h / −help print this help”>&2

;;

−h )

echo”Pouzˇitı´: ‘ basename $0‘”>&2

echo”Pouzˇitı´: ‘ basename $0‘ [OPTION] SOURCE”>&2 echo”Uklada konfiguraci nebo ji nacita behem startu”>&2 echo”Argumenty:”>&2

echo”\”\” ulozeni configurace na USB klicenku pod defaultnim nazvem”>&2 echo”−save ulozeni konfigurace (defaultni nazev je $DEFAULT FILE NAME)”>&2 echo”−load nacte $DEFAULT FILE NAME z USB klicenky behem startu a pouzije”

>&2

echo”−debug debugovaci mod pro testovaci ucely (specialni logy a vypisy)”>&2 echo”−h / −help vypise tuto napovedu”>&2

echo””>&2

echo”−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−”>&2 echo””>&2

echo”Usage: ‘basename $0‘”>&2

echo”Usage: ‘basename $0‘ [OPTION] SOURCE”>&2

echo”Saving configuration or load it on startup from USB stick”>&2 echo”Arguments:”>&2

echo”\”\” save configuration on USB stick by default name”>&2

echo”−save save configuration (default name if $DEFAULT FILE NAME)”>&2 echo”−load load $DEFAULT FILE NAME from USB stick on startup and apply

changes”>&2

echo”−debug debug mode for testing purposes (special logs and prints)”>&2 echo”−h / −help print this help”>&2

;;

” ” )

umount $USB DEVPOINT

mount $USB DEVPOINT $USB MOUNTPOINT

#TMPDIR=/home/icewind/TEMP

(27)

#CHANGES=/home/icewind/TEMP/changes if [ −d $TMPDIR ];then

TMPDIR=”$TMPDIR/tmpConfigSave”

else

echo”Chyba v docasne´m adresari. Adresar neexistuje.”

exit 1 fi

echo”Pripravuji docasny adresar ($TMPDIR)”

if [ −d $TMPDIR ];then rm−rf $TMPDIR fi

mkdir−p $TMPDIR #−p/no err if exist

if [ $INC CHANGE = 1 ] && [−e $MODULES DIR/$DEFAULT FILE NAME ];then echo”Kopiruji predchozi zmeny”

for DIR in /mnt/live /memory/images/$DEFAULT FILE NAME/∗;do if [ −d ”$DIR” ]; then

cp−aR $DIR $TMPDIR fi

done else

echo”Nenalezl jsem modul $MODULES DIR/$DEFAULT FILE NAME. Preskakuji kopirovani konfigurace...”

fi

for DIR in $DIRS TO SAVE;do cp−aR $CHANGES/$DIR $TMPDIR done

# cp−aR $CHANGES/{etc,home,opt,root,var}$TMPDIR #−a/archive, R/recursive

echo”Promazavam soubory ’.wh.∗’”

find $TMPDIR−typef−name ”.wh.∗”−delete # .wh.??

echo”Promazavam docasne soubory...(Caches)”

for CACHE in $(find $TMPDIR−typed−name ”Cache”) ;do# find typ/dir, name/”Chache”

if [ −n $CACHE ];then rm−Rf $CACHE/∗

fi done

if [ −d $TMPDIR/var/lib/pacman ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/lib/pacman fi

if [ −d $TMPDIR/var/cache/pacman ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/cache/pacman fi

if [ −d $TMPDIR/var/run ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/run fi

(28)

if [ −d $USB MOUNTPOINT ];then

DESTINATION=”$USB MOUNTPOINT”/”$DEFAULT FILE NAME”

else

echo”Neexistuje $USB MOUNTPOINT. Ukladam do $(pwd)...”

DESTINATION=”$(pwd)”/”$DEFAULT FILE NAME”

fi

if [ −e $DESTINATION ];then

echo”Mazu puvodni soubor, budu prepisovat...”

rm−f $DESTINATION fi

echo”Vytvarim modul $DESTINATION....”

echo””

mksquashfs $TMPDIR $DESTINATION−b 256KB>mksquashfs.log if [ $?−ne 0 ]; then

echo”Error building module”

catmksquashfs.log exit 1

fi echo

echo”Uklizim soubory po vytvorene zaloze”

if [ −d $TMPDIR ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR fi

echoSoubor\”$DESTINATION\” byl uspesne vytvoren.

chmod oga−x $DESTINATION exit 0

;;

−save )

if [ −d $TMPDIR ];then

TMPDIR=”$TMPDIR/tmpConfigSave”

fi

echo”Pripravuji docasny adresar ($TMPDIR)”

if [ −d $TMPDIR ];then rm−rf $TMPDIR fi

mkdir−p $TMPDIR #−p/no err if exist

if [ $INC CHANGE = 1 ] && [−e $MODULES DIR/$DEFAULT FILE NAME ];then echo”Kopiruji predchozi zmeny”

for DIR in /mnt/live /memory/images/$DEFAULT FILE NAME/∗;do if [ −d ”$DIR” ]; then

cp−aR $DIR $TMPDIR fi

done else

(29)

echo”Nenalezl jsem modul $MODULES DIR/$DEFAULT FILE NAME. Preskakuji kopirovani konfigurace...”

fi

for DIR in $DIRS TO SAVE;do cp−aR $CHANGES/$DIR $TMPDIR done

# cp−aR $CHANGES/{etc,home,opt,root,var}$TMPDIR #−a/archive, R/recursive

echo”Promazavam soubory ’.wh.∗’”

find $TMPDIR−typef−name ”.wh.∗”−delete # .wh.??

echo”Promazavam docasne soubory...(Caches)”

for CACHE in $(find $TMPDIR−typed−name ”Cache”) ;do# find typ/dir, name/”Chache”

if [ −n $CACHE ];then rm−Rf $CACHE/∗

fi done

if [ −d $TMPDIR/var/lib/pacman ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/lib/pacman fi

if [ −d $TMPDIR/var/cache/pacman ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/cache/pacman fi

if [ −d $TMPDIR/var/run ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR/var/run fi

if [ ”$2” = ” ” ] && [−d $USB MOUNTPOINT ];then

DESTINATION=”$USB MOUNTPOINT”/”$DEFAULT FILE NAME”

elif [ ”$2” = ” ” ] && [ ! −d $DESTINATION ];then

echo”Neexistuje vy´chozı´ cesta /mnt/sa1. Ukla´da´m do $(pwd)”

DESTINATION=”$(pwd)”/”$DEFAULT FILE NAME”

else

echo”Zmeˇneˇne´ jme´no, ukla´da´m do $(pwd)”

DESTINATION=”$(pwd)/$(basename ”$2” .lzm).lzm”

fi

if [ −e $DESTINATION ];then

echo”Mazu puvodni soubor, budu prepisovat...”

rm−f $DESTINATION fi

echo”Vytvarim modul $DESTINATION....”

echo””

mksquashfs $TMPDIR $DESTINATION−b 256KB>mksquashfs.log if [ $?−ne 0 ]; then

echo”Error building module”

catmksquashfs.log

(30)

exit 1 fi echo

echo”Uklizim soubory po vytvorene zaloze”

if [ −d $TMPDIR ];then #−d/TRUEexistuje adresar ...

rm−rf $TMPDIR fi

echoSoubor\”$DESTINATION\” byl uspesne vytvoren.

chmod oga−x $DESTINATION exit 0

;;

)

echo”Pouzˇitı´: ‘ basename $0‘”>&2

echo”Pouzˇitı´: ‘ basename $0‘ [OPTION] SOURCE”>&2 echo”Uklada konfiguraci nebo ji nacita behem startu”>&2 echo”Argumenty:”>&2

echo”\”\” ulozeni configurace na USB klicenku pod defaultnim nazvem”>&2 echo”−save ulozeni konfigurace (defaultni nazev je $DEFAULT FILE NAME)”>&2 echo”−load nacte $DEFAULT FILE NAME z USB klicenky behem startu a pouzije”

>&2

echo”−debug debugovaci mod pro testovaci ucely (specialni logy a vypisy)”>&2 echo”−h / −help vypise tuto napovedu”>&2

echo””>&2

echo”−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−”>&2 echo””>&2

echo”Usage: ‘basename $0‘”>&2

echo”Usage: ‘basename $0‘ [OPTION] SOURCE”>&2

echo”Saving configuration or load it on startup from USB stick”>&2 echo”Arguments:”>&2

echo”\”\” save configuration on USB stick by default name”>&2

echo”−save save configuration (default name if $DEFAULT FILE NAME)”>&2 echo”−load load $DEFAULT FILE NAME from USB stick on startup and apply

changes”>&2

echo”−debug debug mode for testing purposes (special logs and prints)”>&2 echo”−h / −help print this help”>&2

;;

esac exit 0

Vy´pis 4: Zdrojovy´ ko´d rc.saveconf

Odkazy

Související dokumenty

Cı´lem te´to pra´ce bylo vytvorˇit rozsˇirˇujı´cı´ aplikaci pro Microsoft Office Word 2007, ktera´. by usnadnˇovala pra´ci prˇi

Hlavnı´ cˇa´st pra´ce popisuje nejdu˚lezˇiteˇjsˇı´ rysy frameworku ExtJS a jeho rozsˇı´rˇenı´, ktere´ bylo vytvorˇeno za u´cˇelem zjednodusˇenı´ vy´voje

U poslednı´ho u´kolu, kde jsem zobrazoval 3D model vy´robku v Silverlight, jsem vyuzˇil toho, zˇe jsem meˇl mozˇnost v Silverlighu jizˇ drˇı´ve pracovat. Bohuzˇel

Jako svu˚j prvnı´ u´kol jsem dostal vytvorˇenı´ aplikace, ktera´ slouzˇı´ pro nasazenı´ na termina´ly s dotykovou obrazovkou.. Karta vytvorˇena´ tı´mto

S programova´nı´m v Ruby jsem uzˇ zkusˇenosti meˇl, avsˇak s Ruby on Rails jsem se musel nejdrˇı´ve sezna´mit.. Zezacˇa´tku pro meˇ bylo obtı´zˇne´ pracovat s

S prvnı´mi zmeˇnami jsem se setkal jizˇ prˇi pocˇa´tecˇnı´ch na´vrzı´ch datove´ struktury, kdy bylo nutne´ prove´st neˇkolik desı´tek ru˚zny´ch modifikacı´, cozˇ

V druhe´ cˇa´sti jsem meˇl mozˇnost pracovat na pozici programa´tora, kde bylo my´m u´kolem vyvinout konektor umozˇnˇujı´cı´ synchronizaci dat mezi FlexiBee online a

Spolecˇneˇ se zada´nı´m jsem dostal i prˇı´klad dynamicke´ masky ulozˇenou ve forma´tu XML, protozˇe jsem se beˇhem studia se slozˇiteˇjsˇı´mi XML soubory nesetkal a