Windows ja wifi

From ICO wiki
Jump to navigationJump to search

Sissejuhatus

Referaadi eesmärk on teha lühikokkuvõte Wifi ühenduse kasutamisest ja konfigureerimiest Windowsis. Täpsemalt käsitlen netsh (wlan) utiliiti, seadistamise võimalustest graafiliselt, veidi Windows PowerShelli ning juttu tuleb ka nende ajaloost. Näited põhinevad Windows7-l.

Autor

  • Martin Jõgi
  • Grupp A21

Ülevaade

Netsh wlan

Netsh ehk Network Shell on Windowsi käsurea utiliit, mis on saadaval olnud juba mõnda aega Windows 2000, Windows Server 2003 ja Windows XP -s. See on võimas vahend, millega seadistada, hallata ja teha tõrkeotsinguid teatud võrgu komponentidele. Windows Server 2008 ja Vista jaoks tegi Microsoft mõningaid parandusi. Nimelt lisati netsh utiliidile wlan käskude võimalused. Nüüdseks võimaldab netsh hallata wifi adaptereid, profiile ja wifi ühendust.

Windows PowerShell

Windows powershell (2.0) on skriptimiskeel ja käsurea keskkond, mis on integreeritud .NET Framework’ga. See on lisatud Windows 7 ja Windows Server 2008 R2 sisse. Powershell 2.0 võimaldab kaughaldust kõigile serveritele ja rakendustele, haldust on võimalik teha läbi Powershelli. Näiteks Exchange 2010, Windows Server 2008 R2(ning uuemad Microsofti server-tooted). Powershell 2.0-s ei pea oma masinasse enam rakenduste haldusliidest installima. Halduseks vajalikud käsud käitatakse serveril, käsurida käivitatakse aga masinas. Powershellis pole vaja leida, paigaldada ega tundma õppida uusi tööriistu või käske - kõik on lihtsalt avastatav. Windows powershellil on paindlik väljund ehk ühe käsu väljund võib olla teise käsu sisendiks (nagu bash shellis). Windows Powershell vähendab tulemuse saavutamise aega säilitades ühtlase keele. (Eneta, 2010)

Wifi võrguliidese käivitamine ja konfigureerimine

Võrguliidese käivitamine cmd.exe käsurealt:

 netsh interface set interface "Wireless Network Connection" enable

või liidese keelamine:

 netsh interface set interface "Wireless Network Connection" disable

või wifi võrguliidese käivitamine Control Panel\Network and Internet\Network Connections -s graafiliselt (wifi ühenduse peale parem klahv ning enable):

Näide:


Wifi ühenduse konfigureerimine graafiliselt

Control Panel\Network and Internet\Network Connections -s parem klahv wifi ühenduse peale, sealt "Properties". IPv4 protokolli seadistamiseks valida "Properties".

Näide:
  • Obtain an IP address automatically - IP seadistatakse automaatselt.
  • Use the following IP address - IP, võrgumaks ja vaikelüüs seadistatakse manuaalselt (staatiliselt).


Wifi ühenduse konfigureerimine käsurealt

Muudame Wifi võrguliidese ip aadressi, võrgumaski ja vaikelüüsi:

 netsh interface ip set address "Wireless Network Connection" static ip võrgumask vaikelüüs
 netsh interface ip set address "Wireless Network Connection" static 192.168.1.26 255.255.255.0 192.168.1.1

Dünaamilise adresseerimise määramine:

 netsh interface ip set address "Wireless Network Connection" dhcp

Netsh wlan käsud ja näited

Kõikie käskude vaatamiseks kirjuta cmd.exe -s netsh wlan

Näide:

Saadaval olevate võrguliideste kindlaks tegemine

Wifi (wlan) võrguliidese olemasolu vaatamine:

 netsh wlan show interfaces

või

 ipconfig /all

kus tuleks vaadata alates reast "Wireless LAN adapter Wireless Network Connection:"

Wifi võrguliidese võimete kindlaks tegemine

Kui tahame teada installitud wifi draivite versiooni või mis raadio tüübid on selles draiveris toetatud jms, siis:

  • Wifi draiverite informatsiooni vaatamine:
 netsh wlan show drivers

Wifi sätete vaatamine

 netsh wlan show settings

Wifi profiilid

Arvutisse salvestatud wifi võrkude profiilide vaatamine:

 netsh wlan show profiles

mille väljund on näiteks järgmine:

C:\Users\Matzu>netsh wlan show profiles

Profiles on interface Wireless Network Connection:

Group policy profiles (read only)
---------------------------------
    <None>

User profiles
-------------
    All User Profile     : Testik
    All User Profile     : Matzu
    All User Profile     : itcollege
    All User Profile     : ThomsonAC7674

Kindla wifi profiili informatsiooni vaatamine:

netsh wlan show profiles <profiilinimi>

Näiteks vaatame itcollege wifi profiili:

C:\Users\Matzu>netsh wlan show profiles itcollege

Profile itcollege on interface Wireless Network Connection:
=======================================================================

Applied: All User Profile

Profile information
-------------------
    Version                : 1
    Type                   : Wireless LAN
    Name                   : itcollege
    Control options        :
        Connection mode    : Connect automatically
        Network broadcast  : Connect only if this network is broadcasting
        AutoSwitch         : Do not switch to other networks

Connectivity settings
---------------------
    Number of SSIDs        : 1
    SSID name              : "itcollege"
    Network type           : Infrastructure
    Radio type             : [ Any Radio Type ]
    Vendor extension          : Not present

Security settings
-----------------
    Authentication         : Open
    Cipher                 : None
    Security key           : Absent
    Key Index              : 1

Mõnikord on kasulik wifi profiilid xml faili eksportida. Käsk selleks:

 netsh wlan export profile folder=asukohtkuhusalvestame name=Profiilinimi

ja käsk profiili importimiseks:

 netsh wlan add profile filename=”failinimi.xml”

Wifi võrku ühendamine

 netsh wlan connect name="Wifivõrgunimi(SSID)"

näiteks:

 netsh wlan connect name="itcollege"
 Connection request was completed successfully.

Wifi võrgust väljumine

 netsh wlan disconnect name="Wifivõrgunimi(SSID)"

Wifi võrkude otsimine

 netsh wlan show networks

ja nende täpsemate andmete vaatamine (signaali tugevus, raadio tüüp, kanalid jne):

 netsh wlan show networks mode=bssid

Wifi võrgu jälgimine

Kui wifi ühendus tihti katkeb või on muud probleemid wifi võrguga, siis on hea mõte genereerida raport, selleks on käsk:

 netsh wlan set tracing mode={yes|no|persistent}

kus yes - genereerib raporti, kuid peale süsteemi taaskäivitamist läheb uuesti 'no' peale. Persistent - Wifi ühendust jälgitakse koguaeg. Raportit on võimalik näha Windows performance monitor'is.

Wifi ühenduste filtreerimine

Mõnikord on kasulik kasutajate eest wifi võrgud ära blokkida või peita. Selleks kasutatakse käsku

 netsh wlan add filter

Näiteks:

 netsh wlan add filter permission=block ssid=sarvik networktype=infrastructure

millega keeletakse juurdepääs võrku "sarvik"

Et keelatud "sarvik" võrku ei kuvataks "Connect to a Network" dialoogis, kasuta käsku
 netsh wlan set blockednetworks display=hide
Näide:
Et keelatud "sarvik" võrku kuvatakse "Connect to a Network" dialoogis, kasuta käsku
 netsh wlan set blockednetworks display=show
Näide:

Keelu maha võtmine:

 netsh wlan add delete permission=block ssid=sarvik networktype=infrastructure

Veel võimalusi:

 netsh wlan add filter permission={allow|block|denyall} ssid=wifivõrgunimi networktype={infrastructure|adhoc}

Filtrite vaatamine:

 netsh wlan show filters

Kasulik oleks filtrite konfigureerimise fail eksportida, et seda vajadusel hiljem kasutada (kasvõi mujal masinas):

 netsh wlan dump >wlanconf.txt

Konfigureerimise faili käivitamine:

 netsh exec wlanconf.txt

Windows PowerShell ja Wifi

Kuna Windows Powershellis on samuti palju võimalusi wifi-ga "mängimiseks" ning skriptimiseks, siis toon näiteid ka sealt:

Kogu Wifi adapteri andmete vaatamine
  get-wmiobject -class win32_networkadapter -namespace root\CIMV2 | where-object {$_.Name -match "Wireless"}

Veel:

  Get-WmiObject -Class Win32_NetworkAdapter -Filter "Name LIKE '%wireless%'"
Näide:

Powershelliga skriptimine

Oletame, et meil on vaja skripti, mis 'reset'ks Wifi adapteri.

Paneme kogu sisu .ps1 faili ja avame selle Powershellis (./failinimi.ps1)

 #Teeme muutuja $wifi, mille väärtuseks on "Wifi adapter"
 $wifi = Get-WmiObject -Class Win32_NetworkAdapter -Filter "Name LIKE '%wireless%'"
 #Lülitame wifi adapteri välja
 $wifi.Disable()
 #Lülitame wifi adapteri sisse
 $wifi.Enable()

Et paremini aru saada, siis peaks Win23 klassid selgeks tegema, täpsemalt ei hakka neid siin seletama.


Windows Powershelli skript, mis otsib Wifi võrke ning need genereeritakse tabelisse. Tabel näeb välja selline:

BSSID Channel Signal Encryption Authentication SSID

00:21:29:6d:2a:3a 11 18% CCMP WPA2-Personal sarvik

PARAM ($ifname = "")

# Windows Vista/2008/7
if  ((gwmi win32_operatingsystem).Version.Split(".")[0] -lt 6) {
	throw "This script works on Windows Vista or higher."
}
if ((gsv "wlansvc").Status -ne "Running" ) {
	throw "WLAN AutoConfig service must be running."
}
$GLOBAL:ActiveNetworks = @();
$CurrentIfName = "";	
$n = -1;
$iftest = $false;

netsh wlan show network mode=bssid | % {
	if ( $_ -match "Interface") {
		$CurrentIfName = [regex]::match($_.Replace("Interface name : ","")
			                            ,"\w{1,}").ToString();
	    if (($CurrentIfName.ToLower() -eq $ifname.ToLower()) -or ($ifname.length -eq 0)) {
		    $iftest=$true;
		} else { $iftest=$false }
	}	 
	
	$buf = [regex]::replace($_,"[ ]","");
	if ([regex]::IsMatch($buf,"^SSID\d{1,}(.)*") -and $iftest) {
	   	$item = "" | Select-Object SSID,NetType,Auth,Encryption,BSSID,Signal,Radiotype,Channel;
		$n+=1;
       	$item.SSID = [regex]::Replace($buf,"^SSID\d{1,}:","");
		$GLOBAL:ActiveNetworks+=$item;
	}
  	if ([regex]::IsMatch($buf,"Networktype") -and $iftest) {
	   	$GLOBAL:ActiveNetworks[$n].NetType=$buf.Replace("Networktype:","");
	}
	if ([regex]::IsMatch($buf,"Authentication") -and $iftest) {
	   	$GLOBAL:ActiveNetworks[$n].Auth=$buf.Replace("Authentication:","");
	}
	if ([regex]::IsMatch($buf,"Encryption") -and $iftest) {
	   	$GLOBAL:ActiveNetworks[$n].Encryption=$buf.Replace("Encryption:","");
	 	}
        if ([regex]::IsMatch($buf,"BSSID1") -and $iftest) {
	   	$GLOBAL:ActiveNetworks[$n].BSSID=$buf.Replace("BSSID1:","");
	}
	if ([regex]::IsMatch($buf,"Signal") -and $iftest) {
	   	$GLOBAL:ActiveNetworks[$n].Signal=$buf.Replace("Signal:","");
	}
	if ([regex]::IsMatch($buf,"Radiotype") -and $iftest) {
	   	$GLOBAL:ActiveNetworks[$n].Radiotype=$buf.Replace("Radiotype:","");
	}
	if ([regex]::IsMatch($buf,"Channel") -and $iftest) {
	  	$GLOBAL:ActiveNetworks[$n].Channel=$buf.Replace("Channel:","");
	}
}
if ( ($CurrentIfName.ToLower() -eq $ifname.ToLower()) -or ($ifname.length -eq 0) ) {
	write-host -ForegroundColor Yellow "`nInterface: "$CurrentIfName;
	if (($GLOBAL:ActiveNetworks.length -gt 0)) {
   		$GLOBAL:ActiveNetworks | Sort-Object Signal -Descending | 
			ft @{Label = "BSSID"; Expression={$_.BSSID };width=18},
               @{Label = "Channel"; Expression={$_.Channel};width=8},
			   @{Label = "Signal"; Expression={$_.Signal};width=7},
			   @{Label = "Encryption"; Expression={$_.Encryption};width=11},
   			   @{Label = "Authentication"; Expression={$_.Auth};width=15},
			   SSID
	} else {
	   Write-host "`n No active networks found.`n";
	}
} else {
  Write-host -ForegroundColor Red "`n Could not find interface: "$ifname"`n";
}

(PowerShell Code Repository, 2010)

Ajalugu

Netsh wlan

Netsh wlan kasutamise võimalus tuli alates Windows Vistast. Nüüd on see samuti olemas Windows 7-s.

Powerhsell

Igal avaldatud Microsoft DOS ja Microsoft Windows’i versioonil personaalarvutitele on kaasas ka käsurea liidese tööriist. Nendeks on COMMAND.COM (installatsioonides, mis tuginevad MS-DOS’ile, kaasa arvatud Windows 9x) ja cmd.exe (Windows NT perekonna operatsioonisüsteemides). Kuid need on tavalised käsurea tõlgendajad, mis sisaldavad ainult väikese osa põhilisi käske. Muudeks eesmärkideks tuleb hankida eraldi konsool (taotlus), mis tugineks nendel shellidel. Need sisaldavad muuhulgas ka skriptimise keelt (komplektfailid), mida on võimalik kasutada erinevate käskude automatiseerimiseks. Kuid neid ei saa kasutada kõikide GUI funktsioonide automatiseerimiseks, osalt seepärast, et vastavates toimingutes on käsurea vasted läbi graafilise liidese piiratud ja skriptimise keel on elementaarne, ennetades kompleks-skriptide loomist saadavate funktsioonide koostamisega. Windows Server 2003 versioonis, oli olukord paranenud, kuid skriptimistugi oli siiski veel ebarahuldav.

Microsoft üritas tegeleda mõnede puudustega tutvustades 1998. aastal Windows 98-ga Windows Script Host’I, selle käsurida baseerus võõrustajal: cscript.exe. See ühendub Active Script mootoriga ja lubab skripte kirjutada sobivates keeltes, näiteks Jscript ja VBScript, võimendades APIs avatud rakendused COM kaudu. Ometigi on ka sellel omad puudused. See ei ole shelliga ühendatud, selle dokumentatsioon ei ole eriti ligipääsetav ning see omandas kiiresti haavatava süsteemi maine, pärast seda, kui mitmed kõrge profiiliga arvutiviirused tõid välja nõrkused turvalisuse sätetes. Erinevad Windowsi versioonid tagavad laialdase eri-eesmärgilise käsurea liidese (näiteks netsh ja WMIC) koos omaenda käsukomplektiga, kuid mitte ükski ei ole käsu shelliga ühilduv; samuti ei olnud need koostalitlusvõimelised.

2003-ndaks aastaks oli Windows alustanud uue shelli arendamist, mis kandis nime Monad (teise nimega Microsoft Shell või MSH). Monad oli mõeldud olema uus laialdane käsu shell uue värske disainiga, mis oleks võimeline automatiseerima kogu haldusülesannete tuumikut. Microsoft avaldas esimese Monad avaliku Beta (testversiooni) ja lasi selle välja 17. juunil 2006, Beta 2 11.septembril 2005 ja Beta 3 10.jaanuaril 2006. 25. aprillil 2006 teatati, et Monad nimetati ümber Windows Powershelliks, asetades selle märkimisväärsele kohale nende juhtimistehnoloogia pakkumistes. Power Shelli Release Candidate 1 väljastati samal ajal. Power Shelli Release Candidate 2 väljastati 26. septembril 2006 ning veebis (RTW) väljastati see 14. novembril 2006. Power Shell Vistale väljastati 30. jaanuaril 2007. Viimane Windows PowerShelli v2.0 CTP väljalase sai kättesaadavaks detsembris 2008.

PowerShell v2.0 lõpetati ja väljastati tootmisesse augustis 2009 olulise Windows 7 ja Windows Server 2008 R2 osana. PowerShelli versioonid vanematele operatsioonisüsteemidele (näiteks Windows XP, Windows Server 2003, Windows Vista ja Windows Server 2008) väljastati oktoobris 2009 ning on on allalaadimiseks saadaval nii 32-bitiste kui 64-bitistele platvormidele. (Wikipedia,2010)

Kokkuvõte

Windows 7 pakub Wifi võrgu konfigureerimiseks ja administreerimiseks erinevaid võimalusi. Seda käsurealt (kasutades näiteks netsh wlan utiliiti) või graafiliselt. Kindlasti ei saa mainimata jätta Windows PowerShelli, millel on skriptimise võimalus, objektidega manipuleerimine (objekte on võimalik saata mujale tööriistadesse või andmebaasi) ning palju muud. Minu arust on Powershell ja Netsh vägagi asjalik ning paljude võimalustega tööriist.

Kasutatud kirjandus

  1. Wireless Networking
  2. Eneta.ee
  3. PowerShell Code Repository
  4. Windows Powershell - Wikipedia
  5. google.com