Terminal Server – …zugelassene Anzahl von Verbindungen überschritten.

15 01 2010

terminalserver

Wer kennt das nicht, man möchte sich gerne per Remote Desktop Verbindung auf einen Server schalten und bekommt diese entzückende Meldung. Meistens liegt es daran, das Kollegen sich zwar auf dem Server angemeldet haben, jedoch keine Lust hatten, sich wieder ordentlich abzumelden. Zudem kommt dann auch noch dazu, das man das ja auch mit der Consolen Verbindung machen kann, so das erst mal niemand mehr zugriff bekommt.

Die Möglichkeiten sind dann auch noch recht begrenzt, entweder man hat noch einen zweiten Server, der die Terminal Server Umgebung bereitstellt. Dann kann man sich über diesen mit dem betroffenen Server verbinden und eine der vorhandenen Verbindungen abmelden (nicht nur trennen, das sind sie schon meistens), oder zumindest sehen, wer dort angemeldet ist und diesen bitten, seine Sitzung zu beenden. Allerdings kann es vorkommen, das einem diese Möglichkeit nicht zur Verfügung steht und man nicht die Lust hat, oder die Zeit, alle Kollegen zu interviewen, wer den nun grade auf dem Server ist. Oft sind die Verbindungen schon ein paar Tage getrennt und die Leute haben es einfach vergessen.

Hier nun eine andere, etwas gemeine aber funktionierende Lösung. Es gibt ein Tool mit dem netten Namen xcmd.exe (download), mit diesem Tool kann man eine CMD auf dem Server starten und so werden alle DOS Befehle auf dem Server ausgeführt.

xCmd 1.7 for NT4/2000/XP – executes commands remotely

Freeware! 2007-2009 Gerd Feldkirch, gerd@feldkir.ch

2001 Zoltan Csizmadia, zoltan_csizmadia@yahoo.com

Usage: xCmd.exe \\computer [options] command/exe arguments

Options:

/D:directory           Set working directory

Default: Remote „%SystemRoot%\System32“

/IDLE                  Idle priority class

/NORMAL                Normal priority class

/HIGH                  High priority class

/REALTIME              Realtime priority class

/C                     Copy the specified program to the remote machine’s

„%SystemRoot%\System32“ directory

Commands’s exe file must be absolute to local machine

/C:filename            Copy the specified file to the remote machine’s

„%SystemRoot%\System32“ directory

/DL:localdir           Local directory to be copied

/DR:remotedir          Remote path of the directory to be copied

/INTERACTIVE           Enables a program to interact with the desktop

/SYSTEM                Run the remote process in the System account

/USER:user             User for remote connection

/PWD:{password|*}      Password for remote connection

/NOWAIT                Don’t wait for remote process to terminate

/QUIET                 Don’t show program information

/CT:s                  Connection timeout in seconds

Examples:

xCmd.exe \\remote cmd       // Starts a „telnet“ client

xCmd.exe \\remote /nowait runme.exe

xCmd.exe \\remote /user:administrator dir c:\

xCmd.exe \\remote /user:somebody /pwd:* /d:d:\ test1.exe

xCmd.exe \\remote /c /user:somebody /pwd:* /d:d:\ test2.exe

Notes:

– Input is passed to remote machine when you press ENTER.

– Ctrl-C terminates the remote process

– Command and file path arguments have to be absolute to remote machine

If you are using /c option, command exe file path must be absolute to

local machine, but the arguments must be absolute to remote machine

Wenn wir nun auf dem Server, mittels xcmd, eine Umgebung aufgerufen haben, ist der Rest eigentlich nur noch Formsache.

Mit dem Befehl „quser“ bekommen wir angezeigt, wer auf dem Server per RDP angemeldet ist. Natürlich steht auch die ID dabei, die wir nun nutzen können um den Benutzer abzumelden, dieser lautet (zum Beispiel für ID 3) „logoff 3“. Wenn wir nun noch mal mit „quser“ nachschauen, sehen wir das der Benutzer nicht mehr in der Liste auftaucht und können unsere eigene RDP Verbindung aufbauen.

Hier noch ein Hinweis, man muss es nicht über xcmd machen, da man die beiden befehle auch mit dem Server erweitern kann um den es geht, zum Beispiel „logoff 3 /Server:XYZ“, allerdings müssen dafür die Berechtigungen passen. Und wer möchte das der Befehl lokal auf dem Server ausgeführt wird, ist mit diesem Tool bestens bedient. Zudem kann man auch noch andere Dinge auf diese Weise erledigen, diese war nur ein Beispiel.