J'ouvre plusieurs onglets shell lorsque je démarre KDE et je viens d'ajouter keychain
à mon ~/.shellrc
le problème est que tous les onglets demandent des mots de passe clés lorsque je me connecte. C'est assez ennuyeux de faire ça. Existe-t-il une bonne solution pour que tous les onglets démarrent simplement, et une fois que je me suis connecté à un onglet, tous ont les clés chargées ?
Réponse acceptée :
Voici deux méthodes :
Vous pouvez vous assurer que le trousseau ne s'ouvre que sur un seul onglet comme ceci :
if mkdir /tmp/keychain.lock; then
eval `keychain --eval --agents ssh id_dsa`
rm -r /tmp/keychain.lock
fi
Mais ce n'est peut-être pas sur le premier onglet sur lequel vous atterrissez - vous devrez peut-être le chercher, ce qui pourrait être tout aussi ennuyeux. Cela fonctionne car mkdir est une opération atomique - un seul script réussira et celui-là affichera l'invite.
Une autre méthode affichera l'invite sur tous les onglets, mais les quittera une fois que vous aurez répondu sur l'un d'entre eux. Vous pouvez interroger un fichier ou utiliser des outils inotify comme celui-ci :
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
Celui-ci présente l'invite, mais commence d'abord par un observateur pour voir si un fichier est supprimé. Une fois l'invite satisfaite, le fichier est supprimé et l'observateur supprimera toutes les autres invites en attente. inotifywait provient d'inotify-tools ; inotify est une API Linux. Il peut y avoir une API similaire sur d'autres Unix, mais si ce n'est pas le cas, vous n'avez besoin que d'une boucle qui interroge pour voir si le fichier est supprimé.