Quando você executa manualmente o script pela primeira vez, o que ele faz de diferente? Experimente a primeira execução manual com bash -x script.sh
e veja se há algo útil nela.
Qual diretório é $CURRENT_ALL_USERS
escrito para?
Esse é provavelmente o seu problema, a partir do keychain (1) página de manual:
OWhen keychain is run, it checks for a running ssh-agent, otherwise it starts one. It saves the ssh-agent environment variables to ~/.keychain/${ HOSTNAME }-sh, so that subsequent logins and non-interactive shells such as cron jobs can source the file and make passwordless ssh connections. In addition, when keychain runs, it verifies that the key files specified on the command-line are known to ssh-agent, otherwise it loads them, prompting you for a password if necessary.
keychain faz o processamento especial na primeira vez em que é executado, em particular, ele inicia o ssh-agent. Portanto, o ssh-agent deve estar com falha quando executado a partir do cron, mas funcionando quando o script é executado manualmente.
Sugiro que você considere a configuração de um usuário especial para executar essa verificação e / ou um conjunto especial de chaves privadas / públicas. Não coloque uma senha nesse par de chaves. Então você pode se livrar de todo o chaveiro e usar essas chaves diretamente no script sem ter que se preocupar em carregar chaves com chaves, ssh-agent, ssh-add, etc.
Além disso, como um outro lado aleatório, um refinamento legal desse script seria usar uma matriz bash para coletar todas as informações do usuário que fizeram o login, em vez de anexar a uma string como você está fazendo agora.