3 votes

Rétablir une connexion Bureau à distance après le redémarrage de l'hôte

Je me retrouve souvent à me connecter à une station de travail ou à un serveur avec Bureau à distance pour effectuer une tâche qui nécessite un redémarrage. Dans ces cas, je dois généralement me reconnecter après le redémarrage de l'hôte pour m'assurer que tout s'est passé comme prévu ou pour continuer mon travail. Dans ces cas, je lance généralement "ping -t" dans une invite de commandes pour me prévenir quand je peux me reconnecter.

Cependant, il m'arrive parfois de me laisser distraire par autre chose en attendant que l'hôte revienne en ligne et d'oublier d'y revenir. Ce serait vraiment bien d'être averti lorsque l'hôte est de nouveau en ligne et de me permettre de me reconnecter (idéalement en un clic).

Est-ce que quelqu'un sait comment accomplir cela facilement ? J'imagine qu'il doit exister un utilitaire gratuit, ou peut-être que cela pourrait être fait avec un script PowerShell.

3voto

MDMarra Points 99815

Écrivez "n'oubliez pas $ServerName" sur un post-it et mettez-le sur votre moniteur.

2voto

James Ruskin Points 479

Script Powershell rapide et simple que j'utilise quotidiennement:

<#
.Synopsis
Vérifie et se connecte à RDP sur un serveur donné.
.Description
Ce script teste un port ouvert 3389 (RDP Windows standard) et, s'il le trouve, transmet l'IP à mstsc.exe. Sinon, il réessaye indéfiniment. Ctrl+C arrêtera le script.
.Parameter ip
IP ou FQDN d'une machine Windows à tester. Ne prend qu'un seul argument.
.Parameter wait
Supposera que la machine est toujours en marche, attendra qu'elle cesse de répondre (même une fois) et ensuite essaiera de se connecter. Pratique pour les machines sur le point de redémarrer.
.Parameter Verbose
Affichera une ligne à chaque fois qu'il essaie en vain.
.Example
rdpupyet.ps1 ITG-SRV-INF01 -Verbose
#>
[CmdletBinding()]
param($ip, [switch]$wait)

function Get-DownYet ($ip) {
    Write-Verbose "En attente de la fermeture de $IP."
    do {
        try {$up = New-Object System.Net.Sockets.TCPClient -ArgumentList $ip,3389}
        catch {$up = $false}
    }
    until ($up -eq $false)
    Write-Verbose "$IP ne répond plus."
}

Write-Verbose "Test de la connexion RDP... Ctrl+C pour quitter."

if ($wait) {Get-DownYet $ip}
do {
    try {$success = New-Object System.Net.Sockets.TCPClient -ArgumentList $ip,3389}
    catch {Write-Verbose "RDP non actif. Nouvel essai."}
}
while (!$success)

mstsc.exe /v:$ip /admin

Ne se ferme pas automatiquement, désolé. Mais cela pourrait être facilement ajouté, ainsi qu'un bip rapide en cas de réponse réussie.
La partie qui me satisfait le plus (empruntée d'une source actuellement oubliée sur Internet) est que cela n'essaiera pas de se connecter lorsque le serveur répond au ping - seulement lorsque le port RDP standard est accessible.

1voto

aleroot Points 3162

Regardez cette fonction qui lance une session RDP et ce morceau de script pour PowerShell.

Regardez ce morceau de code de script :

#Cette partie attend que le serveur revienne en ligne. do{$result = $ping.send("NomDuServeur");write-host "." -NoNewLine -ForegroundColor "Red"} until ($result.status -eq "Success")

Vous pourriez facilement ajouter l'appel RDP après la boucle qui attend que l'hôte revienne en ligne. Il ne serait pas si difficile d'atteindre ce que vous voulez avec ces deux scripts.

0voto

josy Points 21

D'accord, je ne connais rien qui puisse appeler votre téléphone portable, mais si vous ouvrez une boîte de commande et que vous tapez "ping -t" sans les guillemets, cela continuera de faire des pings...non pas seulement 4 fois. Il est difficile d'ignorer ça au milieu de votre écran quand vous revenez.

En alternative, je vous suggère fortement d'utiliser de la choline quotidiennement car votre esprit est en train de griller à un âge relativement jeune.

0voto

John Gardeniers Points 27097

J'ai un script simple sur chacun de mes serveurs qui m'envoie un e-mail lorsque le serveur redémarre. Il s'agit d'un fichier batch utilisant blat sur Windows, de scripts perl sur Mac et Linux. Ils sont déclenchés par les moyens appropriés à chaque système d'exploitation. par exemple, un script de démarrage de machine sur Windows.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X