Wie um zu überprüfen, ob der ssh-agent läuft bereits in bash?
Ich eine Probe sh
script auf meinem Linux-Umgebung, die im Grunde laufen die ssh-agent
für die aktuelle shell, fügt einen Schlüssel und läuft zwei git-Befehle:
#!/bin/bash
eval "$(ssh-agent -s)"
ssh-add /home/duvdevan/.ssh/id_rsa
git -C /var/www/duvdevan/ reset --hard origin/master
git -C /var/www/duvdevan/ pull origin master
Skript tatsächlich funktioniert gut, aber jedes mal, wenn ich es bekomme ich einen neuen Prozess, so dass ich denke, es könnte zu einem performance-Problem und ich könnte am Ende mit nutzlosen Prozessen gibt.
Ein Beispiel für die Ausgabe:
Agent pid 12109
Identity added: /home/duvdevan/.ssh/custom_rsa (rsa w/o comment)
Auch, zusammen mit alle diese, ist es möglich, eine bestehende ssh-agent
Prozess, und fügen Sie meine Schlüssel?
Versuchen
Wenn Sie töten wollen, einen Prozess nach dem laichen, Sie speichern können Ihre PID in eine variable, und rufen Sie es so auf:
Ich denke, das Drehbuch schreiben verantwortlich für das starten eines Agenten ist der falsche Ansatz. Einfach davon ausgehen, dass ein agent ist ausgeführt wird, und erfordert keine Benutzer-um sicherzustellen, dass Sie der agent bereits (in der Regel von Ihrem ursprünglichen login-shell.)
Sie könnte auch einfach so ein script mit
Ich kann das nicht, da anmelden, um die Maschine mehrere Male am Tag - und nicht nur mir, sondern auch anderen Menschen.
$SSH_AGENT_PID
.Wenn Sie töten wollen, einen Prozess nach dem laichen, Sie speichern können Ihre PID in eine variable, und rufen Sie es so auf:
kill -9 $PID_SSH_AGENT
Ich denke, das Drehbuch schreiben verantwortlich für das starten eines Agenten ist der falsche Ansatz. Einfach davon ausgehen, dass ein agent ist ausgeführt wird, und erfordert keine Benutzer-um sicherzustellen, dass Sie der agent bereits (in der Regel von Ihrem ursprünglichen login-shell.)
Sie könnte auch einfach so ein script mit
ssh-agent my-script
zu starten, ein agent, der sich beendet, sobald my-script
beendet.Ich kann das nicht, da anmelden, um die Maschine mehrere Male am Tag - und nicht nur mir, sondern auch anderen Menschen.
InformationsquelleAutor omerowitz | 2016-11-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, wirklich, wie um zu prüfen, ob der ssh-agent läuft bereits in bash?
Antworten bisher anscheinend nicht die Antwort auf die ursprüngliche Frage...
Hier ist was für mich funktioniert:
Dies wurde entnommen aus: https://stackoverflow.com/a/15774758
InformationsquelleAutor AndrewD
Wenn Sie wollen, dass es sofort getötet werden, nachdem das Skript beendet ist, können Sie einfach fügen Sie diese nach der eval line:
Oder:
$SSH_AGENT_PID
festgelegt wird, in der evalssh-agent -s
.Sollten Sie in der Lage sein zu finden, läuft der ssh-Agenten durch das Scannen durch
/tmp/ssh-*
zu rekonstruieren und dieSSH_AGENT
Variablen aus (SSH_AUTH_SOCK
undSSH_AGENT_PID
).kill -9 $SSH_AGENT_PID
am Ende von meinem script, da @alok sagte in seinem Kommentar auf die Frage?Wenn das Skript selbst getötet wird (mit einem unterbrechbare signal) während der Ausführung, dass dieser Befehl nicht ausgeführt werden. Mit der Falle wird.
Auch
kill -9
sollte nicht notwendig sein, außer für den Mord an einer Lauschangriff-Programm während der Entwicklung.kill
selbst sollte ausreichend sein, in fast jeder Instanz.Ja. Ich habe gerade gesehen, dass
ssh-agent -k
killt den Prozess und deaktiviertSSH_AUTH_SOCK
undSSH_AGENT_PID
Variablen - ich bin mit Ihrer Lösung mittrap
. Danke!InformationsquelleAutor Friek
Ja. Wir speichern die Verbindungsinformationen in eine Datei:
Dieser code ist aus Fallstricke des ssh-agents beschreibt sowohl die Fallstricke von dem, was Sie gerade tun, dieser Ansatz, und wie Sie verwenden sollten, ssh-ident um dies für Sie tun.
Wenn Sie nur wollen, um ssh-agent starten, wenn es nicht läuft und nichts sonst:
Jedoch nicht sicher, ssh-agent zugegriffen werden kann (nur weil es läuft heißt nicht, dass wir haben $SSH_AGENT_PID für ssh-add (verbinden).
InformationsquelleAutor idbrii
ps -p $SSH_AGENT_PID > /dev/null || eval "$(ssh-agent -s)"
Befehlszeile. Zum ersten mal ausgeführt wird, starten Sie den ssh-agent. Führen Sie für das zweite mal nicht starten Sie den ssh-agent. Einfach und Elegant, Mate !!!
InformationsquelleAutor iceman
Akzeptierte Antwort hat bei mir nicht funktioniert unter Ubuntu 14.04.
Den test um zu überprüfen ob der ssh-agent läuft, die ich habe zu verwenden ist:
Und ich bin ab den ssh-agent mit:
Sonst die
SSH_AGENT_PID
ist nicht festgelegt.Folgendes scheint zu funktionieren unter Ubuntu 14.04 und 18.04.
InformationsquelleAutor SveborK
Können Sie ändern Sie Zeile #1:
Und dann am Ende des Skripts, die Sie tun können:
eval ssh-agent
schon setzt $SSH_AGENT_PID?Sorry, wusste nicht, dass es setzt diese variable. Und ja,$, sollten Sie nicht dort gewesen. Danke.
InformationsquelleAutor alok
Danke an alle, die Antworten hier. Ich habe diesem thread ein paar mal über die Jahre zu zwicken mein Ansatz. Wollte meine bisherigen
ssh-agent.sh
checker/launcher-Skript, das funktioniert bei mir unter Linux und OSX.Den folgenden block ist mein
$HOME/.bash.d/ssh-agent.sh
Starte ich die oben von meinem
.bashrc
mit:Hoffe, dies hilft anderen aufstehen und gehen schnell.
Erstellt eine öffentliche gist, wenn Sie möchten hack/Verbesserung bei mir: https://gist.github.com/dayne/a97a258b487ed4d5e9777b61917f0a72
InformationsquelleAutor Dayne Broderson