Silence ssh-add

12

Mam cronjob, który uruchamia niektóre zadania, a na początku skryptu jest uruchamiane wywołanie ssh-add (nie działa jako użytkownik z odpowiednim kluczem, więc trzeba go dodać, a w przyszłości może dobrze użyć wdrożyć klucz zdefiniowany w kontroli wersji). Wygląda to mniej więcej tak:

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

Chcę go wyciszyć, ponieważ ten cronjob działa regularnie i mam w swojej skrzynce odbiorczej wiele e-maili, które są dla mnie całkowicie bezużyteczne, stwierdzając, że tak, klucz został dodany. Chcę tylko e-maili, gdy coś pójdzie nie tak, jak zdalne rozłączanie połączenia git pull itp., Co się dzieje.

Więc TLDR, ciągle to widzę:

Dodano tożsamość: /home/tomjn/.ssh/id_rsa (/home/tomjn/.ssh/id_rsa)

Jak to zamknąć?

Próbowałem takich rzeczy jak:

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

Ale bez skutku. Strona podręcznika nie wskazuje, że istnieje --quietparametr, czy jest coś innego, co mogę zrobić, aby wyciszyć wyjście?

Tom J Nowell
źródło

Odpowiedzi:

18

Dane wyjściowe ssh-addpolecenia znajdują się w STDERR. Musisz przekierować STDERR do / dev / null, aby ukryć dane wyjściowe:

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

lub alternatywnie pomiń wszystkie dane wyjściowe, kończąc polecenie za pomocą >/dev/null 2>&1

mtak
źródło
2
Cicha flaga byłaby drobniejsza, ponieważ pozwoliłaby wyciszyć normalne działanie, jednocześnie pozwalając na wykrycie błędów (takich jak brak klucza lub brak możliwości odczytu). Szybkie spojrzenie na github.com/openssh/openssh-portable/blob/master/ssh-add.c potwierdza, że ​​nie ma żadnej opcji w kodzie źródłowym. Inne opcje to specjalnie filtrować komunikat „dodany”, ale w bash zwykle przeszkadza to w obsłudze błędów (jeśli zależy Ci na set -eusprawdzeniu poprawności w czasie wykonywania). Nic nie wskazuje na to, że wszystko to jest tutaj ważne, więc wystarczy przekierowanie stderr.
Stéphane Gourichon
4
Teraz jest taka opcja na stronie podręcznika. Również w kodzie, który podlinkowałeś, jest teraz wzmianka o tej fladze w wyjściu pomocy . Flaga została dodana w tym zatwierdzeniu. Mam jednak OpenSSH_7.6p1na moim komputerze Mac z homebrew (najnowszy dostępny) i ta flaga wydaje się nie działać - -qopcja jest dostępna w pomocy, ale nie zmienia wyniku dodawania klucza.
austinheiman
1
-qnie działa również na Kubuntu 18.04.
systemovich