Esperar script para copiar o arquivo

2

Estou tentando mover / copiar alguns arquivos da minha máquina local para outro host que eu possa acessar via ssh. Mas infelizmente este script abaixo não está funcionando.

quando executo este script, ele está me perguntando Are you sure you want to continue connecting (yes/no)? toda vez que eu o executo.

Eu tenho 3 arquivos na minha máquina local ranfull ranhalf midran que eu preciso transferir / copiar para outro host através do script scp, mas apenas o primeiro arquivo está sendo copiado.

Não será possível definir sshkeygen .

#!/bin/bash

HOSTS="VM2 VM3 VM4 VM1"

read -p "Password: " PASSWORD

for HOST in $HOSTS
do
expect -c "
spawn /usr/bin/scp /tmp/ranfull ranhalf midran root@$HOST:/tmp/
expect {
"*password:*" { send $PASSWORD\r;interact }
}
exit
"
done
    
por albertovar 08.11.2016 / 07:39

2 respostas

1

Primeiro, sua citação é suspeita: você tem aspas duplas em uma string entre aspas duplas. Vamos consertar isso e melhorar o recuo:

for HOST in $HOSTS; do
    expect -c <<END_EXPECT
        spawn /usr/bin/scp /tmp/ranfull ranhalf midran root@$HOST:/tmp/
        expect {
            "*password:*" {
                send $PASSWORD\r
                interact
            }
        }
        exit
END_EXPECT
done

Agora, para acomodar um aviso que pode ou não aparecer, espere que você faça isso:

        expect {
            "Are you sure you want to continue connecting*" {
                send yes\r
                exp_continue
            }
            "*password:*" {
                send $PASSWORD\r
                interact
            }
        }

exp_continue essencialmente "faz um loop" de volta ao comando expect para que ele ainda possa assistir a outro prompt "Tem certeza ..." ou o prompt de senha.

    
por 08.11.2016 / 20:11
1

-o StrictHostKeyChecking = não

#!/bin/bash HOSTS="VM2 VM3 VM4 VM1" read -p "Password: " PASSWORD for HOST in $HOSTS do expect -c " spawn /usr/bin/scp -o StrictHostKeyChecking=no /tmp/ranfull ranhalf midran root@$HOST:/tmp/ expect { "password:" { send $PASSWORD\r;interact } } exit " done

    
por 08.11.2016 / 22:12