commit 8bb29018d5a120239c806a6b3a4d9ff969c29e39 Author: root Date: Thu Aug 15 18:35:33 2024 +0000 Moulinette Init diff --git a/exec.sh b/exec.sh new file mode 100755 index 0000000..f16209d --- /dev/null +++ b/exec.sh @@ -0,0 +1,7 @@ +#!/bin/ash +./transfert.sh rsync +./transfert.sh scp + +echo "je suis inutile j'aurai pus faire &&" + +cat report.txt diff --git a/report.txt b/report.txt new file mode 100644 index 0000000..4d54a75 --- /dev/null +++ b/report.txt @@ -0,0 +1,40 @@ +==================== +Résumé du transfert +==================== +Commande de tranfert: rsync +Temps de transfert m: 0 +Temps de transfert s: 14.52 +Vitesse de transfert: 70.60 MB/s +Nombre de coupures: 0 +Qauntite dans la table: 2024/08/15 - 16:42:58 +==================== +Résumé du transfert +==================== +Commande de tranfert: scp +Temps de transfert m: 0 +Temps de transfert s: 14.04 +Vitesse de transfert: 73.16 MB/s +Nombre de coupures: 0 +Qauntite dans la table: 2024/08/15 - 16:45:26 +==================== +Résumé du transfert +==================== +Commande de tranfert: rsync +Temps de transfert m: 0 +Temps de transfert s: 14.52 +Vitesse de transfert: 70.58 MB/s +Nombre de coupures: 0 +Quantite dans la table: 60 +Debut: 2024/08/15 - 16:50:58 +Fin: 2024/08/15 - 16:53:33 +==================== +Résumé du transfert +==================== +Commande de tranfert: scp +Temps de transfert m: 0 +Temps de transfert s: 14.03 +Vitesse de transfert: 73.12 MB/s +Nombre de coupures: 0 +Quantite dans la table: 60 +Debut: 2024/08/15 - 16:53:33 +Fin: 2024/08/15 - 16:56:02 diff --git a/transfert.sh b/transfert.sh new file mode 100755 index 0000000..f2ad8f7 --- /dev/null +++ b/transfert.sh @@ -0,0 +1,121 @@ +#!/bin/ash + +# Variables +FILE_TO_TRANSFER="testfile1.img" +DESTINATION_USER="root@10.20.30.15" +DESTINATION_PATH="/mnt/" +TRANSFER_METHOD=$1 +REMOVE_REMOTE="rm -r $DESTINATION_PATH*" +LOGFILE="transfer_log.txt" +DATE=$(date +"%Y%m%d") +STIME=$(date +"%Y/%m/%d - %H:%M:%S") +i=1 +rm $LOGFILE + +# Fonction pour démarrer le transfert +start_transfer() { + case $TRANSFER_METHOD in + scp) + { time scp $FILE_TO_TRANSFER $DESTINATION_USER:$DESTINATION_PATH; } 2>> $LOGFILE + ;; + rsync) + { time rsync -av --progress $FILE_TO_TRANSFER $DESTINATION_USER:$DESTINATION_PATH; } 2>> $LOGFILE + ;; + sftp) + { time sftp $DESTINATION_USER:$DESTINATION_PATH <> $LOGFILE + ;; + *) + echo "Méthode de transfert non reconnue." + exit 1 + ;; + esac +} + +check_db() { + if su postgres -c "psql -lqt | grep -q d$DATE"; then + echo "" + else + echo "|| CREATE DB d$DATE ||" + su postgres -c "createdb -T template0 d$DATE" + + fi +} + +check_table(){ + if su postgres -c "psql d$DATE -c \"\d\"| grep -q $TRANSFER_METHOD"; then + echo "" + else + echo "|| CREATE TABLE $TRANSFER_METHOD ||" + su postgres -c "psql d$DATE -c \"CREATE TABLE $TRANSFER_METHOD (id SERIAL, tmp BIGINT, speed NUMERIC, cut INT);\"" + fi +} + +insert_db(){ + su postgres -c "psql d$DATE -c \"INSERT INTO $TRANSFER_METHOD (id, tmp, speed, cut) VALUES (DEFAULT, $TOTAL_SECONDS, $TRANSFER_SPEED, $ERRORS);\"" + +} + +make_dbtot(){ + su postgres -c "psql d$DATE -c \"CREATE TABLE total$TRANSFER_METHOD AS SELECT ROUND(AVG(tmp), 2) AS tmp , ROUND(AVG(speed), 2) AS speed, SUM(cut) AS cut FROM $TRANSFER_METHOD;\"" + +} + + +# Tu fait le check-up +check_db +check_table + +for i in $(seq 1 10); +do + + # Démarrer le transfert et mesurer le temps + start_transfer + + # Analyser les données + # Extraire les minutes et les secondes + + MINUTES=$(grep real $LOGFILE | awk '{print $2}' | sed 's/m//') + SECONDS=$(grep real $LOGFILE | awk '{print $3}' | sed 's/s//') + + # Si MINUTES est vide, on n'a que des secondes + if [ -z "$MINUTES" ]; then + TOTAL_SECONDS=$SECONDS + else + # Sinon, on convertit les minutes en secondes et on ajoute les secondes + TOTAL_SECONDS=$(echo "$MINUTES * 60 + $SECONDS" | bc) + fi + + TRANSFER_SIZE=$(ls -l $FILE_TO_TRANSFER | awk '{print $5}') + TRANSFER_SPEED=$(echo "scale=2; ($TRANSFER_SIZE / 1024 / 1024) / $TOTAL_SECONDS" | bc) + ERRORS=$(grep -i "error" $LOGFILE | wc -l) + insert_db + i=$($i + 1) + ssh $DESTINATION_USER $REMOVE_REMOTE + rm $LOGFILE + +done + +make_dbtot + +DBTMP_S=$(su postgres -c "psql d$DATE -t -A -c \"select tmp from total$TRANSFER_METHOD;\"") +DBTMP_M=$(echo "$DBTMP_S / 60" | bc) +DBSPEED=$(su postgres -c "psql d$DATE -t -A -c \"select speed from total$TRANSFER_METHOD;\"") +DBCUT=$(su postgres -c "psql d$DATE -t -A -c \"select cut from total$TRANSFER_METHOD;\"") +ETIME=$(date +"%Y/%m/%d - %H:%M:%S") +QUANT=$(su postgres -c "psql d$DATE -t -A -c \"select id from $TRANSFER_METHOD ORDER BY id DESC LIMIT 1;\"") +# Afficher les résultats +echo "====================" >> report.txt +echo "Résumé du transfert " >> report.txt +echo "====================" >> report.txt +echo "Commande de tranfert: $TRANSFER_METHOD" >> report.txt +echo "Temps de transfert m: $DBTMP_M" >> report.txt +echo "Temps de transfert s: $DBTMP_S" >> report.txt +echo "Vitesse de transfert: $DBSPEED MB/s" >> report.txt +echo "Nombre de coupures: $DBCUT" >> report.txt +echo "Quantite dans la table: $QUANT" >> report.txt +echo "Debut: $STIME" >> report.txt +echo "Fin: $ETIME" >> report.txt +# Nettoyage