GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie führt man Schlüsselbund so aus, dass nur die erste Shell beim Start nach Schlüsseln fragt?

Ich öffne mehrere Shell-Tabs, wenn ich KDE starte, und ich habe gerade keychain hinzugefügt zu meinem ~/.shellrc Das Problem ist, dass alle Registerkarten nach Schlüsselpasswörtern fragen, wenn ich mich anmelde. Das ist ziemlich nervig, dies zu tun. Gibt es dafür eine gute Lösung, sodass alle Registerkarten einfach starten und sobald ich mich bei einer Registerkarte angemeldet habe, alle Schlüssel geladen sind?

Akzeptierte Antwort:

Hier sind zwei Methoden:

So können Sie sicherstellen, dass der Schlüsselbund nur auf einer Registerkarte geöffnet wird:

if mkdir /tmp/keychain.lock; then
  eval `keychain --eval --agents ssh id_dsa`
  rm -r /tmp/keychain.lock
fi

Aber es ist möglicherweise nicht auf dem ersten Tab, auf dem Sie landen – Sie müssen möglicherweise danach suchen, was genauso ärgerlich sein kann. Dies funktioniert, weil mkdir eine atomare Operation ist – nur ein Skript wird erfolgreich sein, und dieses wird die Eingabeaufforderung anzeigen.

Eine andere Möglichkeit zeigt die Eingabeaufforderung auf allen Registerkarten an, verlässt sie jedoch, sobald Sie auf eine von ihnen antworten. Sie können eine Datei abfragen oder Inotify-Tools wie folgt verwenden:

file=/tmp/keychain-wait
touch $file
inotifywait -e delete_self $file |\
while read file event; do 
 if [ "$event" = "DELETE_SELF" ]; then
   pkill keychain
 fi
done &

keychain
rm $file

Dieser zeigt die Eingabeaufforderung an, startet jedoch zuerst einen Beobachter, um zu sehen, ob eine Datei gelöscht wurde. Nachdem die Eingabeaufforderung erfüllt ist, wird die Datei gelöscht, und der Beobachter beendet alle anderen wartenden Eingabeaufforderungen. inotifywait stammt von inotify-tools; inotify ist eine Linux-API. Möglicherweise gibt es eine ähnliche API auf anderen Unices, aber wenn nicht, brauchen Sie nur eine Schleife, die abfragt, ob die Datei gelöscht wurde.


Linux
  1. Der Unterschied zwischen einem eingebauten Befehl und einem, der es nicht ist?

  2. Wie kann man die Ausgabe von Grep unterdrücken, sodass nur der Exit-Status zurückgegeben wird?

  3. Der Befehl „java“ führt die installierte JVM nicht aus

  4. Wie führe ich den Vim-Befehl von der Shell aus?

  5. So ordnen Sie Tasten unter Linux nur für eine bestimmte Tastatur neu zu

Linux-Grundlagen:So erstellen und installieren Sie SSH-Schlüssel auf der Shell

So konfigurieren Sie Ihr Raspberry Pi OS, um es zum ersten Mal zu verwenden

So installieren Sie einen der besten Systemmonitore für den Linux-Desktop

So legen Sie den Standardbenutzer für eine WSL-Distribution fest, die manuell mit wsl --import installiert wurde

Wie bekomme ich nur den Benutzer, die PID und den Befehl, der für einen bestimmten Prozess ausgeführt wird? (Ubuntu 11.10)

Wie installiere/erstelle ich eine benutzerdefinierte Eingabeaufforderung für die Fischschale?