Silêncio ssh-add

12

Eu tenho um cronjob que executa algumas tarefas e, no início do script, ele é executado como uma chamada ssh-add (ele não é executado como usuário com a chave apropriada, portanto, ele precisa ser adicionado e, no futuro, pode muito bem usar um chave de implantação definida no controle de versão). Isso é algo como isto:

ssh-agent bash -c "ssh-add /home/tomjn/.ssh/id_rsa; etc... "

Quero silenciá-lo, pois esse cronjob é executado regularmente e tenho muitos emails na minha caixa de entrada que são completamente inúteis para mim, afirmando que sim, a chave foi adicionada. Eu só quero e-mails quando as coisas dão errado, como uma conexão remota git pull, etc., o que acontece.

Então, TLDR, continuo vendo isso:

Identidade adicionada: /home/tomjn/.ssh/id_rsa (/home/tomjn/.ssh/id_rsa)

Como calar a boca?

Eu tentei coisas como:

ssh-add /home/tomjn/.ssh/id_rsa > /dev/null

Mas sem sucesso. A página de manual não indica que há um --quietparâmetro. Há algo mais que eu possa fazer para silenciar a saída?

Tom J Nowell
fonte

Respostas:

18

A saída do ssh-addcomando está em STDERR. Você precisa redirecionar STDERR para / dev / null para suprimir a saída:

mtak@frisbee:~$ ssh-add .ssh/id_rsa 2>/dev/null
mtak@frisbee:~$ 

ou, como alternativa, suprimir toda a saída, finalizando o comando com >/dev/null 2>&1

mtak
fonte
2
Um sinalizador silencioso seria mais refinado, pois permitiria silenciar a operação normal e permitir que erros (como chave não encontrada ou legível) fossem detectados. Uma rápida olhada em github.com/openssh/openssh-portable/blob/master/ssh-add.c confirma que não há opção no código fonte. Outras opções são filtrar especificamente a mensagem "adicionada", mas no bash isso normalmente interfere no tratamento de erros (se você desejar fazer set -eualgumas verificações de sanidade em tempo de execução). Nenhuma dica de que tudo isso é importante aqui, portanto, basta redirecionar o stderr deve ser suficiente.
Stéphane Gourichon
4
Agora existe uma opção para isso na página de manual Além disso, o código que você vinculou agora menciona esse sinalizador na saída da ajuda O sinalizador foi adicionado neste commit No entanto, eu tenho OpenSSH_7.6p1no meu mac o homebrew (o mais recente disponível) e esse sinalizador parece não funcionar - a -qopção está disponível na ajuda, mas não altera a chave e adiciona a saída.
austinheiman
1
-qtambém não funciona no Kubuntu 18.04.
systemovich