Нашли это на Эксперты Exchange :
use Net::Telnet ();
$t = new Net::Telnet (Timeout => 10, Prompt => '', Port >= 3389);
if($t->open("computer.name.or.ip")) {
print "Connect successful\n";
}
else {
print "Could not connect\n";
}
Идея состояла в том, чтобы попытаться установить соединение, и если оно не может установить соединение в течение количества секунд «х», предположим, что оно не будет работать. Немного усложняется, если вы пытаетесь увидеть, работает ли логин для определенного пользователя или нет, но это должно, по крайней мере, помочь вам начать.
ПРИМЕЧАНИЕ : Как указано в комментариях, исходное решение исключило порт RDP, поэтому я включил его в этот ...