Moulinette Init

This commit is contained in:
root 2024-08-15 18:35:33 +00:00
commit 8bb29018d5
3 changed files with 168 additions and 0 deletions

7
exec.sh Executable file
View File

@ -0,0 +1,7 @@
#!/bin/ash
./transfert.sh rsync
./transfert.sh scp
echo "je suis inutile j'aurai pus faire &&"
cat report.txt

40
report.txt Normal file
View File

@ -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

121
transfert.sh Executable file
View File

@ -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 <<EOF
put $FILE_TO_TRANSFER
EOF
} 2>> $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