Não é possível copiar um arquivo via script do host local para o host remoto

0


Eu estou tentando escrever um script que pode copiar um arquivo do host local para o host remoto. E então eu quero executar esse script do host local. Mas eu não sou capaz de copiar. Eu pesquisei e encontrei o código abaixo. Mas, ao executá-lo, ele está pedindo uma frase secreta. Mesmo se eu pressionar Enter ou dar algum valor ou manipular isso no script, não será possível copiar o arquivo. Por favor, sugira o que pode estar errado com este script?

#!/bin/bash
Node_ip="10.172.54.2"

IP=("$Node_ip")

in_ip=""

get_ip()  #Give the ip of current machine
{
        for i in 'ifconfig | cut -d" " -f1 | sort | grep -v '^$''
        do
        if [ $i = "eth0" ]
        then
                if ifconfig $i | grep addr: &> /dev/null
                then
                        in_ip="$(ifconfig $i | grep addr: | awk '{print $2}' | cut -d":" -f2)"
                        echo "IP is : $in_ip"
                fi
        fi
        done
}

SCP_PASSWORD="gauranga"

for ne in "${IP[@]}"
do
    get_ip      #in_ip now has ip of current shell
    expect -c "  
       spawn scp gaur@$in_ip:/home/gaur/work_automation/commands.sh root@$ne:/root/gauranga/
       expect yes/no { send yes; exp_continue }
       expect password: { send $SCP_PASSWORD}
       exit
    "
done
    
por Gauranga 27.05.2014 / 09:43

2 respostas

2

Fazendo algumas suposições aqui:

  • a máquina remota é acessível a partir do local, sob IP 1.2.3.4
  • 1.2.3.4 tem o SSH instalado e funcionando na porta aberta 22
  • você sabe a senha do usuário foobar on 1.2.3.4

Para copiar o script para o diretório inicial do foobar:

scp /path/to/script.sh [email protected]:~/

Adicionando permissões executáveis ao script e executando-o:

ssh [email protected] "chmod +x ~/script.sh"

ssh [email protected] "~/script.sh"

Se você precisar fazer isso frequentemente / automaticamente, leia sobre configurando chaves SSH para um login sem senha . E NÃO armazene sua senha como texto simples em um script, pois isso representa um sério risco de segurança - as chaves SSH foram criadas apenas para esse propósito.

    
por 27.05.2014 / 10:02
0

Você está esquecendo de "digitar" para seus comandos de envio:

expect -c << END_EXPECT  
   spawn scp gaur@$in_ip:/home/gaur/work_automation/commands.sh root@$ne:/root/gauranga/
   expect { 
       yes/no { send "yes\r"; exp_continue }
       password: { send "$SCP_PASSWORD\r"}
   }
   expect eof
END_EXPECT
    
por 27.05.2014 / 16:30