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