descobri com algum google tais casos executando o esperar do cron etc não wok com interação Então eu substituí o
interact
com
expect eof
exit
e o scp é bem sucedido
Eu estou tentando implementar um gancho post-commit no svn que irá scp alguns arquivos da máquina svn para alguma outra máquina de backup após cada commit. Eu escrevi o script com o seguinte
spawn /usr/bin/scp -r $l_dir $r_usr@$r_host:/$r_dir
expect {
timeout { send_user "Timeout"; exit 1 }
eof { send_user "\nConnect failed for $r_host at \n"; exit 1 }
-re ".*es..o.*" {
send_user "sending yes\n"
exp_send "yes\r"
exp_continue
}
-re ".*sword.*" {
send_user "sending password\n"
exp_send "$r_pwd\r"
}
}
interact
Este script é chamado a partir do post-commit (bash script) com todas as variáveis necessárias fornecidas.
O problema é que quando executo o gancho post-commit como
./post-commit
então o scp é bem sucedido. mas quando é acionado a partir de um commit real, o login e a senha de acesso são bem-sucedidos, mas os arquivos não são copiados
O script com saída de depuração mostra (quando runnig do gatilho de commit)
sending password
send: sending "vashishth\r" to { exp3 }
interact: received eof from spawn_id exp0
Não é possível usar chaves RSA, portanto, preciso usar o scp com senha. Qualquer ajuda seria muito apreciada.