Aller au contenu

Encore du powershell - ping et alerte mail


Messages recommandés

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  :

7KX9o0I.png
 

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 🙂

Lien vers le commentaire
Partager sur d’autres sites

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  :

7KX9o0I.png
 

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, ...

Lien vers le commentaire
Partager sur d’autres sites

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).

Lien vers le commentaire
Partager sur d’autres sites

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

 

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...