Tmux के बाकी स्क्रिप्ट को पूरा करने के लिए, I SSH तक में tmux प्रतीक्षा करें


13

हाल ही में tmux और Tmuxinator की खोज के बाद, मैं उपयोग करने के लिए एक विकास वातावरण स्थापित करने की कोशिश कर रहा हूं।

प्रति प्रोटोकॉल के अनुसार, हमें स्क्रिप्ट में पासवर्ड / पासफ़्रेज़ संग्रहीत करने की अनुमति नहीं है। तो मैं जो कुछ देख रहा हूं, वह tmux के लिए प्रतीक्षा करने के लिए SSH सुरंग स्थापित करने के लिए प्रतीक्षा करने के लिए है (पासवर्ड की आपूर्ति, दबाया गया, और लॉग इन किया गया)।

मुझे पता है कि tmux 1.8+ में "वेट-फॉर" कमांड है। मैं Cyawin के माध्यम से 1.9a चला रहा हूं। लेकिन भले ही मैंने प्रलेखन पर पढ़ा हो, मुझे इसे समझने में मुश्किल समय आ रहा है।

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 user@example.com' C-m

तो, यहाँ मैं क्या है का एक बहुत ही सरल संस्करण है।

विचार? मुझे पता है कि मैं सत्रों को सिंक्रोनाइज़ कर सकता हूं, मैं अभी भी इसमें काम कर रहा हूं।

संपादित करें : कमांड में देख रहे हैं, और फलक से कमांड तक सिंक्रनाइज़-पैन से चर खींच रहे हैं। यह जाने के लिए एक "बेहतर" तरीका हो सकता है, जब तक मैं यह पता नहीं लगा सकता कि उपयोगकर्ता-इनपुट के लिए मुझे संकेत देने के लिए टीएमयूएक्स कैसे प्राप्त करें।

एक सुविधा अनुरोध जारी कर सकते हैं।


2
आप पासवर्ड के बिना कनेक्ट क्यों नहीं होते और सार्वजनिक / निजी कुंजी का उपयोग क्यों करते हैं?
योइमोसो जूल

मुझे बताया गया कि मैं इस तरह से कनेक्ट नहीं कर सकता। जब मैं तकनीकी रूप से कर सकता है, यह नीतियों उस जगह में डाल दिया है के साथ स्वीकार्य नहीं है। मेरे पास उस परिवर्तन (जल्दी से?) को करने के लिए कोई आवाज़ / अधिकार भी नहीं है। इसलिए मेरे मामले में, कम से कम प्रतिरोध की सड़कों की जांच में, यह वादा है।
टैंगो ब्रावो

1
मैं इसे लेता हूँ कि रिमोट बॉक्स में tmux स्थापित नहीं है? अन्यथा रिमोट बॉक्स में ssh और उसके बाद ही tmux लॉन्च करना ज्यादा बेहतर होगा । // इसके अलावा, मेरा सुझाव है कि आप अपनी ~/.ssh/configफ़ाइल का उपयोग करें : डाल दिया Host foo, User userऔर Hostname example.comकॉन्फ़िगर फ़ाइल में लगातार तीन लाइनों पर। तब के ssh fooबराबर हो जाता है ssh user@example.com। // शायद ऐसा कुछ मदद करता है, भी:command-prompt -p 'log in as:' -I 'user@example.com' 'split-window -v -d %1; split-window -v -d %1'
डेमियन

जवाबों:


3

के कुछ नोट wait-for

यदि आप इसे संक्षिप्तता प्राइमेटरी थ्रेडिंग के अनुरूप मानते हैं, तो प्रतीक्षा के लिए मूल उपयोग बहुत जटिल नहीं है

यह वास्तव में अन्य tmux कार्यक्षमता से जुड़ा नहीं है, बस IPC का एक सुविधाजनक कार्यान्वयन है।

wait-for event_nameएक के लिए इंतज़ार कर की तरह है घटना wait-for -S event_name एक संकेत का एक साधन है घटना

-Uऔर -Lविकल्पों ओर्थोगोनल की तरह कर रहे हैं और की तरह काम करते संकेतबाहु

अपने प्रश्न को सीधे संबोधित करना

आप इन प्रकार की दौड़ स्थिति को हल कर सकते हैं, wait-forलेकिन केवल अगर कमांड समकालिक हैं।

tmux send-keys 'sync-command ; tmux wait-for -S command-finished' C-m
tmux wait-for command-finished

आपके पास जो समस्या है वह यह है कि ssh कमांड समकालिक नहीं है: आप यह नहीं बता सकते कि यह कब समाप्त हुआ है।

मैनुअल के माध्यम से देखते हुए हम वह LocalCommandनिर्देश प्राप्त कर सकते हैं जो ऐसा लगता है कि हम क्या चाहते हैं: कनेक्शन समाप्त होने के बाद स्थानीय रूप से एक कमांड चलाएं ताकि हम कॉल कर सकें

ssh root@iris.tatw.name -o 'PermitLocalCommand yes' -o 'LocalCommand  tmux wait-for -S done'

तो "अन्य कार्यक्षमता से जुड़ा नहीं" से आपका मतलब है कि channelयह केवल अपने स्वयं के नामस्थान में नाम है और tmux की पूर्वनिर्धारित "घटनाओं" से असंबंधित है?
ormaaj

wait-for -Sसंदेश वितरण और sync-commandपहले खत्म होने की गारंटी नहीं देता है, तो अभी भी एक दौड़ मुद्दा हो सकता है wait-for
ormaaj
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.