침묵 ssh-add


12

일부 작업을 실행하는 cronjob이 있고 스크립트 시작시 실행되는 ssh-add 호출입니다 (적절한 키를 가진 사용자로 실행되지 않으므로 추가해야하며 나중에는 잘 사용할 수 있습니다) 버전 제어에 정의 된 배포 키). 이것은 다음과 같습니다.

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

이 cronjob이 정기적으로 실행됨에 따라 침묵하고 싶습니다.받은 편지함에 많은 이메일이 있습니다. git pull remote connection hang up 등과 같은 일이 잘못되었을 때만 이메일을 원합니다.

그래서 TLDR, 나는 이것을 계속 본다 :

아이디 추가 : /home/tomjn/.ssh/id_rsa (/home/tomjn/.ssh/id_rsa)

어떻게 종료합니까?

나는 다음과 같은 것을 시도했다.

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

그러나 아무 소용이 없습니다. 매뉴얼 페이지에는 --quiet매개 변수 가 있음을 나타내지 않습니다 . 출력을 침묵시키기 위해 다른 방법이 있습니까?

답변:


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를 리디렉션하는 것만으로 충분합니다.
Stéphane Gourichon

4
에이에 대한 옵션이 지금이 사람이 페이지 또한, 당신은 연결 코드가 지금해야합니까 도움말 출력이 플래그의 언급 플래그가 추가되었습니다 커밋이 단을, 내가 가진 OpenSSH_7.6p1사제에서 내 Mac에서 (사용 가능한 가장 최근의) 이 플래그는 작동하지 않는 것 같습니다. -q옵션은 도움말에서 사용할 수 있지만 키 추가 출력은 변경하지 않습니다.
austinheiman

1
-q쿠분투 18.04에서도 작동하지 않습니다.
systemovich 2018 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.