GNU/Linux >> Tutoriales Linux >  >> Linux

escriba un script de shell para ssh a una máquina remota y ejecute comandos

Hay varias máquinas Linux remotas, y necesito escribir un script de shell que ejecutará el mismo conjunto de comandos en cada máquina. (Incluyendo algunas operaciones sudo). ¿Cómo se puede hacer esto usando secuencias de comandos de shell?

Puedes hacer esto con ssh, por ejemplo:

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

Cuando ssh'ing a la máquina remota, cómo manejar cuando solicita la autenticación de huellas dactilares RSA.

Puedes agregar el StrictHostKeyChecking=no opción para ssh:

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

Esto deshabilitará la verificación de la clave de host y agregará automáticamente la clave de host a la lista de hosts conocidos. Si no desea que se agregue el host al archivo de hosts conocidos, agregue la opción -o UserKnownHostsFile=/dev/null .

Tenga en cuenta que esto deshabilita ciertos controles de seguridad , por ejemplo, protección contra ataques de intermediarios. Por lo tanto, no debe aplicarse en un entorno sensible a la seguridad.


Instale sshpass usando, apt-get install sshpass luego edite el script y coloque las direcciones IP, los nombres de usuario y la contraseña de sus máquinas Linux en el orden respectivo. Después de eso, ejecute ese script. Eso es todo ! Este script instalará VLC en todos los sistemas.

#!/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. En Bash, ¿cuándo alias, cuándo escribir y cuándo escribir una función?

  2. Ssh:¿ejecutar comandos remotos, desconectarse completamente de la conexión Ssh?

  3. ¿Comportamiento inesperado de un script de Shell?

  4. ¿Cómo ejecutar comandos en Gnuplot usando Shell Script?

  5. 5 formas de ejecutar comandos UNIX/Linux (y scripts de shell) en segundo plano

Cómo ejecutar comandos de Linux en un sistema remoto a través de SSH

Comandos SSH en Linux con ejemplos de uso

Ejecutar comandos en sistemas Linux remotos a través de SSH

¿Cómo ejecutar un comando en un script de Shell?

Cómo crear y ejecutar un script de shell en Ubuntu 22.04

Diferencia entre comandos en bash script y comandos en terminal