Page 1 sur 1

[Bash] API BLINK Amazon

Publié : 27 mai 2024, 19:14
par Guigui
Hello

Voici un petit programme en bash pour armer / désarmer votre système BLINK via script


Assurez-vous que jq est installé (sudo apt-get install jq sur Debian/Ubuntu).

Générez un UID ( voir le lien dans le code)
Renseigner mot de passe et email de votre compte

Il faut toujours lancer le script avec un paramètre ( ARMER ou DESARMER)

Un premier lancement vous enverra un code par SMS a renseigner

Puis après une fois votre uid associé a votre compte, vous pourrez soit armer ou désarmer directement en ligne de commande.



Bonne exploitation =)

Code : Tout sélectionner

#!/bin/bash

###############################
# SCRIPT API BLINK PAR GUIGUI #
#         VERSION 1.0         #
#          27/05/2024         #
###############################


#########################
#       VARIABLES       #
#########################


unique_id="cc746a0c-ac58-423c-a139-89990686ec34" # a generer sur https://www.uuidgenerator.net/ 

passwd="VOTRE_PASSWORD" # Conserver les guillements
email="toto@hotmail.fr" # Conserver les guillements
   
 

#########################
#    AUTHENTIFICATION   #
#########################



if [ -z $1 ] 
    then
        echo "Pas de paramètres entres. Fin du script"
        exit
fi




# Configuration
url="https://rest-prod.immedia-semi.com/api/v5/account/login"
data="{\"unique_id\": \"$unique_id\", \"password\":\"$passwd\", \"reauth\":\"true\",\"email\":\"$email\"}"
content_type="Content-Type: application/json"

# Effectuer la première requête pour obtenir les données d'authentification
# Elle est mise en boucle pour pallier a l erreur heavy load
max_attempts=5
attempt=1
sleep_time=10  # seconds

while (( attempt <= max_attempts ))
do
    response=$(curl -sSl -m 60 "$url" -X POST -H "$content_type" -d "$data")

    # Vérifier si la réponse contient le message d'erreur
    if echo "$response" | grep -q "This website is under heavy load"
        then
            sleep $sleep_time
            ((attempt++))
        else
            break
    fi
done

if (( attempt > max_attempts ))
    then
       echo "Surcharge du site"
       exit 1
fi




# Extraire les informations nécessaires de la réponse JSON
AccountID=$(echo "$response" | jq -r '.account.account_id')
ClientID=$(echo "$response" | jq -r '.account.client_id')
token=$(echo "$response" | jq -r '.auth.token')
tier=$(echo "$response" | jq -r '.account.tier')  # Nouvelle variable pour le tier




# Avoir les données du HOMESCREEN


HOMESCREEN=$(curl -sSl -m 60 --request GET  --url https://rest-$tier.immedia-semi.com/api/v3/accounts/$AccountID/homescreen  --header "token-auth: $token" )

ETAT_HOMESCREEN=$(echo $HOMESCREEN | jq -r .code)


if [ $ETAT_HOMESCREEN = 101 ] || [ $ETAT_HOMESCREEN != null ]
    then

        read -p "Veuillez entrer le code PIN recu par sms: " PIN_CODE

        # Effectuer la deuxième requête pour vérifier le code PIN en utilisant le bon host
        RESPONSE=$(curl -s -X POST "https://rest-$tier.immedia-semi.com/api/v4/account/$AccountID/client/$ClientID/pin/verify" \
          -H "Content-Type: application/json" \
          -H "TOKEN_AUTH: $token" \
          --data "{\"pin\":\"$PIN_CODE\"}")

        # Afficher la réponse
        result=$(echo "$RESPONSE" | jq ."valid")
                #echo '{"valid":true,"require_new_pin":false,"message":"Client has been successfully verified","code":1626}'

        if [ $result = true ]
            then
                echo TOKEN VALIDE
                echo relancer le programme
                exit
            else
                echo API_KO
                exit
        fi
fi


#################
#    ACTIONS    #
#################


# Actions
if [ $1 = ARM ] || [ $1 = ARMER ]
    then
        NetworkID=$(echo "$HOMESCREEN" | jq -r ."networks"[]."id")
        retour=$(curl -sSl -m 60 --request POST  --url https://rest-$tier.immedia-semi.com/api/v1/accounts/$AccountID/networks/$NetworkID/state/arm --header "token-auth: $token")
#        echo $retour | jq
fi

if [ $1 = DISARM ] || [ $1 = DESARMER ]
    then
        NetworkID=$(echo "$HOMESCREEN" | jq -r ."networks"[]."id")
        retour=$(curl -sSl -m 60 --request POST  --url https://rest-$tier.immedia-semi.com/api/v1/accounts/$AccountID/networks/$NetworkID/state/disarm --header "token-auth: $token")
#        echo $retour | jq
fi