Eu gostaria de usar o rsync dentro de um script python. Estou chamando usando o subprocess
módulo e autenticando usando chaves públicas armazenadas no authorized_key
arquivo na máquina remota.
O único problema é que, quando eu uso o rsync usando um nome de usuário remoto errado, sou solicitada uma senha, o que obviamente interrompe o script de backup para sempre.
Posso forçar rsync
a saída com erro se não conseguir autenticar, em vez de solicitar a senha?
Udi
re: sugestão de James (não dando tty), para subprocesso, tente colocar stdin = None como parâmetro para Popen.
fonte
Primeiro faça com que o rsync funcione no shell, o comando deve ser parecido.
Se isso falhar, depure o comando ssh por si só. Quando tudo funcionar, veja o que acontece com o script python
Este não é um mau tutorial
fonte
Dependendo de como você está iniciando o rsync, não fornecer um TTY ou PTY pode ajudar.
Muitos programas verificam se eles têm um TTY de controle antes de decidir solicitar a entrada do usuário. O comportamento padrão de system () e chamadas semelhantes é fornecer um tty para subprogramas, mas você pode desativar isso.
Também pode ser possível desativar a autenticação por senha inteiramente no lado remoto, se você estiver no controle de ambos os sistemas e quiser se afastar da autenticação por senha para obter os benefícios de segurança ao resolver esse problema.
Se você estiver executando o rsync sobre SSH, poderá adicionar o seguinte ao seu arquivo ssh_config para o host em questão ou através da opção de linha de comando -o:
Em um teste rápido (apenas de ssh, não de rsync) que causou a saída imediata do SSH quando minha chave pública não foi aceita sem solicitar uma senha.
fonte