GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Menjalankan Keychain Dengan Cara Yang Hanya Memiliki Shell Prompt Pertama Untuk Kunci Saat Startup?

Saya membuka banyak tab shell saat memulai KDE, dan saya baru saja menambahkan keychain ke ~/.shellrc saya masalahnya adalah semua tab meminta kata sandi utama saat saya masuk. Ini cukup mengganggu untuk melakukan ini. Apakah ada solusi yang baik untuk ini sehingga semua tab dapat dimulai, dan setelah saya masuk ke satu tab, semuanya memiliki kunci yang dimuat?

Jawaban yang Diterima:

Berikut adalah dua metode:

Anda dapat memastikan bahwa gantungan kunci hanya terbuka pada satu tab seperti ini:

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

Tapi itu mungkin bukan di tab pertama yang Anda gunakan – Anda mungkin harus mencarinya, yang bisa sama menyebalkannya. Ini berfungsi karena mkdir adalah operasi atom – hanya satu skrip yang akan berhasil, dan skrip tersebut akan menampilkan prompt.

Cara lain akan menampilkan prompt di semua tab, tetapi akan menutupnya begitu Anda merespons salah satu dari mereka. Anda dapat melakukan polling file atau menggunakan alat inotify seperti ini:

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

Yang ini menyajikan prompt, tetapi pertama-tama ia memulai pengamat untuk melihat apakah file dihapus. Setelah prompt dipenuhi, file akan dihapus, dan pengamat akan mematikan prompt lain yang menunggu. inotifywait berasal dari inotify-tools; inotify adalah API Linux. Mungkin ada API serupa di Unices lain, tetapi jika tidak, Anda hanya perlu loop yang melakukan polling untuk melihat apakah file tersebut dihapus.


Linux
  1. Perintah "java" tidak menjalankan JVM yang telah diinstal

  2. Bagaimana cara mengkonfigurasi postgresql untuk pertama kalinya?

  3. Cara menjalankan skrip shell saat startup

  1. Cara memahami kata yang tepat jika string memiliki titik di dalamnya

  2. Fish Shell:Bagaimana cara menyesuaikan warna untuk fitur pelengkapan otomatis?

  3. Bagaimana cara menjalankan perintah Vim dari shell?

  1. Bagaimana Cara Menekan Output Dari Grep, Sehingga Hanya Mengembalikan Status Keluar?

  2. Bagaimana Mengatur Pemantauan Layanan yang Tepat Dengan Cara Otomatis? Sehingga Jika Satu Crash It Auto On The Fly Restart?

  3. Bagaimana Cara Menghapus N Baris Pertama Dari File Ascii Menggunakan Perintah Shell?