Windows ja wifi: Difference between revisions
Line 179: | Line 179: | ||
Get-WmiObject -Class Win32_NetworkAdapter -Filter "Name LIKE '%wireless%'" | Get-WmiObject -Class Win32_NetworkAdapter -Filter "Name LIKE '%wireless%'" | ||
[[File:powershell.png]] | |||
;Powershelliga skriptimine | ;Powershelliga skriptimine | ||
Oletame, et meil on vaja skripti, mis 'reset'ks Wifi adapteri. | Oletame, et meil on vaja skripti, mis 'reset'ks Wifi adapteri. |
Revision as of 10:16, 13 May 2010
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):
- Wifi ühenduse konfigureerimine graafiliselt
Control Panel\Network and Internet\Network Connections -s parem klahv wifi ühenduse peale, sealt "Properties". IPv4 protokolli seadistamiseks valida "Properties".
- 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
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
netsh wlan set blockednetworks display=show
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"}
Lühemalt:
Get-WmiObject -Class Win32_NetworkAdapter -Filter "Name LIKE '%wireless%'"
- 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. Soovitan ära õppida.