[Bash] PING (Arping) d'un équipement pour gérer un switch

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
higgins91
Messages : 668
Inscription : 17 nov. 2016, 11:06

[Bash] PING (Arping) d'un équipement pour gérer un switch

Message par higgins91 »

Bonjour, j'ai créé un script (suite au passage d'un Pi3 à un Pi4 avec tout ce qui s'en suit) pour surveiller l'état de ma télévision afin d'allumer/éteindre les bandes LED de rétroéclairage.
Script simple avec un petit contrôle de l'état précédent pour pas renvoyer la commande.
IP du service Dz: 10.0.4.91
Port 8080
Ip de ma télé : 10.0.4.81
IDX du switch qui gère les bandes LED: 264

Code : Tout sélectionner

#!/bin/bash

  arping -c 1 10.0.4.81 | grep -E "1 response|1 packets received" > /dev/null

    if [ $? == 0 ]; then
	echo "la télé est allumé, on vérifie si le fichier ON existe"
	#si il existe on fait rien
	#si il existe pas, on supprime le OFF et on créé le ON puis on allume la tele

	if [ -e ON ]
	then
		echo "le fichier existe on fait rien"
		echo "10.0.4.81 responded."
	else
		echo "le fichier n'existe pas on créé et allume"
		rm OFF
		touch ON
		echo "10.0.4.81 responded." 
		wget "http://10.0.4.91:8080/json.htm?type=command&param=switchlight&idx=264&switchcmd=On" >/dev/null
		rm "json.htm?type=command&param=switchlight&idx=264&switchcmd=On"
	fi

    else
	echo "la télé est éteinte, on vérifie si le fichier OFF existe"
	#si il existe on fait rien
	#si il existe pas, on supprime le ON et on créé le OFF puis on éteint la tele

	if [ -e OFF ]
	then
		echo "le fichier existe on fait rien"
		echo "10.0.4.81 didn't respond."
	else
		echo "le fichier n'existe pas on créé et éteint"
		rm ON
		touch OFF
		echo "10.0.4.81 didn't respond."
		wget "http://10.0.4.91:8080/json.htm?type=command&param=switchlight&idx=264&switchcmd=Off" >/dev/null
		rm "json.htm?type=command&param=switchlight&idx=264&switchcmd=Off"
	fi

   fi

Dz version : 2023.2
Rpi 4 avec dongle téléinfo, RFXCom, sondes 1-wire et GPIO
Guigui
Messages : 86
Inscription : 12 sept. 2015, 16:19

Re: [Bash] PING (Arping) d'un équipement pour gérer un switch

Message par Guigui »

J'ai un peu opti ton code

ajout de variables, mode verbeux qui affiche sur la sortie que si il est a OUI...

Code : Tout sélectionner

#!/bin/bash

# Variables pour Domoticz
IP_DOMOTICZ="10.0.4.91"
PROT_DOMOTICZ="http"
IDX_CONTROLE="264"
IP_TV="10.0.4.81"

# Variable pour le mode verbeux
VERBEUX="OUI"

# Fonction pour afficher des messages en mode verbeux
afficher_message() {
  if [ "$VERBEUX" == "OUI" ]; then
    echo "$1"
  fi
}

# Fonction pour afficher des messages liés à la télévision
afficher_message_tv() {
  if [ "$VERBEUX" == "OUI" ]; then
    echo "$1"
  fi
}

# Fonction pour vérifier l'état de la télévision
check_tv_state() {
  afficher_message "Vérification de l'état de la télévision..."
  arping -c 1 $IP_TV | grep -E "1 response|1 packets received" > /dev/null
  return $?
}

# Fonction pour allumer la télévision
turn_on_tv() {
  afficher_message_tv "Allumage de la télévision..."
  wget "$PROT_DOMOTICZ://$IP_DOMOTICZ/json.htm?type=command&param=switchlight&idx=$IDX_CONTROLE&switchcmd=On" -qO- >/dev/null
}

# Fonction pour éteindre la télévision
turn_off_tv() {
  afficher_message_tv "Extinction de la télévision..."
  wget "$PROT_DOMOTICZ://$IP_DOMOTICZ/json.htm?type=command&param=switchlight&idx=$IDX_CONTROLE&switchcmd=Off" -qO- >/dev/null
}

# Vérifier l'état de la télévision
if check_tv_state; then
  afficher_message "La télévision est allumée."
  if [ ! -e ON ]; then
    echo "Le fichier ON n'existe pas, création et allumage de la télévision."
    rm -f OFF
    touch ON
    turn_on_tv
  else
    echo "Le fichier ON existe, on ne fait rien."
  fi
else
  afficher_message "La télévision est éteinte."
  if [ ! -e OFF ]; then
    afficher_message "Le fichier OFF n'existe pas, création et extinction de la télévision."
    rm -f ON
    touch OFF
    turn_off_tv
  else
    afficher_message "Le fichier OFF existe, on ne fait rien."
  fi
fi
Répondre