\documentclass[11pt,twoside,a4paper]{book}  
% definice dokumentu
\usepackage[czech, english]{babel}
\usepackage[T1]{fontenc} 				% pouzije EC fonty 
\usepackage[utf8]{inputenc} 			% utf8 kódování vstupu 
\usepackage[square, numbers]{natbib}	% sazba pouzite literatury
\usepackage{indentfirst} 				% 1. odstavec jako v cestine, pro práci v aj možno zakomentovat
\usepackage{fancyhdr}					% tisk hlaviček a patiček stránek
\usepackage{nomencl} 					% umožňuje snadno definovat zkratky a jejich seznam
\usepackage{verbatim}
\usepackage{pdfpages}

\usepackage[colorinlistoftodos]{todonotes}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% informace o práci
\newcommand\WorkTitle{Automatizace zálohy a obnovení konfigurace síťových zařízení pro laboratorní cvičení}		% název
\newcommand\FirstandFamilyName{František Flachs}		% autor
\newcommand\Supervisor{doc. Ing. Leoš Boháč, Ph.D.}		% vedoucí

\newcommand\TypeOfWork{Bakalářská práce}	% typ práce [Diplomová práce | Bakalářská práce | Bachelor's Project | Master's Thesis ]	

% Nastavte následují podle vašeho oboru a programu (pomoc hledejte na http://www.fel.cvut.cz/cz/education/bk/prehled.html)								
\newcommand\StudProgram{Otevřená informatika, Bakalářský}	% program
\newcommand\StudBranch{Počítačové systémy}           		% obor

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% minimální importy
\usepackage{graphicx}					% pro vkládání obrázků
\usepackage{k336_thesis_macros} 		% specialni makra pro formatovani DP a BP
\usepackage[
pdftitle={\WorkTitle},				% nastaví v informacích o pdf název
pdfauthor={\FirstandFamilyName},	% nastaví v informacích o pdf autora
colorlinks=true,					% před tiskem doporučujeme nastavit na false, aby odkazy a url nebyly šedé při ČB tisku
breaklinks=true,
urlcolor=red,
citecolor=blue,
linkcolor=blue,
unicode=true,
]
{hyperref}								% pro zobrazování "prokliknutelných" linků 

% rozšiřující importy
\usepackage{listings} 			%slouží pro tisk zdrojových kódů se syntax higlighting
\usepackage{algorithmicx} 		%slouží pro zápis algoritmů
\usepackage{algpseudocode} 		%slouží pro výpis pseudokódu

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% příkazy šablony
\makenomenclature								% při překladu zajistí vytvoření pracovního souboru se seznamem zkratek

\let\oldUrl\url									% url adresy budou zobrazeny: <url> 
\renewcommand\url[1]{<\texttt{\oldUrl{#1}}>}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% vaše vlastní příkazy
\newcommand*{\nomExpl}[2]{#2 (#1)\nomenclature{#1}{#2}} 	% usnadňuje zápis zkratek : Slova ke Zkrácení (SZ)
\newcommand*{\nom}[2]{#1\nomenclature{#1}{#2}} 			% usnadňuje zápis zkratek : SZ

\newcommand\tab[1][1cm]{\hspace*{#1}} % tabulator 1 cm


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% vlastní dokument
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
	
	%%%%%%%%%%%%%%%%%%%%%%%%%% 
	% nastavení jazyka, kterým je práce psána
	\selectlanguage{czech}	% podle jazyka práce nastavte na [czech | english]
	\translate				% nastaví české nebo anglické popisy (např. katedra -> department); viz k336_thesis_macros

	%%%%%%%%%%%%%%%%%%%%%%%%%%    
	% Poznamky ke kompletaci prace
	% Nasledujici pasaz uzavrenou v {} ve sve praci samozrejme 
	% zakomentujte nebo odstrante. 
	% Ve vysledne svazane praci bude nahrazena skutecnym 
	% oficialnim zadanim vasi prace.
	{
	\pagenumbering{roman} \cleardoublepage \thispagestyle{empty}
	\includepdf[pages={1}]{figures/ZadaniPDF.pdf}
	\newpage
	}

	%%%%%%%%%%%%%%%%%%%%%%%%%%    
	% Titulni stranka / Title page 
	\coverpagestarts

	%%%%%%%%%%%%%%%%%%%%%%%%%%%    
	% Poděkovani / Acknowledgements 

	\acknowledgements
	\noindent
	


	%%%%%%%%%%%%%%%%%%%%%%%%%%%   
	% Prohlášení / Declaration 

	\declaration{V~Praze dne 25.\,5.\,2018}
	


	%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
	% Abstrakt / Abstract 
 
	\abstractpage

	
	This thesis describes the problems of teaching computer networks in Cisco laboratory especially in high school. There are several pitfalls in the work that secondary school teaches.
	The main points of this thesis are the analysis of the backup and the restoration of the configuration of network devices used by different students in consecutive classes in the same 			laboratory and the design of a system that solves backup and restore configuration for the student so that they can continue next lesson in the work.

	The work provides a backup and restore system configuration for network devices that can be used in Cisco laboratory for both non-portable devices and portable devices.
	
	\vskip 1.0\baselineskip
	\noindent{\textbf{Keywords:}} Cisco academy, teaching computer networks in high school, back up and restore configurations of network devices

	% Prace v cestine musi krome abstraktu v anglictine obsahovat i
	% abstrakt v cestine.
	\vglue20mm

	\noindent{\Huge \textbf{Abstrakt}}
	\vskip 2.75\baselineskip

	\noindent
	
	Tato práce popisuje problematiku výuky počítačových sítí v Cisco laboratoři zejména na střední škole. V práci je uvedeno několik úskalí, se kterými se středoškolská výuka potýká.
	Hlavními body této práce jsou rozbor zálohování a obnovení konfigurace sítových zařízení, která jsou používána studenty při po sobě jdoucí výuce ve stejné laboratoři, návrh systému, který řeší zálohování a obnovení konfigurace pro daného studenta tak, aby mohl ve své práci pokračovat v následující výukové hodině.
	
	Práce nabízí systém zálohování a obnovení konfigurace síťových zařízení, který je možné použít v Cisco laboratoři jak pro nepřenositelná zařízení, tak pro přenositelná.
	
	\vskip 1.0\baselineskip
	\noindent{\textbf{Klíčová slova:}} Cisco akademie, výuka počítačových sítí na střední škole, zálohování a obnovení konfigurace síťových zařízení
	 

	%%%%%%%%%%%%%%%%%%%%%%%%%%    
	% obsahy a seznamy
	\tableofcontents		% Obsah / Table of Contents 

	% pokud v práci nejsou obrázky nebo tabulky - odstraňte jejich seznam
	\listoffigures			% Obsah / Table of Contents 
	\listoftables			% Seznam tabulek / List of Tables
%	\listoftodos

	%%%%%%%%%%%%%%%%%%%%%%%%%% 
	% začátek textu  
	\mainbodystarts

\chapter{Úvod}

Problematika počítačových sítí je jedna z nejrozsáhlejších oblastí informačních technologií. V současné době si mnoho lidí nedovede představit použití počítače či jiného zařízení bez připojení do internetu.
Abychom zajistili kapacitně dostačující rychlost připojení, je nutné v počítačové síti pravidelně vyměňovat síťové prvky za výkonnostně silnější, pravidelně vyhodnocovat využití a zatížení sítě, a v neposlední řadě řešit problémy s přenosem dat.
Správců počítačových sítí je nedostatek a ještě menší množství z nich rozumí problematice na takové úrovni, aby dokázali vytvořit pro uživatele vhodné podmínky práce na koncových zařízeních.

Výuka počítačových sítí začíná již na střední škole v prvním ročníku nebo na gymnáziu v paralelní třídě se střední školou. Na samotném počátku studia jsou studenti seznámeni se základními pojmy problematiky, následně se učí, jak navrhnout topologii podle zadání, a v neposlední řadě, jak konfigurovat síťová zařízení, aby byl provoz v síti optimalizovaný vůči službám, které jsou využívány.
Studium může být doplněno i celou řadou certifikací, které souvisí s probíranými tématy. Správce sítě, vlastnící certifikaci, je následně lépe ohodnocen na trhu práce.

Pro výuku počítačových sítí je nutné seznámit se se síťovým HW (hardware). Existuje řada nástrojů pro simulaci počítačových sítí včetně konfigurace síťových prvků. Avšak je z neznámých důvodů u studentů velký rozdíl mezi konfigurací zařízení fyzického nebo virtuálního v simulaci.
Jednoduché úlohy, které lze stihnout za dobu vyhrazenou pro časový blok, ve výuce nedělají tak velký problém, jako úlohy, které je nutné rozložit do více bloků. Tyto úlohy jsou komplexní a propojují několik tématických celků v jeden.

Ve většině organizací, zabývajících se výukou počítačových sítí, je k dispozici jedna až dvě laboratoře, kde probíhá školení a samotná výuka. V mnoha případech je výuka pouze v jedné laboratoři celý den a na stejných síťových prvcích se střídá několik osob.
Jelikož každá skupina může konfigurovat jinou síťovou úlohu, je nutné před začátkem práce nastavit zařízení do výchozího nastavení, a poté zahájit samotnou práci. Aby studenti mohli používat stejná zařízení i v následujících hodinách a měli k dispozici konfiguraci z hodiny minulé, je vhodné konfiguraci zálohovat a následně ji obnovit.
V samotné síti může být zapojeno více zařízení, což činí proces zálohování síťových prvků komplikovanější.

Z výše popsaných důvodů se moje bakalářská práce zabývá problematikou zálohy a obnovení konfigurace síťových zařízení pro účely výuky počítačových sítí. Osobně se angažuji ve výuce počítačových sítí na Smíchovské střední průmyslové škole (SSPŠ), proto mi je toto téma velmi blízké. Rád bych přispěl ke zkvalitnění výuky počítačových sítí na střední škole, a tak poskytl studentům vyšší komfort při studiu tohoto předmětu.

Bakalářská práce je rozdělena do čtyř hlavních kapitol.

V první kapitole je vysvětlen význam projektu Cisco akademie a její přínos pro studenty. Podkapitoly objasňující možnosti zálohování konfigurace a operačního systému síťového zařízení.

Ve druhé kapitole se zabývám problematikou zálohování či archivace dat a je zde popsán výběr vhodného způsobu zálohování síťových zařízení pro potřeby SSPŠ.

Kapitola třetí je zaměřena na podrobný rozbor potřeb a požadavků na aplikaci webovou a \textit{desktopovou}. V této kapitole jsou současně uvedeny i \textit{wireframy} obou aplikací.

V poslední čtvrté kapitole se zabývám popisem jednotlivých kroků při tvorbě obou aplikací, které společně slouží studentům k zálohování a obnovování konfigurací síťových zařízení.


\chapter{Současný stav}

Jedním z cílů mé bakalářské práce je vysvětlit čtenáři, proč by se měli studenti učit konfigurovat síťová zařízení, a to již na střední škole. Stejně tak, jako si dnes nedokážeme představit efektivní použití osobních počítačů a serverů bez připojení do internetu, tak si ``síťaři'' nedokáží představit efektivní fungování počítačové sítě bez konfigurovatelných aktivních zařízení.

Aktivní síťové zařízení je takové zařízení, které je určeno pro práci s datovým provozem. Některé části sítě vyžadují vyšší propustnost, jiné vyžadují např. řízení provozu podle priority.

Lidí, pracujících v oboru IT, je obecně málo a jsou velmi žádáni pro svou kvalifikaci v oboru. Malou část tvoří správci sítě. Z této malé časti je potřeba vybrat jen ty, kteří staví a plánují sítě podle norem.
Budoucí potencionální správce sítě je nutné podchytit co nejdříve, a to již při jejich rozhodování o profesním rozvoji na střední škole.

Je vhodné definovat hlavní dva typy síťových zařízeních, o kterých má bakalářská práce pojednává. Jsou to směrovače a přepínače. Přepínač pracuje na 2. vrstvě ISO/OSI  (International Standards Organization/Open Systen Interconnection) modelu a jeho základním úkolem je propojit jednotlivé prvky. Oproti tomu směrovač pracuje na 3. vrstvě ISO/OSI modelu a jeho úkolem je přeposílat data z jedné sítě do druhé.

\section{Cisco akademie}

Cisco akademie je výukový program, který zastřešuje společnost Cisco Systems, Inc. V rámci akademie je možné absolvovat školení formou interaktivních výukových materiálů, připravených praktických cvičení a videí, které jsou spojené s většinou kapitol. Po úspěšném absolvování kurzu student obdrží certifikaci dokládající znalost z dané problematiky.

Výčet nejdůležitějších bodů Cisco akademie:
\begin{itemize}
\item poskytnout kvalitní a komplexní materiály pro efektivní výuku síťových technologií
\item připravit studenty na složení certifikační zkoušky
\item sledovat úspěch jednotlivých studentů a napojit je na vyučující a IT experty
\item připojit se ke komunitě pro sdílení osvědčených postupů
\item získat značnou slevu na pořízení Cisco HW pro potřeby výuky
\end{itemize}

Nejdůležitější částí Cisco akademie jsou lektoři, kteří motivují studenty, a pomáhají jim úspěšně projít kurzem.

\subsection{Založení akademie}
Cisco akademii je možné založit nekomerční firmou po celém světe. V současné době je akademiie založena ve více než 9 000 společnostech ve více než 170 zemích světa. Cisco akademii je možné založit od roku 1997 \cite{zalozeni_cisco_akademie}.

Pro založení akademie je zapotřebí, aby instituce disponovala následujícím (v závislosti na druhu kurzu):
\begin{itemize}
\item vyhrazená učebna s minimálně 50 m\textsuperscript{2} pro praktickou výuku
\item studentské počítače pro přístup k výukovým materiálům
\item stabilní spojení do internetu s rychlostí připojení minimálně 512 kbps
\item finance na pořízení HW pro výuku
\item instruktor s kvalifikací z ITC (Instructor Training Center)
\item příslušnost k ASC (Academy Service Center)
\end{itemize}

\subsection{Cisco akademie na SSPŠ}
Akademie na Smíchovské střední průmyslové škole nabízí studentům kurzy počínaje IT Essentials. Tento kurz je doporučován absolvovat v 1. nebo ve 2. ročníku.
Další sadu kurzů tvoří CCNA1-4, které studenti mají možnost absolvovat v průběhu 2. a 3. ročníku. Ve 4. ročníku při volbě volitelného odborného předmětu studenti mohou pokračovat kurzem CCNA Security nebo Linux Essentials.

\section{Rozdíl mezi síťovými zařízeními}
Základy prvních sítí, podobných těm dnešním, datujeme do roku 1990, kdy byl společností Kalpana představen první ethernetový přepínač \cite{network_performance_baselining}. Společnost Kalpana je součástí společnosti Cisco.

Základním rozdílem mezi konfigurovatelným přepínačem je možnost se k němu připojit a moci ovlivnit jeho funkci. Nekonfigurovatelné přepínače není možné jakkoliv nastavovat. Funkcionalitu u těchto druhů přepínačů nelze ovlivnit.

Konfigurovatelná zařízení lze obecně nastavit dvěma způsoby. První z nich je využití CLI (Command Line Interface), což je textový režim v podobě příkazového řádku. V tomto režimu lze nastavit všechny funkce, které dané zařízení podporuje. Druhý způsob je využití webového přístupu, které dovoluje uživateli nastavit veškerou konfiguraci ve webovém prohlížeči.

\subsection{Konfigurovatelné přepínače}
V každé moderní síti se používají konfigurovatelné přepínače nebo obecně síťová zařízení. Správu těchto druhů zařízení lze řešit vzdáleně bez nutnosti fyzické přítomnosti v lokalitě vzniklého problému. Při správě větší sítě, kde se nachází mnoho zařízení, tato zmíněná funkce velmi urychlí a usnadní konkrétní řešení problému. \\

Výčet podpůrných funkcí konfigurovatelných přepínačů:
\begin{itemize}
\item vypnutí a zapnutí jednoho či skupiny rozhraní
\item nastavení priorit pro jednotlivá rozhraní
\item filtrování provozu podle MAC adres
\item vytváření a škálování provozu do VLAN (Virtual Local Area Network)
\item technologie SNMP (Simple Network Management Protocol) pro sledování provozu v síti
\item agregace linek
\item technologie pro zabránění vytvoření smyčky v síti
\end{itemize}

Doposud text pojednával ve větší míře hlavně o přepínačích, a to z toho důvodu, že ostatní síťová zařízení nelze používat bez základního nastavení. Nastavení směrovače lze provést vzdáleně s využitím CLI nebo webového rozhraní.

\section{Základní parametry síťových zařízení}

Síťová zařízení rozdělujeme do několika kategorií podle funkcionality, typu a výkonnosti HW, nejvyšší možné verze \textit{firmwaru}, délky podpory a podle ceny.
Dva základní typy síťových zařízení jsou přepínač a směrovač. Pomocí těchto zařízení jsou v dnešní době budovány moderní počítačové sítě \cite{connect}.

Podrobný výčet základního dělení parametrů síťových zařízení je dostupný v příloze \ref{apx:parametry}.



\section{Přehled nejvýznamnějších společností v podnikových sítích}

Následující přehled byl čerpán ze stránek společnosti IDG Communications, Inc. Tento přehled byl zpracován v srpnu roku 2017 \cite{most_powerful_companies}. Zdůvodněny jsou první tři pozice v žebříčku.

\begin{enumerate}

\item Cisco Systems, Inc.
\item Hewlett Packard Enterprise Company/Aruba Networks
\item Juniper Networks, Inc.
\item Huawei Technologies Co., Ltd.
\item Arista Networks
\item VMware, Inc.
\item Riverbed Technology, Inc.
\item NETSCOUT Systems, Inc.
\item Extreme Networks, Inc.
\item Dell EMC

\end{enumerate}


\subsection{Cisco Systems, Inc.}
Společnost Cisco je největší společností působící v oblasti podnikových sítích. Tato společnost disponuje spolehlivou technikou, což jí dává možnost proniknout na první místno na trhu práce v oblasti podnikových sítí. Společnost Cisco drží 60 \% tržního podílu ve směrování a routování podle IDC (International Data Corporation).

\subsection{Hewlett Packard Enterprise Company/Aruba Networks}

Aruba je nejsilnější hráč na trhu bezdrátových sítí. V roce 2015 byly firmy HPE (Hewlett Packard Enterpris) a Aruba spojeny, avšak značka Aruba byla zachována kvůli svému jménu hlavně v Americe. HPE se zabývá jak síťovou technologií a datovými úložišti, tak tiskovým řešením.

\subsection{Juniper Networks, Inc.}
Juniper je americká nadnárodní společnost se sídlem v Sunnyvale, Kalifornie. Tato společnost se zabývá vývojem a prodejem síťových produktů, kterými jsou zejména přepínače a směrovače. Dalším jejich důležitým zaměřením v oblasti vývoje je software pro správu a řízení sítě, či produkty zabezpečení sítě. V posledních letech se Juniper zaměřuje na softwarově definovanou síťovou technologii \cite{juniper}. 

\section{Zálohování a obnovení dat síťového zařízení} \label{sec:jak_na_zalohu}

Zálohovat lze konfiguraci síťového zařízení nebo celý operační systém zařízení (v případě Cisco IOS). V následujících kapitolách jsou popsány způsoby zálohy a obnovení dat konfigurace či operačního systému síťového zařízení.

Pro výukové účely je z důvodu jednoduchosti nejvhodnější použít FTP (RFC 114 \cite{rfc114}), TFTP (RFC 1350 \cite{rfc1350}) a SCP protokol. Jelikož se studenti učí konfiguraci zařízení pomocí CLI, konfigurace ve webovém prohlížeči pomocí HTTP/S je standardně pro výuku vypnuta z důvodu její jednoduchosti a nepřehlednosti.

Výčet použitelných protokolů pro zálohu dat je uveden v příloze \ref{apx:protokoly}.

\subsection{Záloha a obnovení konfigurace mimo zařízení}

Rozlišujeme dvě základní konfigurace síťového zařízení. Jedna z nich se označuje konfigurací za běhu a druhá konfigurací startovací. Konfigurace za běhu je konfigurace, která je uložena v operační paměti RAM (Random Access Memory). Pokud je síťové zařízení restartováno, je tato paměť včetně konfigurace smazána. Startovací konfigurace je konfigurace uložená v paměti NVRAM (Non-Volatile Random-Access Memory). Konfigurace uložená do NVRAM se nemění ani po restartu zařízení či neočekávané ztráty napájení.

Zálohovat konfiguraci lze i mimo zařízení, než na kterém byla konfigurace vytvořena. Výhodou tohoto řešení je zálohování různých verzí konfigurací nebo jejich archivace.
Mimo zařízení lze zálohovat na server např. protokoly FTP, SFTP, FTPS, apod.

Další možností, jak zálohovat konfiguraci zařízení, je použití kopírování výstupních dat přímo ze sériové linky konzolového portu. Pomocí této metody je vytvořen systém pro zálohování konfigurací. Tento systém je popsán v dalších kapitolách.

\subsection{Záloha a obnovení operačního systému}

U zařízení značky Cisco se operační systém nazývá IOS (Internetwork Operating System). Celý operační systém je uložen v jednom souboru s příponou \textit{bin}. Průměrná velikost obrazu zmíněného operačního systému je mezi 30-120 MB. Reálná velikost závisí na verzi a druhu konkrétního zařízení.
Operační systém síťového zařízení je uložen v paměti typu \textit{flash}. Konfiguraci parametrů IOSu lze provést také prostřednictvím příkazové řádky. Pro připojení do CLI a konfiguraci IOSu je nezbytné se připojit k zařízení pomocí sériového kabelu nebo pomocí SSH či telnetu, pokud jsme již provedli prvotní konfiguraci.

Stažení IOSu je možné provést na stránce podpory Cisco \cite{ios_download}. Pro nahrání nové verze operačního systému do zařízení je možné použít TFTP server (záleží na aktuální verzi IOSu). Pro zálohu operačního systému na server pomocí protokolu TFTP je nutné zvolit jméno nahrávaného souboru a IP (Internet Protocol) adresu serveru, kam přistupujeme \cite{samuraj_ios}.

Pro aktualizaci operačního systému je také možné použít \textit{Cisco Network Assistant} \cite{cisco_network_assistant} nebo protokol Xmodem, který je vhodný zejména pro nahrání nového operačního systému tam, kde byl původní operační systém poškozen či smazán z paměti zařízení.

\subsection{Použitelné příkazy pro zálohu a obnovení dat}
Pro zkopírování souboru ze zdroje do cílového umístění je nutné použít příkaz \textit{copy}. Kopírovat lze konfiguraci, IOS a další soubory na server pomocí protokolů, které jsou popsané v kapitole \ref{sec:jak_na_zalohu}.

Příkaz \textit{copy} má následující syntaxi:

\textbf{copy [/erase]} \textit{zdrojová-url cílová-url}

\subsection{Ukázka kódu}
V této kapitole jsou uvedeny příklady, jak zkopírovat konfiguraci zařízení na server a zpět ze serveru na zařízení ve výchozím nastavení. Pro kopírování souborů je v ukázce uveden FTP protokol.
Všechny ukázky byly vytvořeny v programu \textit{Packet Tracer} \cite{packet_tracert}.

\newpage

\textbf{Kopírování konfigurace z FTP serveru s adresou 192.168.0.1} 

Soubor s uloženou konfigurací je pojmenován \textit{switch1-confg}. Na posledním řádku je informace o zkopírovaných 1136 bytech za 0,077 sekundy \cite{backup_restore}. \\

{\itshape
switch1\#copy running-config ftp: 

Address or name of remote host []? 192.168.0.1

Destination filename [switch1-confg]? 

Writing running-config...

[OK - 1136 bytes]

1136 bytes copied in 0.077 secs (14000 bytes/sec) \\
}

\textbf{Kopírování dat z FTP serveru zpět na síťové zařízení}

V tomto případě se znovu jedná o přepínač. Přepínač má původní název \textit{Switch}, který je daný výchozí konfigurací. Po obnovení konfigurace je patrné, že se změní parametr \textit{hostname} nebo-li jméno zařízení na \textit{switch1}. Nastavení FTP serveru zůstává stejné jako v první ukázce. Zkopírování konfigurace v této ukázce kódu trvá 0,011 sekundy \cite{backup_restore}.\\

{\itshape
switch\#copy ftp: running-config 

Address or name of remote host []? 192.168.0.1

Source filename []? switch1-confg

Destination filename [running-config]? 

Accessing ftp://192.168.0.1/switch1-confg...

[OK - 1136 bytes]

1136 bytes copied in 0.011 secs (103272 bytes/sec) 

switch1\# \\
}


Konfiguraci, kterou má přepínač uloženou ve své paměti flash, je možné zobrazit za pomoci příkazu \textit{more flash:''jmeno\_souboru.pripona''}. Soubor je vypsán na CLI. Zde je ukázka takovéto konfigurace, kterou jsme v předchozí ukázce zálohovali na server. \\

{\itshape
!
version 12.2 

no service timestamps log datetime msec

no service timestamps debug datetime msec

no service password-encryption

!

hostname switch1

!

ip ftp username cisco

ip ftp password cisco

!

spanning-tree mode pvst

spanning-tree extend system-id

!

interface FastEthernet0/1

!

interface FastEthernet0/2

!

...

!

interface FastEthernet0/24

!

interface Vlan1

 ip address 192.168.0.2 255.255.255.0
 
!

line con 0

!

line vty 0 4

 login
 
line vty 5 15

 login
 
!

end \\

}

Na FTP server je možné uložit i aktuální verzi IOSu, kterou disponuje zálohované síťové zařízení. Postupovat budeme obdobně, jako při zálohování konfigurace. \\



{\itshape
switch\#copy flash: ftp: 

Source filename []? c2960-lanbase-mz.122-25.FX.bin

Address or name of remote host []? 192.168.0.1

Destination filename [c2960-lanbase-mz.122-25.FX.bin]? 

Writing c2960-lanbase-mz.122-25.FX.bin...

[OK - 4414921 bytes]

4414921 bytes copied in 23.76 secs (185000 bytes/sec) \\
}


Obdobně je možné IOS stáhnout z FTP serveru zpět do síťového zařízení.\\

{\itshape
switch\#copy ftp: flash: 

Address or name of remote host []? 192.168.0.1

Source filename []? c2960-lanbase-mz.122-25.FX.bin

Destination filename [c2960-lanbase-mz.122-25.FX.bin]? 

Accessing ftp://192.168.0.1/c2960-lanbase-mz.122-25.FX.bin...

[OK - 4414921 bytes]

4414921 bytes copied in 23.72 secs (5057 bytes/sec) \\
}

Na síťovém zařízení se pomocí příkazu \textit{more} zobrazí v CLI obsah IOSu.  \\

{\itshape
switch\#more flash:c2960-lanbase-mz.122-25.FX.bin

00000000:  7F454C46 01020100 00000000 00000000 .ELF .... .... ....

00000010:  5244adbb 1225edda 000ffff0 67aa9855 .... .... .... ....

00000020:  6774988b 60499fb6 474eb8b1 562ea9d1 .... .... .... ....

00000030:  73c38c3c 65d19a2e 4e9cb163 560ea9f1 .... .... .... ....

00000040:  6e1391ec 0dcdf232 0164fe9b 0cadf352 .... .... .... ....

00000050:  68b1974e 1129eed6 3ec7c138 2d2fd2d0 .... .... .... ....

00000060:  75e58a1a 2fd2d02d 3691c96e 10f67f .... .... ....
}


\section{Automatizace uložení konfigurace}

Pro automatizaci procesů je možné využít nástroj \textit{KRON}. Tento nástroj je plně automatizován, a tudíž není potřeba žádné potvrzení stisknutím klávesy. \textit{KRON} dovoluje uživatelům spouštět plnohodnotné \textit{CLI} příkazy v \textit{EXEC} modu.

Intervaly, ve kterých je možné spouštět naplánované úlohy:

\begin{itemize}
\item jednou
\item v předem specifikovaný interval
\item určený datum a čas
\item při spuštění systému
\end{itemize}

Nástroj \textit{KRON} je možné použít pro automatizované nahrání nového IOS obrazu, jakmile bude připravený na serveru ke stažení.

Pravidla, která se spouští v jednom okamžiku, jsou ve skupině nazvané \textit{list}. \textit{List} je možné spustit jednou nebo opakovaně po určené době. Příkazy, které by měly být spuštěny v jiný čas, je nutné umístit do jiného \textit{listu}. Aby fungovalo plánování spouštění procesů, je nutné mít na síťovém zařízení nastavený aktuální čas nebo aktivní protokol NTP (Network Time Protocol) \cite{kron}.\\

Základní příkazy pro konfiguraci \textit{KRONu}:

{\itshape
\begin{enumerate}
\item enable 
\item  configure terminal 
\item  kron policy-list list-name [conditional] 
\item cli command 
\item exit 
\item kron occurrence occurrence-name [user username] {in[[numdays:]numhours:]nummin| at hours:min[[month] day-of-month] [day-of-week]} {oneshot| recurring| system-startup} 
\item policy-list list-name 
\item exit 
\item show kron schedule 
\end{enumerate}
}

\chapter{Rešerše}

Zálohou souborů ze síťového zařízení se předchází úplné ztrátě dat po jejich vymazání z paměti zařízení. K tomuto vymazání může dojít s úmyslem nebo nepředpokládaně. 
Pokud se informace ze zařízení ztratí a správce sítě tuto skutečnost nevyvolal úmyslně, jedná se o selhání zařízení v důsleku výpadku napájení. V tomto případě je vhodné pravidelně kopírovat konfigurační nastavení zařízení do datového úložiště pomocí některého z protokolů popsaného v kapitole \ref{sec:jak_na_zalohu}.

V případě, že očekáváme smazání konfigurace a dalších informací ze síťového zařízení, je vhodné tyto soubory zálohovat pro další nebo navazující práci. Smazání konfigurace se velmi často objevuje při výuce počítačových sítí v Cisco laboratoři.

Studenti pracují na zadání s větší časovou náročností, než je časová dotace na výuku v jedné spojené hodině. Jedna spojená hodina může být složena ze dvou i více vyučovacích hodin. V tomto případě je nutné, aby studenti měli možnost tuto konfiguraci uložit na jiné zařízení, než na kterém probíhá konfigurace z důvodu dalšího použití v následující hodině.

\section{Cisco laboratoř}

Cisco laboratoř je místnost vyhrazená pouze k výuce síťové problematiky. Tato učebna je koncipována stejným počtem osobních počítačů (stolní počítač nebo notebook), jako je počet studentů absolvujících výuku.

Studenti mohou pracovat s virtualizačním nástrojem, což je druh softwaru pro počítačové sítě, kterým může být dříve popsaný Packet Tracer nebo jiný nástroj k tomu určený. V tomto případě je velmi jednoduché uložit studentovu práci, na které student může pokračovat v další hodině. Virtualizační nástroj poskytuje možnost uložení celé topologie včetně aktuálního stavu konfigurace zařízení tak, jak student dokončil práci před uložením.

Druhým způsobem, jak pojmout výuku počítačových sítí, je využití fyzických zařízení, která si studenti mohou sami vyzkoušet. V tomto případě si studenti mohou vyzkoušet práci se zařízeními, se kterými budou pracovat v praxi, ať už s konzolovým připojením nebo vzdáleně pomocí např. protokolu SSH (Secure Shell).

Při práci s fyzickými zařízeními se objevují problémy se zálohováním zařízení. Některé cisco laboratoře obsahují napevno umístěné rozvaděče v místnostech v počtu nejčastěji 1 až 4 kusy, ve kterých jsou umístěna síťová zařízení typu přepínač, směrovač, rozbočovač, opakovač a další. K těmto rozvaděčům vedou kabelové trasy také do studentského pracoviště. Na každém stole je vyveden propoj ke každému rozvaděči, do interní sítě školy, potažmo do internetu, k síťové kartě počítače a ke konzolovému rozhraní COM (Communication Port).

Jiné Cisco laboratoře mohou být navrženy pro práci studentů se zařízeními, která jsou přidělena pouze jim a jsou umístěna ve stole, kde tito studenti pracují. V tomto případě má každý student většinou přidělen jeden přepínač a jeden směrovač. Pro složitější topologie tyto dvě zařízení nejsou dostačující a je nutné umístit další zařízení volně na stůl. V tuto chvíli se objevuje problém  automatizace zálohování, kdy je nutné mít každé zařízení jednak nakonfigurované pro vzdálenou komunikaci, a také fyzicky připojené kabelem do sítě nebo k sériovému rozhraní počítače.

Tato kapitola se nadále bude zabývat primárně popisem verze Cisco laboratoře, kde část zařízení je umístěna pevně ve stole studenta a druhá část zařízení může být volně položena na stole. Tuto podobu Cisco akademie je možné najít na Smíchovské střední průmyslové škole, pro kterou bude řešení zálohování zařízení navrženo.


\section{Zálohování a archivace}

Před samotných rozebráním metod zálohování pro konkrétní typy Cisco laboratoří je nutné vysvětlit rozdíl mezi zálohováním a archovací dat.

Zálohování je proces, který ideálně uschová všechna data, která budeme za přijatelných nákladů a v přijatelném čase schopni opětovně pořídit. Archivace je oproti tomu přesun neaktuálních dat na archivní média.

Zálohy jsou potřeba v případě, že dojde softwarovému nebo hardwarovému selhání. Příkladem hardwarové chyby může být selhání pamětí. Zálohy mohou být použity i v případě selhání lidského faktoru. Cílem zálohování je navrácení dat do stavu, v jakém byla v námi požadovaném okamžiku. Zálohy by měly být fyzicky a geograficky odděleny, aby v případě přírodní katastrofy nedošlo k poškození jak zdrojových, tak záložních dat. Zálohování se děje vždy v návaznosti na uplynutí určitého, pravidelně se opakujícího časového intervalu (den, týden, měsíc, ...).

Archivace zajišťuje dlouhodobé uložení vybraných dat až do okamžiku, kdy musí být postaráno o jejich certifikované a doložitelné odstranění. Archivace je vyvolána tehdy, jsou-li nějaká data vhodná pro archivaci (účetní závěrka). Archivace je vyžadována spíše většími firmami, kde je nejčastěji zákonem předepsaná povinnost této činnosti. 

\section{Verzování zálohovaných souborů}

Verzování souborů v podání využití na SSPŠ je zaměřeno na laboratorní úlohy, které mají počátek působení na začátku školního roku. V jednotlivých verzích je možné rozlišovat narůstající počet příkazů, které student postupně přidává do konfigurace každého zařízení.

Verzování je vhodné pro laboratorní úlohy, na kterých studenti pracují v laboratoři Cisco. Po každém důležitém kroku v konfiguraci si mohou studenti uložit aktuální stav své práce. V jednotlivých verzích se následně mohou pohybovat a řešit problematiku nefunkční konfigurace.

Zálohy je vhodné pro použití na SSPŠ vytvářet způsobem kompletní zálohy nebo formou přírustkového zálohování. Kompletní záloha je vhodná po dokončení celé laboratorní úlohy. Z této zálohy mohou studenti dále čerpat pro opakování studia nebo v případě přípravy pro další laboratorní úlohy. Přírustková záloha je vhodná pro rozsáhlejší úlohy, na kterých je zapotřebí pracovat během několika vyučovacích hodin. 

\section{Archivace zálohovaných souborů}

Archivovat data je vhodné po ukončení výuky v jednom ročníku. Po postoupení studenta do dalšího ročníku se mění tématický plán výuky. Na začátku dalšího ročníku se začíná obvykle opakovat látka předchozího, a následujě nově probíraná látka, která navazuje na předchozí ročníky. Mít k dispozici konfiguraci z předešlého ročníku může být užitečné, zejména při opakování učiva nebo při navazování na další tematické okruhy.

\section{Metody zálohování konfigurace síťových zařízení}

Na základě možnosti připojení jednoho nebo všech zařízení do sítě se jeví vhodné rozdělit metody zálohování na souběžné a postupné. Tyto dvě vybrané metody jsou velmi úzce spojeny se zařízeními přenositelnými a nepřenositelnými v rámci Cisco laboratoře.

\subsection{Souběžné zálohování všech síťových zařízení}

Pro souběžné zálohování síťových zařízení v Cisco laboratoři je nezbytné, aby byla všechna zařízení staticky umístěna v síťových rozvaděčích a trvale připojena do interní sítě.

Naskýtají se dvě možnosti, jak vyřešit zálohu statických zařízení. První z nich je konfigurace komunikace na 3. vrstvě ISO/OSI modelu tak, aby se zálohované zařízení mohlo spojit se serverem pro kopírování konfigurace. V případě směrovače je nezbytné nakonfigurovat jeden z ethernetových rozhraní a následně ho fyzicky připojit do předem vytvořené sítě. Toto rozhraní by mělo být zabezpečeno proti narušení funkčnosti na 1. vrstvě ISO/OSI modelu, což je např. neúmyslné vypojení kabelu z konektoru.

Pokud na směrovači je nedostačující počet ethernetových rozhraní, je možné (dle druhu směrovače) dokoupit rozšiřující kartu. Tato varianta ale vyžaduje určitou investici. Jelikož hledáme řešení stejné pro celou laboratoř, toto řešení není zcela efektivní jak prakticky, tak ekomonicky.

V případě přepínače je nutné nakonfigurovat \textit{management VLAN} (Virtual Local Area Network) pro správnou komunikaci na 3. vrstvě ISO/OSI modelu. Současně je nezbytné zabezpečit funkčnost na 1. vrstvě ISO/OSI modelu obdobně jako v případě směrovače.

Druhou variantou zálohy konfigurace ze směrovače nebo z přepínače je možnost připojení pomocí konzolového kabelu k jinému zařízení, ze kterého bude následně provedeno odeslání konfigurace na server. Zmíněným zařízením pro zprostředkování zálohy konfigurace může být osobní počítač nebo tzv. terminálový server. V případě osobního počítače je nutná režie studenta, který přijme konfiguraci do PC (Personal Computer) a následně přijatá data odešle na server pro zálohu.

Použití terminálového serveru umožňuje sériovou komunikaci zapouzdřit do packetu protokolu IP. Zapouzdření probíhá automaticky po nastavení terminálového serveru. Terminálovým serverem může být přímo zařízení od společnosti Cisco (nebo i jiný výrobce) nebo osobní počítač/server mající několik rozšiřujících karet s konzolovými rozhraními v dostatečném počtu.

\subsection{Postupné zálohování síťových zařízení}

Postupné zálohování síťových zařízení se jeví vhodné pro zařízení, která nejsou permanentně umístěna v síťových rozvaděčích a student s nimi může libovolně manipulovat v rámci Cisco laboratoře. Záloha těchto přenositelných zařízení je možná pomocí konzolového kabelu připojeného k osobnímu počítači studenta. Student zálohuje každé zařízení ve své laboratorní topologii postupným připojováním konzolového kabelu k aktuálně zálohovanému zařízení a následně provede stažení konfigurace do počítače a odeslání na server.

V tomto případě se nabízí dvě možnosti, jak odesílat konfiguraci ze zálohovaného zařízení na server. První možností je využití tzv. \textit{daemona}, což je služba běžící na pozadí operačního systému. Tato služba pracuje bez zásahů uživatele.

Druhou možností je aplikace s grafickým rozhraním, kterou ovládá uživatel. V aplikaci je možné zvolit jméno zálohovaného souboru, který se odesílá na server. Současně zde je možnost funkcionality stažení konkrétní konfigurace ze serveru do síťového zařízení.

\subsection{Uložení konfigurace na serveru}
Obě metody zálohování konfigurace jak souběžné, tak postupné, je nutné doplnit o serverovou část, kde jsou dané konfigurace ukládány a verzovány, popř. archivovány. Tato serverová část je nezbytná pro možnost obnovení konfigurace zpět na síťové zařízení.

Serverová část bude doplněna o možnost zobrazení informací ve webovém prostředí pro správu konfigurací, jejich úpravu nebo vytvoření šablon či přípravy pro výuku.

\section{Výběr vhodného řešení}

Jelikož se tato bakalářská práce zaměřuje na automatizaci zálohování a obnovení konfigurace síťových zařízení při použití v Cisco laboratoři na SSPŠ, výběr řešení musí být přizpůsoben i stylu výuky v této laboratoři.

\subsection{Rozložení prvků v Cisco laboratoři na SSPŠ}

V laboratoři se nachází 18 stolů, které jsou určeny až pro dva studenty. Odborné předměty jsou na SSPŠ vyučované po polovinách třídy. Jelikož je v jedné třídě plná kapacita 34 studentů, musí být učebna uzpůsobena pro maximální počet studentů v jedné polovině, což je 17. 
Každá dvojice má k dispozici síťový rozvaděč umístěný ve stole.

\begin{figure}[h]
    \centering
    \includegraphics[width=0.7 \textwidth]{figures/rozmisteni_stolu.png}
    \caption{Rozmístění stolů v učebně} 
\end{figure}

\newpage

Tyto rozvaděče obsahují:

\begin{itemize}
\item přepínače Cisco Catalyst 2950-24 a Cisco Catalyst 2960-24
\item směrovače Cisco z modelových řad 1900 a 4000
\item \textit{patch panel} - 2x síťová karta počítačů, 2x propoj do centrálního přepínače, sériové rozhraní přepínače (zadní strana přepínače není v rozvaděči dostupná) a sériová rozhraní počítačů
\item \textit{PDU} (Power Distribution Unit)
\end{itemize}

Každý student má k dispozici svůj stolní počítač vybavený konzolovým kabelem.

Mimo zařízení, která jsou umístěna ve stolech, jsou k dispozici přenositelná zařízení typu: přepínače, směrovač, rozbočovač a další zařízení pro bezdrátové pokrytí. Tato zařízení jsou uschována ve skříni, do které mají studenti během výuky přístup.

\subsection{Průběh výuky na SSPŠ}

Výuka probíhá stylem domácí přípravy a následné samostatné práce v hodině při průběžném výkladu teorie. Studenti pracují na zadání, které dostanou buď včas dopředu, aby se
 mohli samostatně připravit během domácí přípravy, nebo na začátku hodiny, kdy je nejprve vysvětlena teorie a následně postup k praktickému zadání.

V případě domácí přípravy je vhodné, aby si studenti mohli připravit konfiguraci do zařízení, kterou následně mohou v hodině nahrát do zařízení a pokračovat v dokončení zadání. Připravou šablony obsahující základní konfigurační příkazy je možné urychlit práci studentů v hodině. Použití konfigurační šablony se jeví jako vhodné pro různé vyučované tematické okruhy.

\subsection{Kritéria pro výběr vhodné metody}

Jelikož se v Cisco laboratoři na SSPŠ objevují jak přenositelná, tak nepřenositelná zařízení, musí být navržená metoda zálohování těmto zařízením přizpůsobena.

SSPŠ pravidelně připravuje studenty na \textit{Cisco NetAcad games} a v minulém roce tuto soutěž i \textit{hostovala}. Jedná se o porovnání znalostí a dovedností v síťových technologiích v rámci několika středních škol. Navržený systém by měl mít možnost přípravy konfigurace a její archivaci pro snadné obnovení v případě dalšího ročníku této nebo podobné soutěže.

Jelikož je na SSPŠ zřízena Cisco akademie, studenti jsou na konci každého kurzu testováni formou praktickou a teoretickou. V závěrečném praktickém testu studenti konfigurují topologii podle zadání. Navržený systém by měl zohlednit i testování studentů při závěrečné zkoušce pro získání certifikaci.  \\

Kritéria pro výběr vhodného řešení:

\begin{itemize}

\item jednoduché použití systému
\item rychlé pochopení systému
\item použití pro přenositelná i nepřenositelná zařízení
\item obnovení konfigurace podle dané verze
\item možnost připravení šablony 
\item rozdělení systému podle přihlášení uživatele
\item úprava konfigurací pomocí webového rozhraní

\end{itemize}

\subsection{Výběr vhodné metody zálohování a zdůvodnění}

Podle popsaných kritérií v předchozí kapitole se jeví jako nejvhodnější způsob zálohování pomocí aplikace, kterou student bude obsluhovat na svém počítači v Cisco laboratoři. V aplikaci bude možné stáhnout konfiguraci ze zařízení do počítače a následně ji odeslat na server. Opačně bude možné v aplikaci spustit obnovu konfiurace ze serveru zpět na síťové zařízení.

Součástí řešení bude serverová strana, která zajistí ukládání dat. Data bude možné zobrazit pomocí webového prostředí, ve kterém bude možnost správy všech konfigurací.

Výše popsané řešení je vhodné pro použití SSPŠ díky uvedeným kritériím a bude použito pro vytvoření zálohovacího systému. 

\chapter{Analýza}

Systém pro zálohu, obnovení a správu konfigurací síťových zařízení bude sloužit zejména studentům na Smíchovské střední průmyslové škole ve výuce počítačových sítí v rámci Cisco akademie. Studenti budou využívat \textit{desktopovou} aplikaci pro zálohu konfigurace na server nebo její obnovení zpět do síťového zařízení. Správa konfigurací a uživatelů bude možná pomocí webové aplikaci.

\section{Přínosy pro uživatele}

\begin{itemize}
\item možnost zálohovat konfiguraci mimo síťové zařízení
\item obnova konfigurace po určité době
\item přehled všech zálohovaných konfigurací a jejich editace
\item úspora času při konfiguraci síťových zařízení
\item možnost přípravy konfigurace mimo učebnu
\end{itemize}

\section{SWOT}

SWOT analýza poskytuje rozbor a hodnocení vnitřního a vnějšího prostřední. Do vnitřního prostředí řadíme \textbf{S} (Strengths = silné stránky) a \textbf{W} (Weaknesses = slabé stránky). Do vnějšího prostředí řadíme \textbf{O} (Opportunities = příležitosti) a \textbf{T} (Threats = hrozby).

\subsection{Silné stránky }

\begin{itemize}
\item efektivní řešení zálohy a obnovy konfigurací síťových zařízení
\item přehledné uživatelské rozhraní
\item možnost rychlého vyhledávání v seznamu konfigurací
\item možnost přípravy konfigurace před vyučovací hodinou
\item příprava šablon pro jednotlivá zadání úloh
\item žádné finanční náklady
\end{itemize}

\subsection{Slabé stránky}

\begin{itemize}
\item celková náročnost realizace
\item budoucí růst počtu zařízení v zálohované topologii
\end{itemize}

\subsection{Příležitosti}

\begin{itemize}
\item možnost využití aplikace i v jiných spolupracujících organizacích se školou
\item rozšíření systému o další funkcionalitu pro výuku
\item použití systému i pro místní topologii v budově
\item zajištění dlouhodobých záloh
\end{itemize}

\subsection{Hrozby}

\begin{itemize}
\item změna rozložené zařízení v Cisco laboratoři na SSPŠ
\item existence konkurenčního řešení
\end{itemize}


\section{Koncepce systému}

Hlavní koncept celého systému obsahuje klientský počítat, kde uživatel ovládá nahrávání a stahování konfigurací z/do síťového zařízení pomocí konzolového kabelu. Všechny konfigurace jsou uloženy na serveru, se kterým klientský počítač komunikuje. Přístup na server je možný i mimo lokální síť, a to z důvodu přípravy konfigurace dopředu nebo její dopracování po výuce.

\begin{figure}[h]
    \centering
    \includegraphics[width=0.6\textwidth]{figures/koncepce_systemu.png}
    \caption{Koncepce systému} 
\end{figure}


\section{Návrh systému}
Pro návrh systému je použit jazyk UML (Unified Modelling Language), protože podporuje různé aplikační oblasti, není závislý na programovacím jazyku a má volné použití metodiky.
Jazyk UML se skládá ze syntaxe a ze sémantiky. Syntaxe definuje pravidla, jak tvořit výrazy, a sémantika přiřazuje syntaktickým výrazům význam.

Jelikož lze pomocí jazyka UML znázornit stav IS (Informační Systém) graficky, jedná se o velmi přehledný grafický popis.

\section{Požadavky na aplikaci}

Po konzultaci s vedoucím projektu byly definovány požadavky na aplikaci. Tyto požadavky jsou rozděleny na požadavky pro \textit{desktopovou} aplikaci a pro webovou aplikaci. Následné dělení v těchto skupinách je podle funkčních a nefunkčních požadavků. Funkční požadavky se dále dělí na správu uživatelů a správu konfigurací.

Nefunkční požadavky nepopisují co bude aplikace dělat, ale jak to bude dělat. Příkladem mohou být požadavky na výkon systému, jeho škálovatelnost, spolehlivost, rozšiřitelnost nebo bezpečnost. Při volbě nejdůležitějších požadavků pro systém je nutné počítat s tím, že se jednotlivé požadavky budou navzájem vylučovat, a proto není možné ke všem přistoupit rovnocenně.

Funkční požadavky jsou součástí požadavků uživatele, které popisují funkci systému z hlediska úloh a služeb. Tyto požadavky definují základní funkcionalitu systému pro správné zpracování vstupů a následné generování výstupů. Mezi další požadavky uživatele patří např. požadavky výkonnostní nebo designové.

Pro definování systémových požadavků jsem zvolil následující šablonu: \\\\
<KOMU?> <ZA PODMÍNEK?> <PROČ?> \\


Požadavky jsou pojmenovány ve forme: ``AA-BB-CC-DD''.

\begin{itemize}
\item AA: DA (\textit{desktopová} aplikace) nebo WA (webová aplikace)
\item BB: FP (funkční požadavek) nebo NP (nefunkční požadavek)
\item CC: SK (správa uživatelů) nebo SK (správa konfigurací)
\item DD: číslo požadavku
\end{itemize}

\newpage

\subsection{Desktopová aplikace} \label{sec:da}

\begin{figure}[h]
    \centering
    \includegraphics[width=0.5\textwidth]{figures/da.png}
    \caption{Požadavky na \textit{desktopovou} aplikaci} 
\end{figure}

\subsubsection{Nefunkční požadavky na \textit{desktopovou} aplikaci}
\begin{itemize}
\item \textbf{DA-NP-01 Multiplatformní rozhraní} - Podmínkou pro systém je jeho funkčnost na různých typech operačního systému (Windows, Linux a další). Systém by
neměl být ovlivněn různým druhem podkladového operačního systému.
\item \textbf{DA-NP-02 Intuitivní rozhraní} - Systém by měl mít co nejjednodušší a nejpřehlednější uživatelské rozhraní, aby práce s ním byla pro uživatele pohodlná,
efektivní a rychlá.
\end{itemize}

\subsubsection{Funkční požadavky na \textit{desktopovou} aplikaci}
\begin{itemize}
\item \textbf{DA-FP-01 Zobrazení všech uložených konfigurací} - Systém zobrazí uživateli všechny konfigurace, ke kterým má uživatel (vlastník) přidaná práva.
\item \textbf{DA-FP-02 Stažení konfigurace ze síťového zařízení} - Systém umožní uživateli stáhnout konfiguraci ze síťového zařízení.
\item \textbf{DA-FP-03 Nahrání konfigurace na síťové zařízení} - Systém umožní uživateli nahrát konfiguraci na síťové zařízení.
\item \textbf{DA-FP-04 Stažení konfigurace ze serveru} - Systém umožní uživateli stáhnout vybranou konfiguraci ze serveru.
\item \textbf{DA-FP-05 Nahrání konfigurace na server} - Systém umožní uživateli nahrát konfiguraci na server.
\end{itemize}


\subsection{Webová aplikace} \label{sec:wa}

\begin{figure}[h]
    \centering
    \includegraphics[width=0.5 \textwidth]{figures/wa.png}
    \caption{Požadavky na webovou aplikaci} 
\end{figure}

\subsubsection{Nefunkční požadavky na webovou aplikaci}
\begin{itemize}
\item \textbf{WA-NP-01 Multiplatformní rozhraní} - Podmínkou pro systém je jeho funkčnost v různých typech webových prohlížečů. Jelikož se jedná o webovou aplikaci,
snižují se hardwarové nároky a současně nároky na operační systém.
\item \textbf{WA-NP-02 Spolehlivý systém} - Systém by měl být spolehlivý. Automatizovaně mohou být vytvářeny denní zálohy systému po ukončení provozní doby
instituce.
\item \textbf{WA-NP-03 Rozširitelný systém} - Systém bude rozšiřitelný za účelem pozdějšího doplnění funkcionalit.
\item \textbf{WA-NP-04 Intuitivní rozhraní} - Uživatelské rozhraní systému bude přehledné pro uživatele, aby jeho práce v systému byla rychlá, snadná a efektivní.
Uživatelské rozhraní nesmí nijak brzdit samotného uživatele v jeho práci.
\end{itemize}

\subsubsection{Funkční požadavky na webovou aplikaci}
\begin{itemize}
\item \textbf{WA-FP-SK-01 Zobrazení všech uložených konfigurací} - Systém zobrazí uživateli všechny konfigurace, ke kterým má uživatel přidaná práva.
\item \textbf{WA-FP-SK-02 Nahrání konfigurace na server} - Systém umožní uživateli nahrát konfiguraci na server.
\item \textbf{WA-FP-SK-03 Stažení konfigurace ze serveru} - Systém umožní uživateli stáhnout vybranou konfiguraci ze serveru.
\item \textbf{WA-FP-SK-04 Editace konfigurace} - Systém umožní uživateli editovat dříve uloženou konfiguraci.
\item \textbf{WA-FP-SK-05 Vymazání konfigurace} - Systém umožní uživateli vymazat vybranout konfiguraci.
\item \textbf{WA-FP-SU-01 Přidání uživatele} - Systém umožní správci uživatelů přidání nového uživatele. Systém o uživatelích v databázi eviduje jméno, příjmení,
email, název skupiny a stav uživatele.
\item \textbf{WA-FP-SU-02 Editace údajů o uživateli} - Systém umožní správci uživatelů editovat informaci o uživatelích.
\item \textbf{WA-FP-SU-03 Vymazání uživatelele} - Systém umožní správci uživatelů smazat uživatele.
\item \textbf{WA-FP-SU-04 Přihlášení uživatele} - Systém umožní uživateli přihlásit se na základě jeho emailu a hesla.
\item \textbf{WA-FP-SU-05 Zobrazení detailních informací o uživateli} - Systém umožní uživateli zobrazit jeho detailní informace uložené v systému.
\item \textbf{WA-FP-SU-06 Zobrazení všech uživatelů} - Systém umožní správci uživatelů zobrazit informace o všech uživatelích.
\item \textbf{WA-FP-SU-07 Změna hesla uživatele} - Systém umožní uživateli změnit heslo u uživatelského účtu.
\end{itemize}

\newpage

\section{Uživatelské role}

\begin{figure}[h]
    \centering
    \includegraphics[width=0.15 \textwidth]{figures/role.png}
    \caption{Uživatelské role} 
\end{figure}

\subsection{Běžný uživatel}
Může nahrávat, stahovat a modifikovat konfiguraci na serveru. Má přístup ke konfiguracím, ke kterým mu byla přidělena práva.

\subsection{Správce uživatelů}
Má právo běžného uživatele (viz výše). Navíc může vytvářet, mazat a upravovat běžného uživatele v systému, přiřazovat běžné uživatele do skupin a přidávat práva běžným uživatelům ke konkrétním konfiguracím.

\subsection{Administrator}
Má právo správce uživatelů (viz výše). Navíc může přidávat, mazat a upravovat správce uživatelů.


\section{Modely případů užití}

Model případů užití (\textit{Use Case Model}) vyjadřuje, kdo bude jakým způsobem používat systém, jací budou uživatelé systému a jaká budou mít práva.
Součástí systému jsou případy užití, které definují co bude systém konkrétním uživatelům umožňovat. Ve zkratce se jedná o zachycení funkčních požadavků.
Pojmenovává funkce systému z pohledu účastníků (název má slovesnou vazbu).
Účastníkem systému jsou uživatelé v podobě rolí, které v daném systému nebo ve firmě vykonávají. Účastníkem může být i čas nebo jiný IS \cite{uvod_do_uml}.\\

\textit{Use Case Model} dovoluje vymezit vlastnosti systému:

\begin{itemize}
\item omezení nadměrně zvětšujícímu se řešení
\item detaily jednotlivých funkcionalit
\item odhad pro pracnost řešení
\item podklady pro testování systému
\end{itemize}

Jednotlivé modely případů užití jsou v příloze \ref{apx:use_cases} této práce. 

\section{Diagram nasazení}

Diagram nasazení znázorňuje instalaci jednotlivých softwarových komponent na hardwarových zařízeních a jejich vzájemnou komunikaci v rámci celé aplikace.


\begin{figure}[h]
    \centering
    \includegraphics[width=0.6 \textwidth]{figures/diagram_nasazeni.png}
    \caption{Diagram nasazení} 
\end{figure}


\section{Tvorba webové aplikace}

Webová aplikace je vytvořena pomocí \textit{frameworku} Laravel. Framework je softwarová struktura, která obsahuje podpůrné programy, knihovny nebo hotové návrhové vzory. Laravel umožňuje programátorovi zaměřit se na hlavní část aplikace díky připraveným šablonám.

Laravel je PHP \textit{framework} obsahující sady scriptů v PHP, které jsou předpřipravené pro rychlé nasazení a použití. Laravel je \textit{open source} PHP \textit{framework} vyvinutý programátorem Taylorem Otwellem. Jeho první vydání bylo v roce 2012. Laravel je poskytován pod licencí MIT (Massachusetts Institute of Technology). Skládá ze tří základních stavebních kamenů, kterými jsou \cite{laravel}:

\begin{itemize}
\item Model - aplikační data a funkce
\item Pohled - prezentace dat v HTML nebo jiné
\item Kontrolér - správa interakce mezi uživatelem, modelem a pohledem
\end{itemize}

\section{Tvorba desktopové aplikace}

Pro vývoj \textit{desktopové} aplikace byl využit programovací jazyk Java. Tento jazyk byl vybrán z důvodu multiplatformnosti, což je jeden z nefunkčních požadavků na aplikaci \ref{sec:wa}.

Jazyk Java patří mezi interpretované programovací jazyky, kde se místo strojového kódu vytvářní tzv. \textit{bajtkód}. Tento formát je nezávislý na architektuře počítače.
Autorem tohoto programovacího jazyku je James Gosling.

Součástí Javy je JDK (Java Development Kit), což je soubor základních nástrojů pro vývoj aplikací. Další součástí je JRE (Java Runtime Environment), jako je virtuální prostředí pro spouštění vývojových nástrojů a aplikací. \\

\begin{figure}[h]
    \centering
    \includegraphics[width=1 \textwidth]{figures/interpretovany_jazyk.png}
    \caption{Interpretované jazyky schéma \cite{interpretovany_jazyk}} 
    \label{img:interpretovane_jazyky_schema}
\end{figure}

\newpage


\section{Návrh vzhledu webové aplikace} \label{wireframes_wa}

Webová aplikace je navržena tak, aby byla co nejpřehlednější a noví uživatelé neměli problém se v systému rychle zorientovat. Při návrhu vzhledu webové aplikace byl kladen důraz na funkční a nefunkční požadavky, které jsou uvedeny výše.

\begin{figure}[h]
    \centering
    \includegraphics[width=1 \textwidth]{figures/WA-01.png}
    \caption{Hlavní stránka webové aplikace} 
    \label{img:WA-01}
\end{figure}

\subsection{Přihlášení uživatele} \label{sec:login}

Obrazovka \ref{img:WA-00} znázorňuje okno, které se objeví v aplikaci po kliknutí na tlačítko \textit{Login}. Pro přihlášení je nutné vyplnit emailovou adresu a heslo. Pro pokračování na další obrazovku je nutné tyto údaje zadat správně. Pokud by tomu tak nebylo, systém vyhodnotí chybovou hlášku a uživatele informuje. Odeslání údajů pro přihlášení je provedeno po kliknutí na tlačítko \textit{Login}.

\begin{figure}[h]
    \centering
    \includegraphics[width=1 \textwidth]{figures/WA-00.png}
    \caption{Přihlášení uživatele do webové aplikace} 
    \label{img:WA-00}
\end{figure}

\newpage

\subsection{Úvodní obrazovka běžného uživatele} 

Po přihlášení je uživatel přesměrován na úvodní obrazovku \ref{img:WA-04}. Uprostřed se nachází výpis všech konfigurací, které přihlášený uživatel vytvořil. Konfiguraci lze editovat stiknutím tlačítka \textit{Edit} nebo smazat tlačítkem \textit{Delete}. Konfigurace jsou seřazeny podle času vytvoření. Konfigurace jsou ve výpisu identifikovány svým názvem.

\begin{figure}[h]
    \centering
    \includegraphics[width=1 \textwidth]{figures/WA-04.png}
    \caption{Úvodní obrazovka uživatele} 
    \label{img:WA-04}
\end{figure}

\subsection{Vytvoření nové konfigurace}
Novou konfiguraci lze vytvořit stiknutím tlačítka \textit{Create configuration} na kartě \textit{Dashboard}. Obrazovka \ref{img:WA-05} znázorňuje formulář, pomocí kterého lze vytvořit novou konfiguraci. Konfigurace musí být definována názvem a obsahem, což jsou pole \textit{Title} a \textit{Body}. Pro vytvoření konfigurace je nutné stisknout tlačítko \textit{Submit}.

\begin{figure}[h]
    \centering
    \includegraphics[width=0.6 \textwidth]{figures/WA-05.png}
    \caption{Vytvoření konfigurace} 
    \label{img:WA-05}
\end{figure}

\newpage

\subsection{Výpis všech uživatelů}
Na kartě \textit{Users} je možné zobrazit výpis všech uživatelů, které jsou v systému registrovaní. Uživatel je definován svým ID, jménem a příjmením. Uživatelský profil obsahuje současně vlastnosti s časovou značkou vytvoření a poslední modifikace.

V tomto okně je možné daného uživatele smazat, zobrazit jeho celý profil, popřípadě upravit.


\begin{figure}[h]
    \centering
    \includegraphics[width=1 \textwidth]{figures/WA-03.png}
    \caption{Výpis všech uživatelů} 
    \label{img:WA-03}
\end{figure}


\subsection{Přidání nového uživatele} 

Pro přidání nového uživatelského účtu je nutné vyplnit všechna pole, která jsou na obrázku \ref{img:WA-08}. Po vyplnění všech polí, která jsou povinná, je následně nutné kliknout na tlačítko \textit{Create New User}. Systém provede uložení nového uživatele do databáze uživatelů a následně je možné se do systému tímto uživatelským účtem přihlásit. Pokud by byly vyplněny nekorektní informace, systém upozorní chybovou hláškou na chybné informace v jednotlivých polích. V poli Email nesmí být stejná kombinace znaků, jako je email již uloženého uživatele v systému. Jedná se o předcházení vzniku duplicitních objektů v databázi.

\begin{figure}[h]
    \centering
    \includegraphics[width=1 \textwidth]{figures/WA-08.png}
    \caption{Změna hesla uživatele} 
    \label{img:WA-08}
\end{figure}


\section{Návrh vzhledu desktopové aplikace}

\textit{Desktopová} aplikace obsahuje jedno okno, skrze které se ovládá veškerá komunikace se serverem a síťovým zařízením. Jedno okno jsem zvolil kvůli jednoduchosti, přehlednosti a přítomnosti všech funkcionalit na jednom místě.

\begin{figure}[h]
    \centering
    \includegraphics[width=1 \textwidth]{figures/DA-WF.png}
    \caption{Návrh vzhledu \textit{desktopové} aplikace} 
    \label{img:DA-WF}
\end{figure}

\subsection{Ovládání desktopové aplikace}

Na obrazovce \ref{img:DA-WF} je znázorněno hlavní okno \textit{desktopové} aplikace. 

Na levé straně aplikace se nachází část, která je rozdělena do logických celků. Logické celky jsou rozmístěny od shora dolů, podle postupné práce se síťovým zařízením, serverem či samotným přihlášením uživatele. 

V pravé části obrazovky je zobrazován výpis stavu aplikace a výstup z operací, které jsou dokončeny či přerušeny.

\subsection{Připojení k síťovému zařízení}
Uživatel může vytvořit sériové spojení díky výběru parametrů pro spojení pomocí rozbalovacích menu v levé horní části obrazovky \ref{img:DA-WF}. Tyto parametry jsou: výběr sériové rozhraní, přenosová rychlost, počet bitů v rámci, zakončovací bity rámce a zvolení parity pro přenos sériové komunikace. Po výběru konkrétních parametrů je nutné kliknout na tlačítko \textit{Connect} pro vytvoření spojení.

\subsection{Komunikace se síťovým zařízením}
Komunikace se síťovým zařízením je možná pomocí předpřipravených makro funkcí, které se aplikují po stisknutí příslušného tlačítka. Tyto funkce jsou: zobrazení aktuální běžící konfigurace v zařízení, možnost zobrazení většího množství textu na obrazovce pomocí odeslání znaku po stisknutí mezerníku, ukončení probíhajícího příkazu pomocí kombinace ``ctrl+z'' a probuzení zařízení pro zahájení odesílání příkazů po navázání sériové komunikace. Je možné uvést vlastní příkaz do pole \textit{Own command} a následně ho aplikovat stiskem tlačítka \textit{Send command}.


\subsection{Přihlášení do desktopové aplikace}
Na obrazovce \ref{img:DA-WF} se uživatel může přihlásit. Pro přihlášení je nutné zadat registrovaný email a heslo spojené s uvedeným emailem. Informace jsou následně odeslány na server, kde proběhně ověření zadaných uživatelů. Pakliže jsou vstupní data zadána správně a uživatel je v systému již registrovaný, jsou načteny konfigurace vytvořené daným uživatelem.

\subsection{Komunikace se síťovým zařízením}
Po přihlášení uživatele jsou načteny veškeré jeho uložené konfigurace. Tyto konfigurace je možné zobrazit pomocí tlačítka \textit{Show configuration}. Konfiguraci ze serveru je možné nahrát do síťového zařízení pomocí sériové komunikace pomocí tlačítka \textit{Upload to device}. Před zahájením nahrávání konfigurace je nutné, aby se síťové zařízení nacházelo v konfiguračním globálním režimu. Do tohoto režimu je možné přejít pomocí zadání příkazu ``configure terminal''.  

\subsection{Komunikace se serverem}
Konfiguraci ze síťového zařízení je možné nahrát na server. Pro nahrání konfigurace je nutné, aby byl uživatel přihlášený. Dále je nutné, aby byla vytvořena konektivita mezi aplikací a síťovým zařízení a v poli \textit{Conf title} byl vyplněn název konfigurace, která se bude nahrávat ze síťového zařízení směrem na server. Konfigurace bude přiřazena aktuálně přihlášenému uživateli a po jejím nahrání proběhne automaticky obnovení seznamu konfigurací uživatele.


\chapter{Popis řešení dílčích cílů práce}

V této kapitole je popsán postup při práci na samotném systému, což je hlavní myšlenkou této bakalářské práce. Systém je tvořen dvěma aplikacemi. Webová aplikace existuje z důvodu pohodlné správy konfigurací i mimo učebnu sítí. Z vyhraného frameworku PHP není možné přistupovat k \textit{hardwarovým} komponentám počítače, proto \textit{desktopová} aplikace je vytvořena jako samostatná část systému. \textit{Desktopová} aplikace již umožňuje práci se sériovým rozhraním, který je nezbytné využít pro komunikaci se síťovým zařízením.

Webová aplikace umožňuje uživateli kompletní správu jeho uložených konfigurací a správci uživatelů či administrátorovi umožňuje správu samotných uživatelských účtů.

V \textit{desktopové} aplikaci má uživatel možnost nahrání konfigurace do síťového zařízení nebo její uložení na server.

Dokumentace k oběma aplikacím byla vytvořena v nástroji Enterprise Architect. Tento nástroj umoňuje zadefinovat kompletní systém včetně všech požadavků, schémat a modelů užití.

\section{Zdůvodnění výběru programovacích jazyků}
Webovou aplikaci jsem se rozhodl vyvíjet ve skriptovacím programovacím jazce PHP. Pro tento jazyk jsem se rozhodl z důvodu jeho vysoké popularity mezi programátory. PHP je do jisté míry jednoduchý a práce s ním je velmi efektivní. Aby bylo možné se soutředit na samotné jádro a myšlenku celé aplikace, rozhodl jsem se využít PHP \textit{framework} Laravel. Pro PHP existuje celá řada \textit{frameworků}. 

Laravel je aktivně se vyvíjející a existuje pro něj celá řada konektorů a doplňků. Co bylo velmi důležité pro výběr konkrétního \textit{frameworku} byla existence aktualizované a kompletní dokumentace. Důvodem značné oblíbenosti Laravelu jsou jeho základy postavené na podpůrných systémech jako jsou Symfony, Eloquent, Composer nebo Blade a disponuje ověřenými postupy jako jsou ASP.NET MVC, Sinatra nebo Ruby on Rails.

Pro \textit{desktopovou} aplikaci jsem vybral programovací jazyk Java, který patří do skupiny interpretovaných programovacích jazyků. Java se v dnešní době velmi rychle rozvíjí a vývojáři včas reagují na opravy chyb a aktualizace. Java je striktní jazyk, což znamená, že většina funkcionalit a definicí má přesný způsob zápisu. Dalším důvodem je automatická správa paměti, kdy není potřeba stále vytvářet reference do paměti a následně dereference a uvolnění místa. Tohle je řešeno automaticky. Dalšími aspekty byla možnost způsobu vytvoření dokumentace pomocí \textit{Javadocu} nebo možnost využití dědičnosti či práce s vyjímkami, která je v Javě velmi praktickým způsobem, jak ošetřit nečekané stavy programu.

S Javou mám současnosti největší zkušenosti, což přispělo taktéž k tomuto rozhodnutí.

\section{Příprava prostředí a nástrojů pro vývoj aplikací}

Před samotným začátkem vývoje systému jsem vybral nástroje PhpStorm a Netbeans. S těmito nástroji mám největší zkušenosti a plně poskytují potřebné doplňky pro tento projekt.

K vývoji webové aplikace jsem využil vlastního stroje s operačním systémem Windows 10 64b, na který jsem nainstaloval balíček XAMPP (X - \textit{Cross-platform} (multiplatformní), A - Apache, M - MySQL, P - PHP, P - Perl). Z tohoto balíčku jsem využil nástroje Apache, MySQL a PHP.

Apache je jednoduchý a současně výkonný webový server, který je k dispozici jak pro platformu Windows, tak pro Unix/Linux.

MySQL jsem zvolil z důvodu jednoduchého nastavení a implicitní podpory ze strany Laravelu a přítomnosti v základní sestavě balíčku XAMPP. Do budoucna je možné databázi převést na PostreSQL, která je v několika ohledech důmyslněji propracována.

PHP jsem zvolil ve verzi 7.0 kvůli jeho přítomnosti v distrubuci Linuxu Stretch, což znamená stabilní a otestovanou verzi.


\section{Vývoj webové aplikace}

K vývoji webové aplikace jsem využil PHP \textit{framework} popsaný výše. Pro snadné založení projektu byl využit nástroj Composer, který umožňuje správu knihoven a zdrojů v PHP.
Při implementaci byl využit \textit{framework} Bootstrap. 

Pro vytvoření GUI (Graphical User Interface) jsem vycházel z dříve navržených \textit{wireframů}, které jsou uvedeny v kapitole \ref{wireframes_wa}. Samotná webová aplikace splňuje veškeré dříve definované navržené požadavky jak funkční, tak nefunkční. 

Pro vývoj jednotlivých formulářů jsem využil šablon typu \textit{blade}, které poskytují možnost využití ``čistého'' PHP. Blade formuláře používají příponu \textit{.blade.php} a typicky jsou uloženy v \textit{resources/views}. Dvě základní vlastnosti využití formulářů Blade jsou dědičnost a sekce. Dalšími podpůrnými funkcemi jsou komponenty a sloty, které jsem využil např. při definici formulářů konfigurací.


\section{Vývoj desktopové aplikace}

Pro vývoj \textit{desktopové} aplikace jsem využil programovací jazyk Java popsaný a zdůvodněný výše. Aplikace splňuje veškeré funkční a nefunkční požadavky, které jsou uvedeny v kapitole \ref{sec:da}. Aplikace byla vytvořena podle navržených \textit{wireframů}.

V \textit{desktopové} aplikaci se lze připojit pomocí sériového rozhraní k síťovému zařízení. Pro zaslání příkazů zařízení je možné využít předdefinované makra nebo napsat vlastní příkaz do textového pole. Sériová komunikace je zajištěna pomocí konektoru JSSC, který umožňuje zpracovat přijatý signál do čitelné podoby, následně je možné ho filtrovat a pracovat s ním.

V aplikaci je naimplementována možnost spojení se s databází pomocí JDBC konektoru, který poskytuje společnost Oracle pro komunikaci s databází.

Jelikož jsou uživatelské profily vytvářené pouze pomocí webové aplikace, bylo nutné do \textit{desktopové} aplikace naimportovat funkcionalitu šifrování hesel, které používá Laravel Bcrypt. Jedná se o hašovací funkci pro odvození klíče navrženou Nielsem Provosem a Davidem Maziéresem. Tato funkce je založena na šifře \textit{Blowfish}. Pro využití této funkce v Javě jsem použil knihovnu JBCRYPT.

Aplikace je distribuována v souboru JAR spolu s doplňujícími knihovnami.

\section{Testování systému}

Aplikaci bylo nutné otestovat. Testování je rozdělěno do několika úrovní - práce s webovou aplikací, práce s \textit{desktopovou} aplikací a součinnost obou částí systému.
Aplikace byla otestována v několika testovacích prostředích (systémové testování) a následně byly provedeny uživatelské akceptační testy.

\subsection{Systémové testování}

Systém je navržen jako multiplatformní, tudíž bylo nutné otestovat jeho funkčnost v několika prostředích. Testování probíhalo na operačním systému Windows a Debian.
Webová aplikace byla testována v prohlížečích Chrome/Chromium a Mozilla Firefox.

\subsection{Uživatelské akceptační testy}

Pro testování interakce uživatele se systémem bylo využito metody \textit{black-box}, při které se k aplikaci přistupuje jako k ``černé skříňce'', kde jsou známy vstupy a očekávají se dané výstupy. Pro testy jsou připraveny testovací scénáře, aby tester věděl, jaká data má na začátku testování k dispozici a jaký má očekávat výstup a chování aplikace. Příklady využitých testovacích scénářů jsou uvedeny níže.

Testy byly provedeny náhodně vybranými lidmi, kteří mají minimální nebo žádné zkušenosti z problematiky síťových technologií. Testerům byla vysvětlena myšlenka aplikace a její využití. Testeři měli k dispozici síťové zařízení, konzolový kabel, spuštěný webový server a databázový server. Testování bylo závislé na zkušenostech s prací se síťovým zařízením. Těm, kteří neměli žádné zkušenosti s konfigurací, trvalo testování značně déle kvůli vysvětlování konkrétních příkazů.

\begin{table}[]
\caption{Testovací scénář č.1}
\label{test_1}
\begin{tabular}{| p{10em} | p{27.7em} |}
\hline
\textbf{ID}                 & WA\_LOGIN\_TO\_APPLICATION                                                                                                                                                                                       \\ \hline
\textbf{Jméno testování}    & Přihlášení se do webové aplikace                                                                                                                                                                                  \\ \hline
\textbf{Popis testu}        & \begin{tabular}[c]{@{}l@{}}1. V menu na pravé straně kliknětě na tlačítko login\\ 2. Vyplňte pole Email a heslo\\ 3. Přihlaste se do aplikace pomocí kliknutí na tlačítko Login\end{tabular}                      \\ \hline
\textbf{Očekávaný výsledek} & \begin{tabular}[c]{@{}l@{}}Uživatel je přihlášen do webové aplikace. V menu v pravé\\ části se objeví jeho uživatelské jméno a na kartě dashboard\\ může procházet své konfigurace uložené v systému.\end{tabular} \\ \hline
\end{tabular}
\end{table}

\begin{table}[]
\caption{Testovací scénář č.2}
\label{test_2}
\begin{tabular}{| p{10em} | p{27.7em} |}
\hline
\textbf{ID}                 & WA\_ADD\_CONFIGURATION                                                                                                                                                                                                \\ \hline
\textbf{Jméno testování}    & Přidání konfigurace do webové aplikace                                                                                                                                                                                    \\ \hline
\textbf{Popis testu}        & \begin{tabular}[c]{@{}l@{}}1. Na kartě dashboard klikněte na tlačítko Create configuration\\ 2. Vyplňte Title a Body\\ 3. Vytvořte konfiguraci kliknutím na tlačítko Submit\end{tabular}                                  \\ \hline
\textbf{Očekávaný výsledek} & \begin{tabular}[c]{@{}l@{}}Vytvoří se nová konfigurace, která je přiřazena přihlášenému\\ uživateli. Tento uživatel vidí nově přidanou konfiguraci na\\ kartě dashboard a má možnost ji následně modifikovat.\end{tabular} \\ \hline
\end{tabular}
\end{table}

\begin{table}[]
\caption{Testovací scénář č.3}
\label{test_3}
\begin{tabular}{| p{10em} | p{27.7em} |}
\hline
\textbf{ID}                 & WA\_EDIT\_USER\_ACCOUNT                                                                                                                                                                                                              \\ \hline
\textbf{Jméno testování}    & Úprava uživatelského účtu                                                                                                                                                                                                        \\ \hline
\textbf{Popis testu}        & \begin{tabular}[c]{@{}l@{}}1. V pravé části menu klikněte na tlačítko User account\\ 2. V právě zobrazeném formuláři klikněte na tlačítko Edit User\\ 3. Editujte libovolné pole a potvrďte tlačítkem Save Changes.\end{tabular} \\ \hline
\textbf{Očekávaný výsledek} & \begin{tabular}[c]{@{}l@{}}Uživatelský účet je editován podle změněných textových polí.\\ Editace se projeví na kartě User account.\end{tabular}                                                                                 \\ \hline
\end{tabular}
\end{table}

\begin{table}[]
\caption{Testovací scénář č.4}
\label{test_4l}
\begin{tabular}{| p{10em} | p{27.7em} |}
\hline
\textbf{ID}                 & WA\_CHANGE\_USER\_PASSWORD                                                                                                                                                                                               \\ \hline
\textbf{Jméno testování}    & Změna hesla uživatele                                                                                                                                                                                                \\ \hline
\textbf{Popis testu}        & \begin{tabular}[c]{@{}l@{}}1. V pravé části menu klikněte na tlačítko Change password\\ 2. V právě zobrazeném formuláři vyplňte všechna pole.\\ 3. Po vyplnění potvrďte změny tlačítkem Change password\end{tabular} \\ \hline
\textbf{Očekávaný výsledek} & \begin{tabular}[c]{@{}l@{}}Po odhlášení právě přihlášeného uživatele je možné ho znovu\\ přihlásit pomocí zadání emailu a nového hesla.\end{tabular}                                                                 \\ \hline
\end{tabular}
\end{table}

\begin{table}[]

\caption{Testovací scénář č.5}
\label{test_5}
\begin{tabular}{| p{10em} | p{27.7em} |}
\hline
\textbf{ID} & DA\_CONNECT\_TO\_DEVICE                                                                                                                                                                                                                                                                                                                         \\ \hline
\textbf{Jméno testování}    & Připojení se k síťovému zařízení                                                                                                                                                                                                                                                                                                                \\ \hline
\textbf{Popis testu}        & \begin{tabular}[c]{@{}l@{}}1. Nastav parametry pro sériovou komunikaci pomocí výběru\\ nastavení v 5 výběrových seznamech v levé horní části aplikace.\\ 2. Klikni na tlačítko Connect.\\ 3. Klikni na právě aktivované tlačítko wake up! a probuď \\ zařízení.\\ 4. V levé části v okně Mail log se objeví hláška se jménem \\ zařízení.\end{tabular} \\ \hline
\textbf{Očekávaný výsledek} & \begin{tabular}[c]{@{}l@{}}Po vybrání parametrů pro sériové připojení proběhne spojení \\ se zařízením. Po probuzení zařízení se objeví v okně \textit{log} \\ informace o daném zařízení pro začátek zadávání příkazů.\end{tabular}                                                                                                                     \\ \hline
\end{tabular}

\end{table}

\begin{table}[]
\caption{Testovací scénář č.6}
\label{test_6}
\begin{tabular}{| p{10em} | p{27.7em} |}
\hline
\textbf{ID}                 & DA\_LOGIN\_TO\_DATABASE                                                                                                                                                                                             \\ \hline
\textbf{Jméno testování}    & Přihlášení uživatele a připojení se k databázi                                                                                                                                                                      \\ \hline
\textbf{Popis testu}        & \begin{tabular}[c]{@{}l@{}}1. Do pole email vyplň email uživatele a do pole password \\ heslo k danému účtu.\\ 2. Klikni na tlačítko Login.\end{tabular}                                                             \\ \hline
\textbf{Očekávaný výsledek} & \begin{tabular}[c]{@{}l@{}}Vyskočí okno s výsledkem stavu přihlášení. Pokud byly \\ vyplněny správné přihlašovací údaje, zobrazení se všechny \\ uživatelovi konfigurace v okně Loaded configurations.\end{tabular} \\ \hline
\end{tabular}
\end{table}

\begin{table}[]
\caption{Testovací scénář č.7}
\label{test_7}
\begin{tabular}{| p{10em} | p{27.7em} |}
\hline
\textbf{ID}                 & DA\_UPLOAD\_CONFIGURATION\_TO\_DEVICE                                                                                                                     \\ \hline
\textbf{Jméno testování}    & Nahrání konfigurace ze serveru do zařízení                                                                                                                \\ \hline
\textbf{Popis testu}        & \begin{tabular}[c]{@{}l@{}}1. V poli Loaded configurations kliknět vyberte kliknutím \\ konfiguraci.\\ 2. Klikněte na tlačítko Upload to device\end{tabular} \\ \hline
\textbf{Očekávaný výsledek} & \begin{tabular}[c]{@{}l@{}}Vybraná konfigurace je nahrána do zařízení. Průběh nahrávání \\ se zobrazí v poli Main Log.\end{tabular}                        \\ \hline
\end{tabular}
\end{table}

\begin{table}[]
\caption{Testovací scénář č.8}
\label{test_8}
\begin{tabular}{| p{10em} | p{27.7em} |}
\hline
\textbf{ID}                 & DA\_BACKUP\_CONFIGURATION\_TO\_SERVER                                                                                                                                                                                                                                        \\ \hline
\textbf{Jméno testování}    & Nahrání konfigurace ze zařízení na server                                                                                                                                                                                                                                    \\ \hline
\textbf{Popis testu}        & \begin{tabular}[c]{@{}l@{}}1. Do pole Conf title napiště název konfigurace\\ 2. Tlačítkem Backup to server potvrďte zálohování konfigurace.\end{tabular}                                                                                                                     \\ \hline
\textbf{Očekávaný výsledek} & \begin{tabular}[c]{@{}l@{}}Aktuální konfigurace ze zařízení je nahrána na server pod \\ zvoleným jménem.\\ Konfigurace je přiřazena přihlášenému uživateli v \textit{desktopové} \\ aplikaci.\\ V seznamu Loaded configurations se objeví nová konfigurace \\ na posledním místě.\end{tabular} \\ \hline
\end{tabular}
\end{table}


\chapter*{Závěr}

Výsledkem mé bakalářské práce je systém pro automatizované zálohování a obnovení konfigurací pro síťová zařízení, která jsou konfigurovatelná pomocí konzole. Systém splňuje všechny funkční i nefunkční požadavky definované v analýze této bakalářské práce. Systém disponuje možností správy uživatelů a konfigurací nebo zálohováním a obnovením konfigurací.

Webová část systému funguje v rámci webového prohlížeče a \textit{desktopová} část systému běží ve virtuálním prostředí Javy. Obě části systému jsou nezávislé na zařízení a operačním systému. Vytvořený systém je intuitivní, má jednoduché uživatelské rozhraní a přístup do aplikace vyžaduje ověření uživatele pomocí přihlášení do systému.

Navrhnutý systém slouží studentům Smíchovské střední průmyslové školy v rámci předmětu počítačové sítě. Studenti mají možnost pokračovat v uložené práci z předchozí hodiny v následujícím týdnu, popřípadě mají možnost si vytvořit konfiguraci před hodinou jako šablonu, na které mohou v nejbližší hodině pokračovat. Tento způsob zálohování a obnovení konfigurací je velmi přínosný pro zadání, které je možné zpracovat za více než jednu vyučovací hodinu.

Systém je možné rozšířit i do dalších Cisco akademií. Pro použití systému v laboratořích, které nejsou zaměřené pouze na Cisco zařízení, je nutné implementovat nezbytná rozšíření.\\

\textbf{Možnosti rozšíření bakalářské práce}

\begin{itemize}
	\item \textbf{Vyhledání konfigurace} - Systém umožní uživateli vyhledat konfiguraci podle klíčového slova v jejím názvu nebo v obsahu samotné konfigurace.
	\item \textbf{Seřazení konfigurací} - Systém umožní uživateli seřadit konfigurace podle zvoleného kritéria. Kritériem může být jméno konfigurace, časová značka
nahrání konfigurace na server, časová značka poslední modifikace konfigurace na serveru nebo vlastník konfigurace.	
	\item \textbf{GDPR} - Úprava systému pro plnou podporu požadavků vycházejících z GDPR.
	\item \textbf{Status uživatele} - Systém umožní rozlišovat aktivního a deaktivovaného uživatele. Uživatel s deaktivovaným uživatelským profilem se nebude moci přihlásit do systému.
	\item \textbf{Zálohování na FTP/TFPT server} - Systém umožní uživateli zálohovat konfiguraci na FTP/TFTP server pomocí nastavení z \textit{desktopové} aplikace.
	\item \textbf{Kopírování operačního systému pomocí Xmodemu} - Systém umožní uživateli nahrát nebo stáhnout ze zařízení soubor s příponou \textit{.bin}, který obsahuje operační systém síťového zařízení, pomocí protokolu Xmodem.
	\item \textbf{Správa síťových zařízení jiných značek než Cisco} - Systém umožní uživateli pracovat i s jinými zařízeními, které nejsou značky Cisco.
	\item \textbf{Verzování záloh} - Systém umožní uživateli verzovat jednotlivé zálohy podle počtu nahraných verzí k dané záloze.
	\item \textbf{Java applet ve webovém prohlížeči} - Systém bude možné spustit jako Java \textit{applet} ve webovém prohlížeči.
\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%% 
% Seznam literatury je v samostatnem souboru reference.bib & rfc.bib.
\bibliographystyle{csplainnat}

%bibliographystyle{plain}
%\bibliographystyle{psc}
{
\def\CS{$\cal C\kern-0.1667em\lower.5ex\hbox{$\cal S$}\kern-0.075em $}
\bibliography{reference,rfc}
}

%%%%%%%%%%%%%%%%%%%%%%%%%% 
% vše co následuje bude uvedeno v přílohách
\appendix	

\printnomenclature
\label{apx:zkratky}

\chapter{Obsah přiloženého CD}

\begin{figure}[h]
    \includegraphics[width=0.6 \textwidth]{figures/cd.png}
    \caption{Obsah přiloženého CD} 
    \label{img:cd}
\end{figure}

\chapter{Seznam zkratek}

\noindent
ASC - Academy Service Center \\ 
CCNA - Cisco Certified Network Associate \\
CLI - Command Line Interface \\
COM - Communication Port \\
EXEC - Executive \\
FTP - File Transfer Protocol \\
GUI - Graphical User Interface \\
HTML - HyperText Markup Language \\
HTTP - Hypertext Transfer Protocol \\
HW - Hardware \\
IDC - International Data Corporation \\
IOS - Internetwork Operating System \\
IP - Internet Protocol \\
IS - Information Systém \\
ISO/OSI - International Standards Organization/Open Systen Interconnection \\
IT - Information Technology  \\
ITC - Instructor Training Center \\
JAR - Java Archive \\
JDBC - Java Database Connectivity \\
JDK - Java Development Kit  \\
JRE - Java Runtime Environment \\
JSSC - Java Simple Serial Connector \\
MAC - Media Access Control \\
MIT - Massachusetts Institute of Technology \\
NTP - Network Time Protocol \\
NVRAM - Non-Volatile Random-Access Memory \\
PC - Personal Computer \\
PHP - Hypertext Preprocessor \\
RAM - Random-Access Memory \\
SCP - Secure Copy \\
SFTP - SSH File Transfer Protocol \\
SNMP - Simple Network Management Protocol \\
SW - Software \\
TFTP - Trivial File Transfer Protocol \\
UML - Unified Modelling Language \\
VLAN - Virtual Local Area Network \\

\chapter{Parametry síťových zařízení} \label{apx:parametry}

\begin{enumerate}
\item HW parametry
   	\begin{enumerate}
   	\item počet rozhraní a jejich rychlost
   	\item obsazenost přepínače 60 \% rozhraní
   	\item páteř sítě by měla být 10x rychlejší než rychlost přístupového rozhraní
   	\item čipová sada
   	\item provozní teplota
   	\item prašnost, vlhkost
   	\item redundantní zdroj napájení
   	\item podpora výrobce (možnost updatu firmwaru)
   	\item možnost stackování
	\end{enumerate}
\item Bezpečnost
	\begin{enumerate}
   	\item bezpečnost
   	\item 802.1x
   	\item ACL
   	\item MAC adresy
   	\item IP-MAC binding
   	\item blokace rozhraní
	\end{enumerate}
\item Vliv na topologii sítě
	\begin{enumerate}
   	\item VLAN
   	\item LACP (Link Agregation Control Protocol) - redundantní cesty
   	\item combo porty
   	\item STA (Spanning Tree Algorithm)
   	\item PoE
	\end{enumerate}
\item Vliv na kvalitu služeb
	\begin{enumerate}
   	\item IGMP (Internet Group Management Protocol) - multicast komunikace
   	\item předání DHCP dotazu ze sítě bez DHCP do sítě s DHCP
   	\item MVR (Multicast VLAN Registration) - šíření multicastu mezi více VLANy
   	\item QoS
	\end{enumerate}
\item Podpora 3. vrstvy ISO/OSI modelu
	\begin{enumerate}
   	\item dynamické směrovací protokoly (OSPF. RIP, EIGRP)
   	\item OSPF
   	\item MVR (Multicast VLAN Registration) - šíření multicastu mezi více VLANy
   	\item QoS
	\end{enumerate}
\end{enumerate}

\chapter{Protokoly pro vzdálené kopírování dat}  \label{apx:protokoly}

\section{FTP}
FTP (File Transfer Protocol) je protocol definovaný v RFC 114 \cite{rfc114}. Jeho aktualizace je zanesená později v RFC 959 \cite{rfc959}. FTP protokol používá pro přenos dat dva kanály známé jako příkazový kanál (port 21) a datový kanál (port 20).
Přenos dat pomocí tohoto protokolu je nešifrovaný a hrozí zde potencionální riziko odposlechnutí při útoku typu \textit{man-in-the-middle} používající \textit{ARP poisoning} a \textit{packet sniffer} \cite{file_transfer}. Tento protokol se dnes používá velmi zřídka.

\section{FTPS}
FTPS (File Transfer Protocol Secure) je aktualizovaná verze protokolu FTP pro zabezpečený přenos pomocí SSL (Secure Sockets Layer) šifrování. Doplnění o šifrování přenosu je definováno v RFC 2228 \cite{rfc2228}.
Šifrování přenosu u protokolu FTPS rozlišujeme na implicitní a explicitní \cite{file_transfer}.

\subsection{FTPS s implicitním šifrováním}
V tomto případě je SSL relace navázána před jakýmkoliv zasláním dat mezi klientem a serverem. Jakýkoliv pokus o nešifrovanou komunikaci od klienta je serverem zahozen. Pro FTPS s impicitním šifrováním pomocí SSL je využíván port 990 \cite{file_transfer}.

\subsection{FTPS s explicitním šifrováním}
U explicitního šifrování pomocí SSL se nejprve klient a server musí dohodnout, jakou úroveň šifrování budou používat. Výhodou je, že na stejném portu lze použít nešifrované spojení stejně jako u FTP, tak šifrované spojení FTPS.
Klient jako první vytvoří nešifrované spojení směrem na server a zašle požadavek pro přepnutí na komunikaci šifrovanou pomocí SSL. Jakákoliv další komunikace zaslaná na port 21 je následně automaticky šifrována pomocí SSL \cite{file_transfer}.

\section{TFTP}

TFTP (Trivial File Transfer Protocol) je zjednodušená verze protokolu FTP, která se používá v situacích, kdy je FTP protokol velmi komplikovaný. Typickým příkladem je zavádění operačního systému ze sítě \cite{tftp}.

TFTP funguje nad nespojovaným protokolem UDP (User Datagram Protocol), proto musí obsahovat vlastní řízení toku komunikace. TFTP používá pro svou komunikaci port 69.
Protokol TFTP neumožňuje zadání uživatelského jména ani hesla. Maximální velikost přenášeného souboru je 32 MB. Kvůli nedostatečnému zabezpečení není vhodné ho používat k přenosům dat v internetu \cite{tftp2}.

Syntaxe použití TFTP je následující:

\textbf{TFTP [-i] cíl [GET | PUT] zdroj [umístění]}


\section{SCP}

SCP (Secure Copy) umožňuje přenášet data v síti mezi dvěma počítači/servery. Data jsou při přenosu šifrována pomocí SSH. Ve většině případů je SCP nahrazován komplexnějším protokolem SFTP.

Syntaxe je následující:

\textbf{scp} \textit{zdrojový-soubor uživatel@jméno-počítače:adresář/cílový-soubor}


\section{SFTP}
SFTP (Secure File Transfer Protocol) využívá pro svou komunikaci pouze port 22, po kterém zasílá jak řídící signály, tak samotná data, která přenáší. Veškerá komunikace je přenášena pomocí šifrování SSL.
Tento protokol se nejčastěji využívá pro zabezpečené připojení ke konzolovým účtům a k ovládání vzdálených virtuálních serverů. Výhodou tohoto protokolu je možnost použití privátního a veřejného klíče \cite{file_transfer}.

\section{RCP}

RCP (Remote Copy) protokol je možné použít pro kopírování souborů nebo adresářů z lokálního systému na vzdálený nebo mezi dvěma vzdálenými systémy. Pro kopírování souborů je nutné mít oprávnění pro zápis nebo modifikaci souborů nebo adresářů \cite{rcp}.

\textbf{rcp [-r]} \textit{zdrojový-soubor|adresář cílový-soubor|adresář}

\section{HTTPS, HTTPS}

HTTP/S (Hypertext Transfer Protocol/Securel) jsou dva protokoly, které je možné využít pro konfiguraci síťového zařízení a pro přenos dat ze serveru na síťové zařízení a opačně. Tyto protokoly jsou ve většině případů vypínány z důvodu nepotřebnosti pro rychlou a efektivní konfiguraci, proto se jimi dál zabývat nebudu.


\chapter {Modely případů užití} \label{apx:use_cases}

\section{Model případů užití 1}


\begin{figure}[h]
    \centering
    \includegraphics[width=0.7 \textwidth]{figures/uc1.png}
    \caption{Funkcionality běžného uživatele v \textit{desktopové} aplikaci} 
\end{figure}

\newpage

\section {Model případů užití 2}

\begin{figure}[h]
    \centering
    \includegraphics[width=0.7 \textwidth]{figures/uc2.png}
    \caption{Funkcionality běžného uživatele ve webové aplikaci} 
\end{figure}

\newpage

\section {Model případů užití 3}

\begin{figure}[h]
    \centering
    \includegraphics[width=0.7 \textwidth]{figures/uc3.png}
    \caption{Správa uživatelů ve webové aplikaci} 
\end{figure}




\end{document}