GNU/Linux >> Tutoriels Linux >  >> Linux

écrire un script shell en ssh sur une machine distante et exécuter des commandes

Il existe plusieurs machines Linux distantes et j'ai besoin d'écrire un script shell qui exécutera le même ensemble de commandes sur chaque machine. (Y compris certaines opérations sudo). Comment cela peut-il être fait en utilisant des scripts shell ?

Vous pouvez le faire avec ssh, par exemple :

#!/bin/bash
USERNAME=someUser
HOSTS="host1 host2 host3"
SCRIPT="pwd; ls"
for HOSTNAME in ${HOSTS} ; do
    ssh -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done

Lors d'une connexion ssh à la machine distante, comment gérer le moment où elle demande l'authentification par empreinte digitale RSA.

Vous pouvez ajouter le StrictHostKeyChecking=no option pour ssh :

ssh -o StrictHostKeyChecking=no -l username hostname "pwd; ls"

Cela désactivera la vérification de la clé d'hôte et ajoutera automatiquement la clé d'hôte à la liste des hôtes connus. Si vous ne souhaitez pas que l'hôte soit ajouté au fichier des hôtes connus, ajoutez l'option -o UserKnownHostsFile=/dev/null .

Notez que cela désactive certains contrôles de sécurité , par exemple la protection contre les attaques de l'homme du milieu. Il ne doit donc pas être appliqué dans un environnement sensible à la sécurité.


Installez sshpass en utilisant apt-get install sshpass puis éditez le script et mettez les adresses IP, les noms d'utilisateur et le mot de passe de vos machines Linux dans l'ordre respectif. Après cela, exécutez ce script. C'est ça ! Ce script installera VLC sur tous les systèmes.

#!/bin/bash
SCRIPT="cd Desktop; pwd;  echo -e 'PASSWORD' | sudo -S apt-get install vlc"
HOSTS=("192.168.1.121" "192.168.1.122" "192.168.1.123")
USERNAMES=("username1" "username2" "username3")
PASSWORDS=("password1" "password2" "password3")
for i in ${!HOSTS[*]} ; do
     echo ${HOSTS[i]}
     SCR=${SCRIPT/PASSWORD/${PASSWORDS[i]}}
     sshpass -p ${PASSWORDS[i]} ssh -l ${USERNAMES[i]} ${HOSTS[i]} "${SCR}"
done

Linux
  1. Continuer les commandes Shell une fois connecté à Ssh ?

  2. Comment exécuter des commandes dans Gnuplot à l'aide d'un script Shell ?

  3. Script mixte shell et python possible ?

  4. Exécuter des commandes sur une machine distante via PHP

  5. Meilleur moyen de scripter des commandes SSH distantes dans Batch (Windows)

Comment exécuter des commandes Linux sur un système distant via SSH

Commandes SSH sous Linux avec exemples d'utilisation

Exécuter des commandes sur des systèmes Linux distants via SSH

Comment exécuter une commande dans un script shell ?

Comment créer et exécuter un script shell dans Ubuntu 22.04

Différence entre les commandes dans le script bash et les commandes dans le terminal