Quelques exemples de scripts¶
tester les machines sous tension
#!/bin/bash
for ((i=2 ; $i<37; i++))
do
echo " test de : $i"
ping -c 1 10.23.17.$i |grep 'erreur'
done
ìnstaller vscodium les poste de 10.23.17.2 à 10.23.17.27
#!/bin/bash
for ((i=2 ; $i<28; i++))
do
echo "installation codium sur poste $i \n"
scp conf/vscodium.list root@10.23.17.$i:/etc/apt/sources.list.d/
scp conf/installcodium.sh root@10.23.17.$i:/root/
ssh root@10.23.17.$i /root/installcodium.sh
done
usage pour un poste ./installunposte 10.23.17.50 $1 est 10.23.17.50 ìnstaller vscodium sur un poste
#!/bin/bash
#installunposte.sh
ssh root@$1 apt update
echo "installation codium sur poste $1 \n"
scp conf/vscodium.list root@$1:/etc/apt/sources.list.d/
scp conf/installcodium.sh root@$1:/root/
ssh root@$1 /root/installcodium.sh
Corrige la déclaration du proxy dans apt proxy
#!/bin/bash
for ((i=2 ; $i<37; i++))
do
scp conf/20proxy root@10.23.17.$i:/etc/apt/apt.conf.d/
done
avec le fichier 20proxy:
Acquire::http::proxy « http://10.255.5.210:3128/ »; Acquire::ftp::proxy « ftp://10.255.5.210:3128/ »; Acquire::https::proxy « http://10.255.5.210:3128/ »;
ìnstaller esptool pour programmer les esp en micropython
#!/bin/bash
for ((i=2 ; $i<37; i++))
do
ssh root@10.23.17.$i 'mkdir /opt/esp'
scp ESP8266_GENERIC-20240222-v1.22.2.bin root@10.23.17.$i:/opt/esp
scp initesp.sh root@10.23.17.$i:/usr/bin/
scp espinit.sh root@10.23.17.$i:/usr/bin/
ssh root@10.23.17.$i 'chmod a+x /usr/bin/espinit.sh'
ssh root@10.23.17.$i 'chmod a+x /usr/bin/initesp.sh'
done
coupe internet
#!/bin/bash
for ((i=2 ; $i<37; i++))
do
echo $i
ssh root@10.23.17.$i 'apt install iptables -y'
ssh root@10.23.17.$i 'iptables -t filter -I OUTPUT -p tcp -m multiport --ports 3128 -j DROP'
ssh root@10.23.17.$i 'iptables -L'
done
remet internet
#!/bin/bash
for ((i=2 ; $i<31; i++))
do
echo $i
ssh root@10.23.17.$i 'iptables -F'
ssh root@10.23.17.$i 'iptables -L'
done
Un exemple complexe ou on dsitribue trosi sujets différents , chaque sujet est copié dans l’espace de l’utilisateur connecté
distribuer trois sujets différents en fonction des IP
#!/bin/bash
#usage ./distribr1 pratique2 nsi
eval1=(2 16 28 17 5 23 9 22 26 30)
for i in ${eval1[@]}
do (
echo "poste numero $i ip: 10.23.17.$i"
user=$(ssh root@10.23.17.$i "who |grep :0|cut -d' ' -f1")
user=${user,,}
if [ ${#user} -gt 0 ]; then
chemin="/home/d-bellevue.local/$user"
echo " le chemin user est : $chemin"
echo "scp -r partie-1 root@10.23.17.$i:$chemin "
scp -r partie-1 root@10.23.17.$i:$chemin/
ssh root@10.23.17.$i chown -Rf $user $chemin/partie-1
scp -r fil-rouge root@10.23.17.$i:$chemin/
ssh root@10.23.17.$i chown -Rf $user $chemin/fil-rouge
fi
)
done
eval2=(3 10 12 18 11 19 7 8 29 20)
for i in ${eval2[@]}
do (
echo "poste numero $i ip: 10.23.17.$i"
user=$(ssh root@10.23.17.$i "who |grep :0|cut -d' ' -f1")
user=${user,,}
if [ ${#user} -gt 0 ]; then
chemin="/home/d-bellevue.local/$user"
echo " le chemin user est : $chemin"
echo "scp -r partie-2 root@10.23.17.$i:$chemin "
scp -r partie-2 root@10.23.17.$i:$chemin/
ssh root@10.23.17.$i chown -Rf $user $chemin/partie-2
scp -r fil-rouge root@10.23.17.$i:$chemin/
ssh root@10.23.17.$i chown -Rf $user $chemin/fil-rouge
fi
)
done
eval3=(4 15 13 14 24 21 25 6 27)
for i in ${eval3[@]}
do (
echo "poste numero $i ip: 10.23.17.$i"
user=$(ssh root@10.23.17.$i "who |grep :0|cut -d' ' -f1")
user=${user,,}
if [ ${#user} -gt 0 ]; then
chemin="/home/d-bellevue.local/$user"
echo " le chemin user est : $chemin"
echo "scp -r partie-3 root@10.23.17.$i:$chemin "
scp -r partie-3 root@10.23.17.$i:$chemin/
ssh root@10.23.17.$i chown -Rf $user $chemin/partie-3
scp -r fil-rouge root@10.23.17.$i:$chemin/
ssh root@10.23.17.$i chown -Rf $user $chemin/fil-rouge
fi
)
done
Pour récupérer un sujet
#!/bin/bash
#./recup.sh pratique2 nsi
if [ $# -gt 1 ]; then
for ((i=2; $i<31; i++))
do (
#if [ $i -ne 9 ]
#then
echo "poste numero $i ip: 10.23.17.$i"
user=$(ssh root@10.23.17.$i "who |grep :0|cut -d' ' -f1")
#toto=tata
#echo ${user:0:1}
user=${user,,}
if [ ${#user} -gt 0 ]; then
#chemin=${user:0:1}/$user
chemin="/home/d-bellevue.local/$user"
echo " le chemin user est : $chemin"
#Ajouter le test d'existence avant la création"
mkdir -p $2/$1/$user
#ON teste l'existence du répertoire che l'utilisateur"
bon=$(ssh root@10.23.17.$i "if [ -d $chemin/$1 ]; then echo \"ok\"; else echo \"NON\"; fi;")
echo $bon
#mycmd=(ssh root@10.23.17.$i 'if [ -d /home/$chemin/$1 ]; then echo \"ok\";fi;')
if [ $bon == NON ]; then echo "$user n'a pas créé le répertoire $1"; else echo "$user est cool";
# run the command
#${mycmd[@]}
#$(test)
#bon=$(ssh root@10.23.17.$i "if [ -d /home/$chemin/$1 ]; then echo 'ok' else echo 'NON' fi")
#echo $bon
#echo ${#user}
#if [ ${#user} -gt 0 ]; then
echo "scp -r root@10.23.17.$i:$chemin/$1 $2/$1/$user/"
scp -r root@10.23.17.$i:$chemin/$1 $2/$1/$user/
#echo "oui"
fi
fi
#commande = 'scp -r root@10.23.17.$i:/home/$recup $user'
#echo $commande
echo ""
#fi
)# laisser le & ici permte de ne pas bloquer sur les erreurs
done
else
echo "Il faut saisir deux arguments, le dossier à récupérer puis la classe ou le groupe "
fi