Pages : 1
#1 Le 02/02/2021, à 00:55
- domdomdeo
Exécuter un script par SSH
Bonjour,
j'aurais besoin d'un peu d'aide pour l'exécution d'un script.
Je m'explique:
j'ai un script sur mon serveur de fichier ( 10.0.0.2)
j'ai un poste admin(user aic) (10.0.0.4) qui se connecte en ssh au serveur de fichier.
j'ai un serveur dhcp qui distribue des adresses sur les réseaux 10.0.1.0 et 10.0.2.0
Je voudrais exécuter mon script sur des pc sur des réseaux 10.0.1.0 et 10.0.2.0
ssh aic@10.0.0.2
nmap -sP -oG ip 10.0.1.0/24 10.0.2.0/24 --exclude mesipfixes
cut -c 6-20 ip | sed '1d;$d'
for i in ip
do
ssh aic@$ip < bash ./monscript
.....
done
.....
......
.......
.......
fin du script
Est ce que cela vous semble correcte en sachant que le ip dans la ligne nmap est un fichier qui récupérè toutes les adresses ip scannés sur les deux réseaux.
Merci pour votre aide
Hors ligne
#2 Le 02/02/2021, à 01:10
- Watael
Re : Exécuter un script par SSH
salut,
en bash :
ssh 10.0.0.2 <<{EOF} #voilà, moi aussi je mets des accolades quand ce n'est pas utile. XD
while read ip
do
ssh "aic@$ip" 'bash -s' </chemin/vers/tonScipt
: ...
done < <(nmap -sP -oG - 10.0.[12].0/24 | awk '/^Host/{print $2}')
{EOF}
: ...
il y a peut-être des protections à mettre devant les variables qui sont déclarées dans le here-doc...
je te recommande de faire des tests !
Dernière modification par Watael (Le 02/02/2021, à 01:12)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 02/02/2021, à 01:25
- domdomdeo
Re : Exécuter un script par SSH
Merci Watael,
je testerai cela dans la journée et je ferai un retour.
Hors ligne
#4 Le 02/02/2021, à 11:47
- domdomdeo
Re : Exécuter un script par SSH
Bonjour, je viens de tester le script et celui-ci me retourne une erreur:
- bash : erreur ligne 4 : caractère inattendue "("
- bash :erreur ligne 4 : `(nmap -sP -oG - 10.0.[12].0/24 | awk '/^Host/{print $2}')'
Voici le script que je voudrais ececuter sur les PC depuis le serveur de fichier :
#!/bin/bash
# Modification du Hostname
beforelastoctet=$(hostname -I | awk '{print$1}' | cut -d. -f3)
lastoctet=$(hostname -I | awk '{print$1}' | cut -d. -f4)
if [ "$beforelastoctet" = "100" ]
then
newname=ABEILLE-$lastoctet
else
newname=BAOBAB-$lastoctet
fi
hostnamectl set-hostname $newname
# Suppression des utilisateurs actuels
grep home /etc/passwd | awk -F : '$3>=1000 && $3<=1100 {print$3}' > uid
cat uid | while read user
do
userdel -r -f "${user}"
# Création des nouveaux utilisateurs via un fichier
cat utilisateurs | while IFS=, log password
do
password=$password
username=$log
useradd -m $username -p $(openssl passwd $password) -d /home/$username -s /bin/bash
done
exit 0
D'ailleurs concernant ce script y a t il moyen de l'améliorer / optimiser. Dois je rajouter les utilisateurs créé dans un groupe et créer un admin sur chaque pc à mettre dans le groupe sudoers.
Merci pour tes conseils
Dernière modification par domdomdeo (Le 02/02/2021, à 12:12)
Hors ligne
#5 Le 02/02/2021, à 12:56
- Watael
Re : Exécuter un script par SSH
il ne faut pas exécuter un script bash en le faisant précéder par sh, car alors ce n'est pas bash qui exécutes le script mais un shell POSIX qui ne comprend pas certaines syntaxes.
il faut donc rendre le script exécutable, et l'appeler en le faisant précéder de son chemin (relatif ou absolu) :
$ chmod +x tonScript
$ ./tonScript # ou /chemin/vers/tonScript
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne