Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Administrace OS Windows 1. Základní koncepce a pojmy systému Windows, historie a vývoj OS. 1
(Pre)Historie 1981 DOS 1985 Windows 1.0 (a.k.a. Interface Manager) 1987 Windows 2.0 Windows/286, Windows 386 1990 Windows 3.0 OS/2 2
Historie 1992 - Windows 3.1, Windows 3.11 1992 Windows NT 3.1 1995 Windows 95 (5 editions) 1996 Windows NT 4.0 (4 editions) 1998 Windows 98 (2 editions) 3
Nedávná minulost Windows 2000 (5 editions) Windows ME Windows XP (15 editions) Windows Fundamentals for Legacy PCs WinPE 1.0 4
Přítomnost Windows Server 2003 (5 editions) Windows Vista (8 editions) Windows 2008 WinPE 2.0, MS DART 5
Summarum Pro detailnější historii: http://www.levenez.com/windows/history.html#21 6
Verze Major a minor verze (1.0 -> 6.0) Windows 9x a NT jádro Marketing označení (XP!= 2001, 1995!= Chicago) Přeskakování verzí (Windows NT 3.1) Rozdělení Home\Business edicí (až od Windows XP) 7
Orientace Centralizace managementu Objektově orientováno (.NET) Otevřeno pro 3 rd parties Virtualizace SoftGrid virtualizace aplikací (http://www.microsoft.com/systemcenter/softgrid/evaluation/virtualization.mspx) í Hypervisor - součást Windows 2008 (http://www.microsoft.com/windowsserver2008/en/us/virtualization-consolidation.aspx) Shims - řešení kompatibility existujících aplikací Vista (http://www.microsoft.com/downloads/details.aspx?familyid=f3b46ba6-0ef2-47db-aaec-ed786109e030&displaylang=en) 8
Běžné nasazení Windows Intranet server Directory services Workstations Terminal servers (Linux\WinCE client image) Messaging server Nedoporučuje se DMZ Proxy 9
Diskuse 10
Windows scripting (cmd) cmd.exe command interpreter - MS Windows NT/2000/XP dokumentace na http://technet.microsoft.com/cscz/library/bb491071(en-us).aspx command extensions (default) /E:ON, file and directory name completion /F:ON delayed environment variable expansion /V:ON 11
Poměnné Proměnné výpis proměnných (set) systémové proměnné spec. proměnné (cd, date, time, random, errorlevel) parametry (%0, %1 %*), příkaz shift Manipulace s proměnnými set (/a) proměnná = výraz %var% náhrada hodnotou při vstupu na řádek nebo do víceřádkové struktury!var! náhrada hodnotou těsně před použitím (delayed variable expansion) 12
Stdin, stderr, stdout, roury,filtry, spec. soubory Přesměrování (> resp >>) Vstup: command < file Výstup: command > file Chybový výstup: command 2 > file Kombinace: command >file 2>&1 Roura ( ) filtrování Filtry Command1 command2 command3 sort find more 13
Stdin, stderr, stdout, roury,filtry, spec. soubory Spec. soubory nul (černá díra) con (konzole) prn (tiskárna) com1 (ser. port) 14
Nejdůležitější příkazy rem (::) :label goto pause poznámka v kódu Rem toto je poznámka návěstí pro skoky v kódu :loop nepodmíněný skok goto loop ukončení scriptu: goto :eof resp. exit /b [errorlevel] vhodné pro debugging 15
Nejdůležitější příkazy Práce se soubory cd (change directory) cd /d d:\temp copy, xcopy copy file1+file2+file3 file del del *.* rmdir rmdir /s /q %temp% 16
Nejdůležitější příkazy Set manipulace s proměnnými podřetězce: set rok=%date:~-4% mat. operace: set /a rok=%rok% + 1 náhrada textu : set var=%var:old=new% (echo %date:2008=2009%) interaktivně: SET /P var=vyzva (set /p x=zadej x: && echo!x!) 17
Nejdůležitější příkazy if Podmíněný příkaz IF condition commands IF condition (commands) ELSE (commands) Podmínky: [NOT] EXIST filename/dirname test (ne)existence souboru nebo adresáře [NOT] DEFINED var test existence proměnné [NOT] ERRORLEVEL number test návratové hodnoty (př. po EXIT /B errcode) [/I] [NOT] string1==string2 test shody řetězců (volitelně velká=malá) [/I] [NOT] string1 op string2 generický (numerický, jinak řetězcový) test shody op může být EQU, NEQ, LSS, LEQ, GTR, GEQ 18
Nejdůležitější příkazy for Cyklus zpracovávající řádky souboru, stdout spuštěného programu, adresářovou strukturu výčtový cyklus (default): FOR %v IN (set) DO commands aritmetický cyklus (/L): FOR /L %v IN (start step end) DO commands výčtový cyklus pro soubory (default) a adresáře (/D): FOR %f IN (fileset) DO commands resp. FOR /D %d IN (dir-set) DO commands cyklus pro analýzu souborů nebo výstupu příkazu (/F): FOR /F ["options"] %a IN (file-set nebo "string" nebo 'command') DO commands kde options jsou SKIP=n pro vynechání prvních n řádků EOL=c pro nastavení znaku konce řádku DELIMS=xxx pro nastavení oddělovačů (default mezera a tab) TOKENS=x,y,m n[*] pro výběr položek na řádku, značených pak %a, %b atd. 19
Příklady set, if, goto Pro zálohy chceme vytvářet adresář RRRR-MM-DD. Pokud adresář existujte přidáme k jeho názvu -1 pokud existuje i tento zvětšíme na -2 atd. set d=%date:~-4%-%date:~6,2%-%date:~3,2% set directory=%d% if exist %directory% goto ex goto end rem adresar existuje :ex set num=0 :loop set directory=%d%-%num% if not exist %directory% goto end set /a num=%num%+1 goto loop :end echo %directory% mkdir %directory% 20
Příklady přík. parametry, for Jednoduchý head (výpis prvních n řádků souboru) pozor, používá delayed variable expansion nutno cmd /v @echo off set filename=%1 set head=%2 set cnt=0 for /f "delims=" %%i in (%filename%) do ( set /a cnt=!cnt!+1 if!cnt! LEQ %head% ( echo %%i ) else ( goto end ) ) :end 21
Příklady find, errorlevel, přesměrování Klasický skript pro testování dostupnosti serveru (ping). Do souboru log1.txt logujeme datum, čas, výsledek OK/ERROR a v případě nedostupnosti uložíme do souboru log2.txt i výsledek tracert. Pozor, ping nevrací korektně errorlevel 0 pokud je úspěšný použit filtr find. @echo off set host=cs.felk.cvut.cz ping %host% find /i "TTL if errorlevel 1 goto err echo %date% ; %time% ; OK >>log.txt goto end :err echo %date% ; %time% ; ERROR >>log.txt echo %date% ; %time% >>log2.txt tracert %host% >>log2.txt echo -------------------------------------------------- >> log2.txt :end 22
Příklady for, if, set Skript pro vypsání obsahu souboru pozpátku pro tazatele z přednášky. Pozor, for havaruje na skip=0, proto je první řádek původního souboru zpracován extra. Také neřeší prázdné řádky. @echo off set lc=0 set fname=%1 FOR /F "tokens=*" %%i in (%fname%) do set /a lc += 1 :loop set /a lc -= 1 rem skip (mensi nebo) rovno 0 if %lc% leq 0 goto endloop FOR /F "skip=%lc% tokens=*" %%i in (%fname%) do ( echo %%i goto loop ) :endloop FOR /F "tokens=*" %%i in (%fname%) do ( echo %%i goto :end ) :end 23
Příklady for, if, set To samé s prázdnými řádky děkuji uživateli <foxidrive> za fígl s očíslováním: @echo off set lc=0 set fname=%1 rem finta s cislovanim radku - pak se z prazdnych stane [cislo] for /f %%i in ('find /n /v ""^<%fname%') do set /a lc += 1 :loop set /a lc -= 1 rem skip (mensi nebo) rovno 0 if %lc% leq 0 goto endloop for /f "skip=%lc% tokens=1* delims=]" %%i in ('find /n /v ""^<%fname%') do ( IF.%%j.==.. ( echo. ) ELSE ( echo %%j ) goto loop ) :endloop for /f "tokens=1* delims=]" %%i in ('find /n /v ""^<%fname%') do ( IF.%%j.==.. ( echo. ) ELSE ( echo %%j ) goto end ) :end 24
Zdroje: Tato přednáška vychází ze zdrojů programu Windows Academic Program : http://www.microsoft.com/resources/sharedsource/licen sing/windowsacademic.mspx Doporučené odkazy: http://www.microsoft.com/technet/sysinternals/default.mspx http://www.microsoft.com/reskit news://list.vyvojar.cz/cz.vyvojar.list.win 25
Diskuse 26