Ter o cron parse o arquivo de configuração SSH para endereços e opções do servidor

2

Como se configura o cron para analisar ~/.ssh/config para obter os endereços IP e outras opções (como o IdentityFile) para o SSH? Obviamente, adicionar source /home/user/.ssh/config não ajuda.

Eu não quero adicionar as opções no script executado a partir do cron, pois ele chama mais de vinte servidores que possuem opções variadas. Eu mantenho o arquivo ~/.ssh/config atualizado quando endereços IP ou chaves PEM mudam, e eu não quero duplicar esse esforço para outro arquivo para manter.

O Cron não herda o ambiente do usuário para configurá-lo. Assim, para um determinado script:

$ cat .ssh/config
Host alpha
    Hostname 1.2.3.4
    User dotan
    IdentityFile ~/.ssh/Dotan.pem
    IdentitiesOnly yes

$ cat script.sh
#!/bin/bash
echo "Alpha"
ssh alpha dmesg

Isso funciona:

$ ./script.sh > output.log
$ cat output.log
Alpha
[73542728.181371] type=1400 audit(1397118713.764:13): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=710 comm="apparmor_parser"

No entanto, este cronjob não funciona :

0 0 * * * /home/dotan/script.sh > /home/dotan/output.log

A saída é:

Alpha

Isso prova que o script foi executado, mas o SSH não conseguiu se conectar.

EDITAR: Acabei de descobrir que o ssh tem a opção -F /home/dotan/.ssh/config para especificar um arquivo de configuração, mas isso não resolveu o problema.

    
por dotancohen 12.05.2014 / 09:17

1 resposta

2

Seu ambiente será diferente. Compare a saída de env quando executado com / sem cron.

Além disso, onde você está colocando isso no cron? Ele está sendo executado como sua conta ou está sendo executado como root (não é possível ver seu trabalho no cron)

    
por 12.05.2014 / 11:58