Qualquer forma de enviar um arquivo para o servidor A para B & C usando scp com prompt de arquivo / senha

0

cenário: Servidores: A, B e C (todos linux)

Arquivo: Arquivo.txt

Agora, preciso enviar o arquivo do Servidor A para o B & C usando o SCP, mas preciso digitar a senha e o nome do arquivo apenas uma vez.

Precisa saber como alcançá-lo.

Tentei sshpass , mas parece que não está instalado e não consigo instalá-lo: (

sshpass:command not found

Código usado: (Aqui precisa digitar a senha toda vez)

#!/bin/bash

echo "Enter Package Name:\c"

read package

package1="$package"

echo

scp ${package1} User@ServerB:/tmp/

scp ${package1} User@ServerC:/tmp/
    
por Arun kumar 22.04.2017 / 11:20

1 resposta

0

Você pode remover a solicitação de "senha" assim. No PC com o arquivo (Servidor A), em um tipo de terminal:

ssh-keygen -t rsa -b 2048
Enter file in which to save the key (/<user>/.ssh/id_rsa): [Hit Enter]
Enter passphrase (empty for no passphrase): [Hit Enter]
Enter same passphrase again: [Hit Enter]
Your identification has been saved in /<user>/.ssh/id_rsa.
Your public key has been saved in /<user>/.ssh/id_rsa.pub.

Então você precisa copiar /<user>/.ssh/id_rsa.pub para o Servidor B e C. No Servidor B e C, faça o seguinte. NOTA: O mkdir -p ~/.ssh pode não ser necessário.

mkdir -p ~/.ssh
cat id_rsa.pub >> ~/.ssh/authorized_keys
rm id_rsa.pub

Agora você pode se conectar do Servidor A ao B e C sem uma senha. Por exemplo, seu script agora seria tão simples quanto (com uma verificação de arquivo básica):

#!/bin/sh

ask () {
    echo -n "Enter Package Name: "
    read package

    if [ ! -f "$package" ]
    then
        echo "
${package} is not a file. Try again.
"
        ask
    else 
        upload "$package"
    fi
}

upload () {
    echo "put \"$1\" \"/tmp/$1\" > sftp.cmd
    sftp User@serverB < sftp.cmd
    sftp User@serverC < sftp.cmd
    rm -f sftp.cmd  
}

ask
exit
    
por 22.04.2017 / 14:32

Tags