То, как я могу выполнить связку ключей способом, которая только имеет первое приглашение оболочки для, включает запуск?

Существует опция -n, и намного больше в странице руководства, которую стоит прочитать.

4
18.12.2010, 15:19
1 ответ

Вот два метода:

Можно удостовериться, что связка ключей только открывается на одной вкладке как это:

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

Но это не может быть на первой вкладке, на которую Вы приземляетесь - Вам, возможно, придется искать для него, который мог быть столь же раздражающим. Это работает, потому что mkdir является атомарной операцией - только один сценарий успешно выполнится, и что каждый отобразит подсказку.

Иначе отобразит подсказку на всех вкладках, но выйдет из них, после того как Вы отвечаете на любом из них. Можно опросить файл или использовать inotify-инструменты как это:

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

Эти подарки подсказка, но сначала это запускает наблюдателя, чтобы видеть, удален ли файл. После того, как подсказка удовлетворена, файл удален, и наблюдатель уничтожит любые другие подсказки, которые ожидают. inotifywait от inotify-инструментов; inotify является API Linux. На других Нельдах может быть подобный API, но в противном случае Вам только нужен цикл, который опрашивает, чтобы видеть, удален ли файл.

2
27.01.2020, 21:00
  • 1
    , я изменил Ваш код немного, Вы видите его здесь: github.com/xenoterracide/dot_etc/blob/master/rc.d/keychain. Я не думаю, что любое из моих изменений составляло бы мою проблему..., но... Я иногда получаю 2 подсказки для паролей... мой код имеет проблему? или есть ли что-то еще вызывающее состояние состязания. –  xenoterracide 20.12.2010, 05:11
  • 2
    Да - Там время между тестом-e $file и сенсорным $file. Поэтому я использовал mkdir в своем примере. Можно читать больше об атомарных операциях здесь: unix.stackexchange.com/questions/70 / … –  Shawn J. Goff 20.12.2010, 22:50

Теги

Похожие вопросы