Setelah baru-baru ini menemukan tmux dan Tmuxinator, saya telah mencoba mengatur lingkungan pengembangan untuk digunakan.
Per protokol, kami tidak diizinkan untuk menyimpan kata sandi / frasa sandi dalam skrip. Jadi yang saya cari adalah menunggu tmux untuk menunggu terowongan SSH untuk diatur (kata sandi diberikan, masukkan ditekan, dan login).
Saya tahu bahwa ada perintah "menunggu" di tmux 1.8+. Saya menjalankan 1.9a melalui Cygwin. Tetapi meskipun saya sudah membaca dokumentasi, saya hanya mengalami kesulitan memahaminya.
tmux new-session -s development -n editor -d
tmux split-window -v
tmux split-window -v
"Need to send to all panes.
tmux send-keys -t development 'ssh [email protected]' C-m
Jadi, inilah versi yang sangat sederhana dari apa yang saya miliki.
Pikiran? Saya tahu saya bisa menyinkronkan-sesi, saya masih mengerjakan masalah dalam hal ini.
Sunting : Melihat ke perintah, dan menarik variabel dari panel ke perintah dari panel yang disinkronkan. Ini mungkin cara yang "lebih baik" untuk dilakukan, sampai saya dapat menemukan cara untuk mendapatkan TMUX untuk meminta saya input pengguna.
Mungkin mengeluarkan permintaan fitur.
~/.ssh/config
file Anda : putHost foo
,User user
danHostname example.com
pada tiga baris berturut-turut dalam file konfigurasi. Kemudianssh foo
menjadi setara denganssh [email protected]
. // Mungkin sesuatu seperti ini juga membantu:command-prompt -p 'log in as:' -I '[email protected]' 'split-window -v -d %1; split-window -v -d %1'
Jawaban:
Beberapa catatan
wait-for
Jadi penggunaan dasar wait-for tidak terlalu rumit jika Anda menganggapnya analog dengan threading concurrency primitif
Ini tidak benar-benar terhubung ke fungsi tmux lain, hanya implementasi IPC yang nyaman.
wait-for event_name
seperti menunggu acarawait-for -S event_name
adalah sarana memberi sinyal suatu acaraThe
-U
dan-L
pilihan adalah jenis orthogonal dan bertindak seperti SemaphoreMengatasi pertanyaan Anda secara langsung
Anda dapat memecahkan kondisi ras semacam ini dengan
wait-for
tetapi hanya jika perintah sinkron.Masalah yang Anda miliki di sini adalah bahwa perintah ssh tidak sinkron: Anda tidak dapat mengetahui kapan perintah itu selesai.
Melihat melalui manual kita dapat menemukan
LocalCommand
arahan yang tampaknya melakukan apa yang kita inginkan: jalankan perintah secara lokal setelah koneksi selesai sehingga kita dapat memanggilsumber
channel
adalah hanya nama di namespace sendiri dan tidak terkait dengan "acara" tmux yang telah ditentukan?wait-for -S
tidak menjamin pengiriman pesan dansync-command
selesai sebelumnyawait-for
.