GNU/Linux >> Linux Esercitazione >  >> Linux

scrivi uno script di shell su ssh su una macchina remota ed esegui i comandi

Esistono più macchine Linux remote e ho bisogno di scrivere uno script di shell che eseguirà lo stesso set di comandi in ogni macchina. (Incluse alcune operazioni sudo). Come si può fare questo usando lo scripting della shell?

Puoi farlo con ssh, per esempio:

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

Quando si invia tramite ssh alla macchina remota, come gestire quando viene richiesta l'autenticazione dell'impronta digitale RSA.

Puoi aggiungere il StrictHostKeyChecking=no opzione per ssh:

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

Ciò disabiliterà il controllo della chiave dell'host e aggiungerà automaticamente la chiave dell'host all'elenco degli host conosciuti. Se non vuoi che l'host venga aggiunto al file hosts conosciuto, aggiungi l'opzione -o UserKnownHostsFile=/dev/null .

Tieni presente che questo disabilita alcuni controlli di sicurezza , ad esempio protezione contro l'attacco man-in-the-middle. Non dovrebbe quindi essere applicato in un ambiente sensibile alla sicurezza.


Installa sshpass usando, apt-get install sshpass quindi modifica lo script e metti gli IP, i nomi utente e la password delle tue macchine Linux nel rispettivo ordine. Dopodiché, esegui quello script. Questo è tutto ! Questo script installerà VLC in tutti i sistemi.

#!/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. Ssh:eseguire comandi remoti, staccando completamente dalla connessione Ssh?

  2. Comportamento imprevisto di uno script di shell?

  3. Come eseguire i comandi in Gnuplot usando lo script della shell?

  4. 5 modi per eseguire comandi UNIX/Linux (e script della shell) in background

  5. 11 Utili comandi “ssh” e “scp” in Linux

Come eseguire i comandi Linux su un sistema remoto su SSH

Comandi SSH in Linux con esempi di utilizzo

Esegui comandi su sistemi Linux remoti tramite SSH

Come eseguire un comando in uno script della shell?

Come creare ed eseguire uno script di shell in Ubuntu 22.04

Esegui i comandi sulla macchina remota tramite PHP