electronique:teleinformation-compteur-electricite:script_bash_upload

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
electronique:teleinformation-compteur-electricite:script_bash_upload [2023/02/16 03:46] – créée Cédric ABONNELelectronique:teleinformation-compteur-electricite:script_bash_upload [2023/02/16 16:39] (Version actuelle) – ajout de l'option -maxdepth 1 dans find Cédric ABONNEL
Ligne 1: Ligne 1:
 +====== Script Bash pour upload de CSV ======
 +{{ :dummy.png?75x75|}}
 +
 +Dans le script Bash, la commande "curl" permet d'envoyer le fichier vers la page PHP d'upload.
 +
 +Voici un exemple de code Bash qui télécharge tous les fichiers CSV dans un répertoire, à l'exception de celui qui a été modifié le jour même.
 +
 +Pour exclure le fichier CSV modifié le jour même de l'envoi, on a utilisé la commande **find** pour localiser tous les fichiers CSV dans le répertoire spécifié qui ne sont pas modifiés aujourd'hui. Ensuite, on boucle sur cette liste de fichiers et exécuter le code d'envoi de fichier pour chaque fichier trouvé. Pour chaque fichier, nous avons calculé le **SHA-1** localement, envoyé le fichier au script PHP, récupéré le **SHA-1** calculé par le script PHP et comparé les deux valeurs de hachage.
 +
 +Si les valeurs de hachage sont identiques, nous avons affiché un message de confirmation et déplacé le fichier CSV dans le dossier ''done/''. Si les valeurs de hachage ne sont pas identiques, nous avons affiché un message d'erreur.
 +
 +<code BASH>
 +#!/bin/bash
 +
 +# Chemin vers le répertoire contenant les fichiers CSV
 +csv_dir="."
 +
 +# Exclure le fichier CSV modifié le jour même
 +exclude_today="-not -newermt $(date +%Y-%m-%d)"
 +
 +# Trouver tous les fichiers CSV dans le répertoire, à l'exception de celui modifié le jour même
 +csv_files=$(find "$csv_dir" -maxdepth 1 -type f -iname '*.csv' $exclude_today)
 +
 +# URL du script PHP qui gère les fichiers CSV
 +php_script="http://ampere.rpiluc001.acegrp.lan/upload.php"
 +
 +# Vérifier si le dossier "done/" existe
 +if [ ! -d "$csv_dir/done" ]
 +then
 +  # Créer le dossier "done/"
 +  mkdir "$csv_dir/done"
 +fi
 +
 +# Parcourir le répertoire des fichiers CSV
 +for file in $csv_files
 +do
 +  # Calculer le CRC du fichier
 +  crc=$(sha1sum "$file" | awk '{print $1}')
 +
 +  # Envoyer le fichier CSV et le CRC au script PHP via cURL
 +  output=$(curl -F "file=@$file" $php_script)
 +
 +  # Vérifier la réponse du script PHP
 +  if [ "$output" = "$crc" ]
 +  then
 +    # Déplacer le fichier CSV dans le dossier "done/"
 +    mv "$file" "$csv_dir/done/"
 +    echo "Le fichier $file a été correctement traité."
 +  else
 +    echo "Une erreur s'est produite lors du traitement du fichier $file."
 +  fi
 +done
 +
 +</code>
 +
 + --- //[[user:cedricabonnel]]//