faça login no servidor remoto usando o programa expect

0

Eu escrevi um programa esperado (veja abaixo :), onde estou tentando copiar arquivos para a máquina remota. Enquanto scp 'ing, se eu fornecer senha errada, minha expectativa é de segunda condição será cumprida e imprimir o erro e o programa será encerrado.

No entanto, o que acabou acontecendo é que, independentemente de eu fornecer a senha correta ou não, ele está cumprindo todas as condições e erros do programa.

Estou fazendo algo errado aqui? Qualquer ajuda seria muito apreciada.

spawn scp -p -o StrictHostKeyChecking=no $x $y ${toolpath}/cmd.sh $user@$ip:/x/home/$user
while (1) {
expect {
        "?assword:" {
                send_log "Password entered for scp'ing to $ip\n"
                send  "$password\n"
                }
        "Permission denied, please try again" {
                send_user "$ip : You have entered wrong password, Permission denied\n"
                exit 1
                }
        "timeout" {
                send_user "$ip : Failed to scp - timed out\n"
                exit 1
                }
        "lost connection" {
                send_user "$ip : Connection lost\n"
                exit 1
                }
        }
}
    
por Paresh Patel 26.05.2016 / 07:47

1 resposta

0

Você está perdendo exp_continue no bloco de senha. Isso essencialmente voltará ao início do comando expect para que você possa esperar por um dos outros padrões.

Mas, falando sério, use a autenticação por chave ssh. É muito mais fácil.

    
por 26.05.2016 / 16:15

Tags