Você já olhou para espera ?
Eu preciso ter um script periodicamente arquivos rsync de um host remoto via ssh. A conta na qual o script é executado não possui o diretório inicial no host remoto, portanto, não posso armazenar minha chave pública no host remoto. Fico feliz em armazenar minha senha em um arquivo no meu host local, mas não consigo fazer o rsync usar a senha.
A opção --password-file
é apenas uma opção para se conectar a um daemon rsync, e o prompt de senha não lê de stdin.
Você já olhou para espera ?
Procure o programa sshpass
em sua distribuição. Depois de ter isso, você pode fazer:
rsync –e 'sshpass -f passwordfile ssh -l user' host:path
ou colocando tudo em um arquivo:
rsync –e 'sshpass -d 300 ssh -l user' host:path 300<<<'password'
Você pode querer alterar a opção AuthorizedKeysFile
no sshd_config
do servidor remoto, se essa for uma opção, para que você possa configurar sua chave pública sem um diretório base. Nesse caso, seria algo como /home/%u/.ssh/authorized_keys
, para minimizar potenciais conflitos com outros usuários no sistema.