Smitka development

Automatické nastavení wifi

Tento článek napsal dexter
Někdy se může hodit nastavit připojení k wifi pomocí příkazové řádky. Proto jsem se rozhodl napsat step-by-step návod, jak na to vytvořit skript.

Export síťového profilu

Nejdříve je nutné si vyexportovat hotový wifi profil (který předtím ručně naklikáme v GUI) do XML souboru. To nám od verze Windows Vista umožňuje utilita netsh. Vřele doporučuji si pro každou verzi Windows vyexportovat vlastní XML soubor.
netsh wlan export profile name="nazev-profilu" folder="C:adresar-kam-se-to-ulozi" Trochu komlikované to je s Windows XP, kde si profil nemůžeme vyexportovat kvůli neexistenci utilitky netsh, takže se musíme spolehnout na XML z některého novějšího systému. Nejlépe se mi osvědčil (i když ne vždy funkční) profil z Windows Vista. Je někdy nutné trochu experimentovat, než najdeme profil, který půjde ve Windows XP naimportovat a bude fungovat.

Zjištění verze Windows

Verzi systému Windows zjišťujeme pomocí příkazu ver a porovnáním s regulárním výrazem.
ver | findstr /r "[Verze 5.1." > nul && set XP=yes ver | findstr /r "[Verze 6.0." > nul && set Vista=yes ver | findstr /r "[Verze 6.1." > nul && set Win7=yesNásledně můžeme psát ve skriptu bloky, které budou rozlišovány podle verze OS, tedy například takto:
if defined XP ( certmgr ... wifi_config ... ) if defined Vista ( certmgr ... netsh ... )

Import kořenového certifikátu

Pokud má naše wifi síť ověřování pomocí certifikátu, pravděpodobně budeme chtít provést jeho import. Na to slouží utilitka certmgr.exe, která je součástí Windows SDK. Ujistěte se, že používáte certmgr.exe a ne certmgr.msc.

Windows XP

Pro tento starší operační systém se kořenový certifikát importuje pro celý stroj, tedy příkaz by mohl vypadat nějak takto:
certmgr.exe -add -c rootCA.cer -r localMachine root

Windows Vista a 7

U novějších OS se kořenové certifikáty importují pro jednotlivé uživatele, jinak s nimi mohou nastat problémy.
certmgr.exe -add -c rootCA.cer -r currentUser root

Import síťového profilu

Windows XP

U Windows XP je import síťového profilu zkomplikován tím, že v utilitě netsh není položka wlan. Proto je nutné použít aplikaci třetí strany. Jednu z nich najdeme například zde a také se tu dozvíme, které záplaty a aktualizace je nutné v systému mít, aby nám import fungoval. Použijeme exportované XML ze systému Windows Vista.
wifi_config.exe -add wifi-xp-vista.xml

Windows Vista a 7

U těchto operačních systému je import jednodušší, protože v nabídce utility netsh již existuje položka wlan.
netsh wlan add profile wifi-7.xml

Volitelné

Detekce architektury

Utilita certmgr.exe pravděpodobně funguje i v 64bitových operačních systémech. Nicméně existuje i certmgr64.exe, který je pouze pro 64bity. Příklad, jak rozlišit certmgr podle architektury:
echo %processor_architecture% | findstr 64>nul && (set certmgr=certmgr64.exe) || (set certmgr=certmgr.exe) V některých zdrojích můžeme najít, že správnější způsob jak detekovat architekturu je podle existence složky SySWOW64. Tedy nějak takto:
IF /I exist %SYSTEMROOT%SysWOW64 set certmgr=certmgr64.exe ELSE set certmgr=certmgr.exeNyní ve skriptu použijeme místo certmgr.exe proměnnou %certmgr%, takže například:
%certmgr% -add -c rootCA.cer -r currentUser root

Nastavení IP adresy z DHCP

Pokud chceme, aby skript zrušil připadně staticky nastavenou IP adresu a nastavil načítání adresy z DHCP, použijeme následující sadu příkazů:
netsh interface ip set address name="Bezdrátové připojení k síti" source=dhcp netsh interface ip set dns name="Bezdrátové připojení k síti" source=dhcp register=PRIMARY netsh interface ip set wins name="Bezdrátové připojení k síti" source=dhcp Je dost pravděpodobné, že v některých verzích OS nám nebudou ty příkazy fungovat kvůli diakritice.

Vytvoření jednoho .exe souboru

Nyní máme vyexportovaný síťový profil, staženou utilitu certmgr.exe, případně wifi_config.exe a napsaný skript na kompletní nastavení. Je to poměrně velké množství souborů, a proto je dobré z toho vytvořit archív. My ale půjdeme ještě dál a vytvoříme archív, který do TEMPu rozbalí všechny potřebné soubory a spustí hlavní skript.

Co je k tomu potřeba

Budeme k tomu potřebovat konzolový 7zip, tj. 7z.exe a soubor pro vytváření SFX (samorozbalovacích) archívů 7zCon.sfx.

Vytvoření konfiguračního souboru pro 7zip

Samorozbalovacímu 7zip archívu je možné dát konfigurák, který před a po rozbalení něco vykoná. Příklad:
;!@Install@!UTF-8! Title="Automatické nastavení bezdrátové sítě" BeginPrompt="Na vašem počítači bude vytvořen profil bezdrátové sítě. Chcete pokračovat?" ExecuteFile="set_wifi.cmd" ;!@InstallEnd@! Tyto řádky uložíme například do souboru config.txt.

Vytvoření samotného 7zip archívu

Archív vytvoříme příkazem:
7z.exe a -mx=1 -xr@exclude set_wifi.7z * kde soubor exclude obsahuje seznam souborů, které ve výsledném archívu nebudou (jeden na řádek), například:
config.txt exclude 7z.exe 7zCon.sfx wifi_automat.exe

Vytvoření spustitelného souboru

Nyní máme 7z archív, poslední, co nám zbývá pro maximální komfort uživatele je přetvořit ho do spustitelné podoby. Na to použijeme Windowsí příkaz copy se správnými parametry, například:
copy /b 7zCon.sfx + config.txt + set_wifi.7z wifi_automat.exe Duležité je dodržet pořadí jednotlivých souborů, tedy první soubor 7zCon.sfx, další konfiguráční soubor a nakonec samotný 7zip archív. Posledním parametrem je název konečného spustitelného souboru.
linkuj.czjagg.czpošli na vybrali.sme.skdeliciousTopČlánky.cz
Nahoru HOME PC•Elektro Programování Blog Autor Lynt Speciální backlink: Šulislav
© 2006 Smitka development