MeowMeow Posted March 27 Share Posted March 27 Bonjour à toutes et tous, J'ai comme projet (simple) d'envoyer un ping sur mon ip publique. J'ai 2 sites (A et B). Je fais un ping du site A vers le site B - et si le ping me répond un timedout --> envoie du email. Et vice et versa B --> A. Donc le script powershell : $ping = new-object System.Net.NetworkInformation.Ping $ReponsePing = $ping.Send("mon ip") if ($Reply.status –eq “Success”) { Write-Host “Le PC est Démarré“ } else { Write-Host “Le PC est éteint“ } sauf que j'ai cette réponse : Pourtant, j'ai bien mon status en Success 😕 Pour voir cela, j'ai fait ce code : $ping = new-object System.Net.NetworkInformation.Ping $ping.Send("une ip") if ($Reply.status –eq “Success”) { Write-Host “Le PC est Démarré“ } else { Write-Host “Le PC est éteint“ } Vous avez une idée? Merci 🙂 Quote Link to comment Share on other sites More sharing options...
brice.wernet Posted March 27 Share Posted March 27 il y a 58 minutes, MeowMeow a dit : Bonjour à toutes et tous, J'ai comme projet (simple) d'envoyer un ping sur mon ip publique. J'ai 2 sites (A et B). Je fais un ping du site A vers le site B - et si le ping me répond un timedout --> envoie du email. Et vice et versa B --> A. Donc le script powershell : $ping = new-object System.Net.NetworkInformation.Ping $ReponsePing = $ping.Send("mon ip") if ($Reply.status –eq “Success”) { Write-Host “Le PC est Démarré“ } else { Write-Host “Le PC est éteint“ } sauf que j'ai cette réponse : Pourtant, j'ai bien mon status en Success 😕 Pour voir cela, j'ai fait ce code : $ping = new-object System.Net.NetworkInformation.Ping $ping.Send("une ip") if ($Reply.status –eq “Success”) { Write-Host “Le PC est Démarré“ } else { Write-Host “Le PC est éteint“ } Vous avez une idée? Merci 🙂 Oui, met un "Set-StrictMode -v 2" en 1ère ligne pour ne plus écrire d'affreusité. Ta variable $reply n'est pas déclarée (c'est $reponsePing ...) Et d'un autre côté, je déconseille le ping. Je préfère utiliser une page web: en faisant iwr sur une page web, on peut la comparer en taille ou en contenu ce qui permet aussi de détecter un défaçage, un problème de DNS, ... Quote Link to comment Share on other sites More sharing options...
MeowMeow Posted March 27 Author Share Posted March 27 Il y a 1 heure, brice.wernet a dit : Oui, met un "Set-StrictMode -v 2" en 1ère ligne pour ne plus écrire d'affreusité. Ta variable $reply n'est pas déclarée (c'est $reponsePing ...) Et d'un autre côté, je déconseille le ping. Je préfère utiliser une page web: en faisant iwr sur une page web, on peut la comparer en taille ou en contenu ce qui permet aussi de détecter un défaçage, un problème de DNS, ... Cha marche 🙂 C'est du ping en réseau local. Donc cela ira 🙂 Je mettrais mon script ici (deux mains). Quote Link to comment Share on other sites More sharing options...
MeowMeow Posted March 28 Author Share Posted March 28 Voici le code : Set-StrictMode -v 2 #Configuration email TTLSSL $password = "MDP" $userName = "from@email.fr" [SecureString]$securepassword = $password | ConvertTo-SecureString -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential -ArgumentList $username, $securepassword $TLS12Protocol = [System.Net.SecurityProtocolType] 'Tls12' [System.Net.ServicePointManager]::SecurityProtocol = $TLS12Protocol # Serveur SMTP - Nom du serveur $SMTPServer = "smtp.office365.com" # Serveur SMTP - Numéro de port $SMTPPort = 587 # Serveur SMTP - Adresse e-mail de l'expéditeur $SMTPSender = "from@email.fr" # Serveur SMTP - Encodage Email $SMTPEncoding =[System.Text.Encoding]::UTF8 # Adresse e-mail du destinataire pour la synthèse $SendReportAdminEmail = "for@email.fr" # Date du jour (format FileTime) $DateToday = (Get-Date).ToFileTime() $ping = new-object System.Net.NetworkInformation.Ping $ReponsePing = $ping.Send("IP/NAME") if ($ReponsePing.status –eq “TimedOut”) { # Envoyer l'e-mail Send-MailMessage -UseSsl -Credential $credential -Verbose -SmtpServer $SMTPServer -Encoding $SMTPEncoding ` -From $SMTPSender -To $SendReportAdminEmail ` -Subject "Panne de connexion vers ???? - $(Get-Date -Format dd/MM/yyyy_HH:mm)" ` -Body "Erreur connexion" -BodyAsHtml -Port $SMTPPort } else { exit } Tâches planifié - répétition toutes les 30min Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.