Você precisa definir
User=user_name
no seu arquivo .service para que seja executado como um usuário diferente.
Eu tenho um script na minha máquina CoreOS que se parece com abaixo, que estou usando para ssh para vários nós de uma lista e obter detalhes necessários
host_det=$(ssh -Ao StrictHostKeyChecking=no -o BatchMode=yes -o ConnectTimeout=5 -l $user $node "
hostname
docker ps | grep haproxy
sudo df -h |grep abcd ")
Estou executando o ssh usando um usuário não-root que configurei como sem senha, e ele está funcionando bem se eu estiver executando-o como o mesmo usuário normalmente. (./ssh.sh)
Depois de programar esse script usando um temporizador systemd, o ssh está me pedindo senha e o script está falhando. Eu sei que quando usamos o timer, ele está sendo executado como usuário root e é por isso que ele está solicitando senha, mesmo que eu tenha especificado meu usuário ssh explicitamente. Existe alguma maneira de o CoreOS agendar o temporizador para usuários não-root?
Meu temporizador e amp; arquivos de serviço são fornecidos abaixo.
cat /etc/systemd/system/ssh.timer
[Unit]
Description=Run ssh.service every morning 8:30
[Timer]
OnCalendar=*-*-* 08:30:00
Persistent=true
[Install]
WantedBy=multi-user.target
cat /etc/systemd/system/ssh.service
[Unit]
Description=Run the ssh script
[Service]
Type=oneshot
ExecStart=/usr/bin/bash -c '/home/user_name/ssh.sh 2>/tmp/date'
Você precisa definir
User=user_name
no seu arquivo .service para que seja executado como um usuário diferente.
O problema estava com SSH_AUTH_SOCK
, pois o ambiente do agendador é diferente do normal. Depois de exportar um SSH_AUTH_SOCK
em funcionamento, o script começou a funcionar conforme o esperado. Obrigado pela sua ajuda.
Tags ssh coreos scheduling systemd-timer