A távoli gép elérhetőségének vizsgálata

+5 votes
asked Apr 7, 2014 in IRF tantárgy by virustheking (30 points)  

A házi feladatomban távoli Linuxokról kell PowerShell alól kicsempésznem információkat, és alapvetően ott akadtam el (lehet hogy indokolatlanul) hogy hogyan ellenőrizzem azt, hogy a távoli géphez lehet-e csatlakozni.

A Test-WSMan mindenre InvalidOperationExceptiont ad vissza, ezért abból nem sok minden derül ki hosszú távon. A Test-NetConnection -ComputerName IP -Port PORT parancsra találtam rá, ami pingeli az adott portot, és ez jó megoldás is lehet amennyiben biztos hogy a távoli gép mindig válaszol az ICMP kérésekre. Ez feltehető a feladat megoldása során?

commented Apr 9, 2014 by micskeiz (2,565 points)  
A Test-WSMan milyen távoli kliensre dob ilyen hibát? Távoli Linux esetén alapból csak a nem anonim identify van engedélyezve. De ha megadod a hitelesítési adatokat, akkor nekem menni szokott.
commented Apr 10, 2014 by virustheking (30 points)  
Ha helyes adatokat adok meg neki akkor gond nélkül csatlakozik (Test-WSMan -ComputerName 192.168.186.134 -Authentication Basic -Credential meres -Port 5985), viszont ha mondjuk rossz a portszám, vagy az IP akkor azonnal a fenti exception áll elő.
A problémára már végülis találtam megoldást, az -ErrorVariable személyében, és ezzel kezelem azt ha hiba történt a csatlakozáskor.

1 Answer

0 votes
answered Apr 10, 2014 by micskeiz (2,565 points)  
selected Apr 10, 2014 by virustheking
 
Best answer

A fenti komment jó megoldás: Siker esetén lefut a lekérdezés, ha nem sikerül csatlakozni, akkor kivételt dob, és ezt lehet kezelni.

Ha helyes adatokat adok meg neki akkor gond nélkül csatlakozik (Test-WSMan -ComputerName 192.168.186.134 -Authentication Basic -Credential meres -Port 5985), viszont ha mondjuk rossz a portszám, vagy az IP akkor azonnal a fenti exception áll elő.

commented Apr 11, 2014 by majgab91 (77 points)  
Nekem lenne még problémám ezzel kapcsolatban. Saját win8.1-es gépemről tökéletesen működik a kapcsolat Linux felé (még a Set-WSManQuickConfig sem kellett), ezzel ellentétben az IRF Win8.1-es gépről egyszerűen nem tudok csatlakozni. A következőket végeztem el:

Lefuttattam a Set-WSManQuickConfig -SkipNetworkProfileCheck Cmdlet-et, aminek eredményeképp megkaptam a következő üzenetet:

WinRM service type changed successfully.
WinRM service started.


Created a WinRM listener on HTTP://* to accept WS-Man requests to any IP on this machine.
WinRM firewall exception enabled.
Configured LocalAccountTokenFilterPolicy to grant administrative rights remotely to local users.

Ezek után elvégeztem a Basic auth és az allowunencrypted beállításokat, valamint hozzáadtam a Linux gép IP címét a trustedhosts-hoz:

PS C:\Users\25197> Set-Item WSMan:\localhost\Client\Auth\Basic -Value true
PS C:\Users\25197> Set-Item WSMan:\localhost\Client\AllowUnencrypted -Value true
PS C:\Users\25197> cd WSMan:\localhost\Client
PS WSMan:\localhost\Client> Set-Item .\TrustedHosts -Value "192.168.2.129"

És ezek után is megkapom az InvalidOperationException hibát. Próbáltam a konzolon megadni a jelszót, saját PSCredential objektumot létrehoztam az adatokkal, akkor sem működik. A tűzfalszabályokat is megnéztem, a Windows Remote Management (HTTP-In) szabályok engedélyezve lettek Public, ill. Domain, Private profilokra is (a bejövő szabályok között, a kimenők között nincs winrm-es szabály).

Mit kell még ezen kívül elvégeznem?
commented Apr 12, 2014 by mmate91 (58 points)  
Erre a másik irányba (linux alól kell windows-hoz csatlakozni) lenne valami hasonló módszer?

wsman úgylátom nem dob hibát, hanem csak http exception-t kapok, de azt python-ból nem tudom, hogy kezelhetném.
commented Apr 12, 2014 by marci32 (80 points)  
try-except blokkal (engem inkább a hibás user/pass érdekelne, mert annál nincs kivétel, csak vár, hogy a standard inputról kapjon új user/pass kombót)
...