GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Schreiben Sie ein Shell-Skript, um ssh zu einem Remote-Computer zu senden und Befehle auszuführen

Es gibt mehrere Remote-Linux-Rechner, und ich muss ein Shell-Skript schreiben, das denselben Befehlssatz auf jedem Rechner ausführt. (Einschließlich einiger Sudo-Operationen). Wie kann dies mit Shell-Scripting erreicht werden?

Sie können dies zum Beispiel mit ssh tun:

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

Beim SSH-Versand zum Remote-Rechner, wie damit umgegangen wird, wenn er zur Authentifizierung per RSA-Fingerabdruck auffordert.

Sie können den StrictHostKeyChecking=no hinzufügen Option für ssh:

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

Dadurch wird die Überprüfung des Hostschlüssels deaktiviert und der Hostschlüssel automatisch zur Liste der bekannten Hosts hinzugefügt. Wenn Sie nicht möchten, dass der Host zur Datei bekannter Hosts hinzugefügt wird, fügen Sie die Option -o UserKnownHostsFile=/dev/null hinzu .

Beachten Sie, dass dadurch bestimmte Sicherheitsprüfungen deaktiviert werden , zum Beispiel Schutz vor Man-in-the-Middle-Angriffen. Es sollte daher nicht in einer sicherheitssensiblen Umgebung eingesetzt werden.


Installieren Sie sshpass mit apt-get install sshpass Bearbeiten Sie dann das Skript und bringen Sie die IPs, Benutzernamen und das Passwort Ihrer Linux-Maschinen in die entsprechende Reihenfolge. Führen Sie danach dieses Skript aus. Das ist es ! Dieses Skript installiert VLC auf allen Systemen.

#!/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. Wann soll in Bash ein Alias, wann ein Skript und wann eine Funktion geschrieben werden?

  2. Ssh – Remote-Befehle ausführen, vollständig von der SSH-Verbindung trennen?

  3. Unerwartetes Verhalten eines Shell-Skripts?

  4. Shell-Befehle fortsetzen, sobald eine Verbindung zu SSH besteht?

  5. Wie führe ich Befehle in Gnuplot mit Shell-Skript aus?

So führen Sie Linux-Befehle auf einem Remote-System über SSH aus

SSH-Befehle in Linux mit Verwendungsbeispielen

Ausführen von Befehlen auf Remote-Linux-Systemen über SSH

Wie führe ich einen Befehl in einem Shell-Skript aus?

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus

Unterschied zwischen Befehlen im Bash-Skript und Befehlen im Terminal