Stille ssh-add

12

Ich habe einen Cronjob, der einige Aufgaben ausführt, und zu Beginn des Skripts wird ein SSH-Add-Aufruf ausgeführt (er wird nicht als Benutzer mit dem entsprechenden Schlüssel ausgeführt, muss also hinzugefügt werden, und in Zukunft wird möglicherweise ein verwendet Bereitstellungsschlüssel in der Versionskontrolle definiert). Das sieht ungefähr so ​​aus:

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

Ich möchte es zum Schweigen bringen, da dieser Cronjob regelmäßig ausgeführt wird und ich viele E-Mails in meinem Posteingang habe, die für mich völlig nutzlos sind und besagen, dass der Schlüssel hinzugefügt wurde. Ich möchte nur E-Mails, wenn etwas schief geht, wie z. B. ein Auflegen einer Git-Pull-Remote-Verbindung usw., was tatsächlich passiert.

Also TLDR, ich sehe das immer wieder:

Identität hinzugefügt: /home/tomjn/.ssh/id_rsa (/home/tomjn/.ssh/id_rsa)

Wie halte ich es zum Schweigen?

Ich habe Dinge ausprobiert wie:

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

Aber ohne Erfolg. Die Manpage zeigt nicht an, dass es einen --quietParameter gibt. Kann ich noch etwas tun, um die Ausgabe stumm zu schalten?

Tom J Nowell
quelle

Antworten:

18

Die Ausgabe des ssh-addBefehls erfolgt auf STDERR. Sie müssen STDERR nach / dev / null umleiten, um die Ausgabe zu unterdrücken:

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

oder unterdrücken Sie alternativ alle Ausgaben, indem Sie den Befehl mit beenden >/dev/null 2>&1

mtak
quelle
2
Ein leises Flag wäre feinkörniger, da es den normalen Betrieb zum Schweigen bringen würde, während Fehler (wie Schlüssel nicht gefunden oder nicht lesbar) entdeckt werden könnten. Ein kurzer Blick auf github.com/openssh/openssh-portable/blob/master/ssh-add.c bestätigt, dass der Quellcode keine Option enthält. Andere Optionen sind das gezielte Filtern der "hinzugefügten" Nachricht. In Bash beeinträchtigt dies jedoch normalerweise die Fehlerbehandlung (wenn Sie set -eueinige Laufzeitprüfungen durchführen möchten). Kein Hinweis darauf, dass dies alles hier wichtig ist, daher sollte es ausreichen, nur stderr umzuleiten.
Stéphane Gourichon
4
Es gibt jetzt eine Option dafür auf der Manpage. Außerdem enthält der von Ihnen verknüpfte Code dieses Flag jetzt in der Hilfeausgabe. Das Flag wurde in diesem Commit hinzugefügt. Ich habe jedoch OpenSSH_7.6p1auf meinem Mac von Homebrew (zuletzt verfügbar) und dieses Flag scheint nicht zu funktionieren - die -qOption ist in der Hilfe verfügbar, ändert jedoch nicht die Ausgabe zum Hinzufügen von Schlüsseln.
Austinheiman
1
-qfunktioniert auch nicht unter Kubuntu 18.04.
Systemovich