沉默ssh-add


12

我有一个运行某些任务的cronjob,在脚本的开头,它运行的是ssh-add调用(它没有以具有适当密钥的用户身份运行,因此需要添加,以后可能会使用部署版本控制中定义的密钥)。看起来像这样:

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

我想让它静音,因为此cronjob定期运行,并且收件箱中有很多电子邮件对我完全没有用,指出是的,已添加了密钥。我只在出现问题时才需要发送电子邮件,例如git pull远程连接挂断等。

所以TLDR,我一直看到:

添加的身份:/home/tomjn/.ssh/id_rsa(/home/tomjn/.ssh/id_rsa)

如何关闭它?

我已经尝试过类似的事情:

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

但无济于事。手册页没有表明有--quiet参数,还有其他方法可以使输出静音吗?

Answers:


18

ssh-add命令的输出在STDERR上。您需要将STDERR重定向到/ dev / null以禁止输出:

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

或者通过以以下命令结束命令来抑制所有输出 >/dev/null 2>&1


2
安静标志会更精细,因为它可以使正常操作静音,同时允许发现错误(例如找不到密钥或不可读)。快速浏览github.com/openssh/openssh-portable/blob/master/ssh-add.c确认源代码中没有选项。其他选项是专门过滤“添加的”消息,但是在bash中,这通常会干扰错误处理(如果您需要set -eu进行一些运行时完整性检查)。没有任何暗示这在这里很重要,因此只需重定向stderr就足够了。
斯特凡纳·古里科

4
手册页上现在有一个选项。 此外,您链接的代码现在在帮助输出中确实提到了该标记此提交中已添加了该标记。但是,我OpenSSH_7.6p1在Mac上从homebrew获得(最近可用)并且该标志似乎不起作用-该-q选项在帮助中可用,但不会更改键添加输出。
austinheiman

1
-q在Kubuntu 18.04上也不起作用。
systemovich
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.