Copie archivos por lotes desde un host Linux a varios servidores

  Durante la operación y el mantenimiento, a veces es necesario copiar un archivo en lotes a varios servidores Linux. Si copia manualmente uno por uno, la eficiencia es relativamente baja. Para mejorar la eficiencia de la operación y el mantenimiento, puede utilizar scripts para copiar archivos de un host Linux a varios servidores en lotes. Los pasos de implementación son los siguientes.

Uno, configuración del host Linux inicio de sesión sin contraseña ssh

  En primer lugar, el host de Linux debe estar configurado para inicio de sesión SSH sin contraseña. Uno de ellos se puede utilizar como host de confianza para iniciar sesión en todos los demás hosts sin contraseña. Para conocer el método de configuración específico, consulte " Configuración de la relación de confianza entre dos hosts Linux (y cómo cancelar) ".

Dos, cree un archivo de lista de hosts hosts

  El comando vi hosts crea un archivo de lista de hosts y enumera todos los hosts remotos en el archivo.

$ vi hosts

$ cat hosts 
101.132.242.27
47.103.217.188

Tres, cree un archivo de secuencia de comandos remotecopy.sh

#!/bin/bash
while getopts f: OPT;
do
    case $OPT in
        f|+f)
            files="$OPTARG $files"
            ;;
        *)
            echo "usage: `basename $0` [-f hostfile] <from> <to>"
            exit 2
    esac
done
shift `expr $OPTIND - 1`
 
if [ "" = "$files" ];
then
    echo "usage: `basename $0` [-f hostfile] <from> <to>"
    exit
fi
 
for file in $files
do
    if [ ! -f "$file" ];
    then
        echo "no hostlist file:$file"
        exit
fi
hosts="$hosts `cat $file`"
done
 
for host in $hosts;
do
    echo "scp $1 $2@$host:$3"
    scp $1 $2@$host:$3
done

Cuarto, agregue permisos de ejecución al archivo de secuencia de comandos remotecopy.sh

$ chmod u+x remotecopy.sh

5. Ejecute comandos de secuencia de comandos en hosts de confianza

  El formato del comando de ejecución del script es el siguiente:

 ./remotecopy.sh -f hosts [yourfile] [username] [remotepath] 

  Nota: El parámetro 1 [su archivo] es el archivo que se copiará en el host de confianza, el parámetro 2 [nombre de usuario] es el usuario de inicio de sesión, el parámetro 3 [ruta remota] es la ruta del archivo del host remoto.

  Los ejemplos son los siguientes:

$ ./remotecopy.sh -f hosts test.log testuser /home/testuser/

  Puede copiar el archivo test.log en la ruta actual al directorio / home / testuser / de otros hosts en lotes para evitar el inicio de sesión secreto del usuario testuser.

  Si necesita copiar carpetas en lotes, simplemente modifique el comando scp en el archivo remotecopy.sh.

Referencia del artículo: Cómo
copiar archivos de una máquina Linux a múltiples

Supongo que te gusta

Origin blog.csdn.net/piaoranyuji/article/details/109772375
Recomendado
Clasificación