electronique:teleinformation-compteur-electricite:script_bash_upload

Script Bash pour upload de CSV

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.

#!/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

Cédric ABONNEL dit Cédrix

  • electronique/teleinformation-compteur-electricite/script_bash_upload.txt
  • Dernière modification : 2023/02/16 16:39
  • de Cédric ABONNEL