abonnel-siteweb/data/pages/electronique/teleinformation-compteur-el.../script_bash_upload.txt

57 lines
2.2 KiB
Plaintext

====== 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]]//