Windows - Terminálszolgáltatások kezelése parancssorból

A terminálszolgáltatások (XP-ben Távoli asztal - Remote Desktop) számos funkciója elérhető parancssorból is. Csatlakozásokat lehet felépíteni, megszüntetni, futó folyamatokat listázni, bezárni, stb. Hogy miért jó parancssori utasításokat használni, amikor mindez grafikus felületről is elérhető? Egy egyszerű példa: a rendszergazda távolról bejelentkezik, elvégez valamilyen adminisztratív műveletet és kijelentkezik, de a kijelentkező ablakban véletlenül mellé kattint és leállítja a gépet. Történik mindez a város másik végéről egy tőzsdeszerveren. Ugye nem is kell folytatni? Lényegesen biztonságosabb az asztalon elhelyezni egy parancsikont, amivel ki lehet jelentkezni.
A terminálszolgáltatások működését több olyan utasítással is lehet befolyásolni, melyek nem kapcsolódnak szorosan magához a szolgáltatáshoz, de vannak kifejezetten erre a célra készültek is. Több funkció használatához rendszergazdai jogosultság szükséges.
Kapcsolat létrehozása
A kapcsolat felépítése az aktuális felhasználó "Dokumentumok" ("My Documents") mappájában lévő "Default.rdp" fájlban található beállítások alapján történik. A fájl rejtett attribútummal rendelkezik. Szöveges állományról van szó, ezért szerkesztése bármilyen szövegszerkesztővel elvégezhető. Az alkalmazandó parancs neve: MSTSC.EXE. Működését nézzük meg gyakorlati példákon keresztül:
Kapcsolat kiépítése a MANDULA nevű kiszolgálóval:
mstsc /v:mandula
Ha nem az alapértelmezett "Default.rdp" fájlban szereplő beállításokat akarjuk használni, hanem sajáttal rendelkezünk, akkor az alábbi módon lehet felhasználni:
mstsc myfile.rdp /v:mandula
Direkt módon a képernyő vízszintes és függőleges képernyőméretét is meg lehet határozni:
mstsc /v:mandula /w:640 /h:480
Kapcsolat bontása
A bevezetőben említett kijelentkezés megvalósítása nagyon egyszerű:
logoff
Javasoljuk mindenkinek, hogy készítsen az asztalon egy parancsikont a LOGOFF utasításhoz, ha el akarja kerülni a véletlen rendszerleállítást. A parancsot a kiszolgálón kell futtatni, különben a helyi gépről fogunk kijelentkezni.
Másik felhasználó kapcsolata is bontható, ha tudjuk a munkafolyamatának nevét vagy azonosítóját (lásd később):
reset session azonosító /server:kiszolgálónév
Vagy
reset session munkafolyamatnév /server:kiszolgálónév
Távoli kiszolgáló leállítása
Szintén a kiszolgálón futtatandó. Alapértelmezésben 60 másodpercen belül leállítja a gépet, de közben bármikor visszavonható a parancs a CTRL+C billentyűkombinációval.
tsshutdn
Leállítás 10 másodperc múlva:
tsshutdn 10
Leállítás után újraindítás:
tsshutdn /reboot
Leállítás után a gép kikapcsolása ATX-es tápegység esetén, egyébként csak az operációs rendszerből lép ki:
tsshutdn /powerdown
Miért van szükség a leállítás előtti várakozásra? Például azért, hogy a felhasználókat értesíteni lehessen és legyen idejük menteni.
Üzenet küldése a felhasználóknak
Az üzenetküldés legáltalánosabb módja egy kiszolgáló leállítás alkalmával, amikor mindenki megkapja ugyanazt a figyelmeztetést.
msg * "A rendszergazda 2 perc múlva leállítja a kiszolgálót. Mentsen minden beállítást és lépjen ki."
Ha van olyan felhasználónk, akinek külön is szeretnénk üzenni valamit, akkor adjuk meg a nevét a * karakter helyett:
msg lajos " Még te is lépj ki."
Mindkét üzenet addig lesz látható, míg a felhasználó rá nem kattint az "OK" gombra. Kivéve, ha megadjuk a képernyőn maradás időtartammát:
msg * /time:10 "Figyelem! A kiszolgáló rövidesen ki lesz kapcsolva."
Példánkban az ablak 10 másodperc múlva eltűnik a monitorról.
Hány terminálkiszolgáló működik a hálózatban?
Főleg nagyobb hálózatokban fordulhat elő, hogy jó lenne tudni pillanatnyilag melyik terminálkiszolgáló üzemel. Az aktuális munkacsoportban vagy tartományban így nézhetjük meg:
query termserver
Ha nem az aktuális tartományban akarunk keresni, akkor adjuk meg egy másik nevét:
query termserver /domain:tartomány
Ezzel csak egy listát kapunk a kiszolgálók neveivel, de rögtön lekérhetjük a hálózati címeiket is. Nem kell mást tenni, mint a /address kapcsolót hozzáfűzni a fentiekhez:
query termserver /domain:tartomány /address
Bejelentkezett felhasználók listája
A pillanatnyilag bejelentkezett felhasználókról is kérhetünk információt:
query user /server:kiszolgálónév
A kapott listában megkapjuk a bejelentkezési nevet, munkafolyamat nevet, azonosítót, állapotot (aktív, nem aktív, stb.), üresjárati időt, bejelentkezés dátumát és idejét. Ezt az azonosítót említettük a "Kapcsolat bontása" fejezetben. Ha arra vagyunk kíváncsiak, hogy egy konkrét felhasználó bejelentkezett-e, a QUERY USER után adjuk meg a bejelentkezési nevét.
query user rendszergazda /server:kiszolgálónév
Ehhez hasonlóan munkafolyamatok (session) szerinti listát is kérhetünk:
query session /server:kiszolgálónév
Vagy:
query session rendszergazda /server:kiszolgálónév
Futó folyamatok listázása
Tovább finomítva a dolgot még azt is megtudhatjuk, hogy milyen folyamatok futnak a kiszolgálón. Az összes folyamat így listázható:
query process
vagy
query process * /server:kiszolgálónév
Egy adott felhasználóhoz tartozó folyamatok:
query process felhasználónév /server:kiszolgálónév
Ha már itt tartunk, a listázott folyamat be is zárható. Hivatkozni az azonosítójával (ID) vagy nevével lehet rá:
tskill 1234 /server:server
A parancsokat a kiszolgálón vagy a terminálablakban kell kiadni.
Munkafolyamatok távirányítása
A terminálkiszolgáló konfigurációjában engedélyezhető, hogy egy munkafolyamatot egy másik felhasználó átvegyen és folytassa megkezdett feladatokat. Ehhez tudni kell a munkafolyamat nevét vagy azonosítóját.
shadow azonosító /server:kiszolgálónév
vagy
shadow munkafolyamat /server:kiszolgálónév