Quelques exemples de scripts ============================ :index:`tester les machines sous tension` .. code:: bash #!/bin/bash for ((i=2 ; $i<37; i++)) do echo " test de : $i" ping -c 1 10.23.17.$i |grep 'erreur' done :index:`ìnstaller vscodium les poste de 10.23.17.2 à 10.23.17.27` .. code:: bash #!/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 :index:`ìnstaller vscodium sur un poste` .. code:: bash #!/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 :index:`proxy` .. code:: bash #!/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/"; :index:`ìnstaller esptool pour programmer les esp en micropython` .. code:: bash #!/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 :index:`coupe internet` .. code:: bash #!/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 :index:`remet internet` .. code:: bash #!/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é :index:`distribuer trois sujets différents en fonction des IP` .. code:: bash #!/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 :index:`Pour récupérer un sujet` .. code:: bash #!/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