वाले तर्कों के साथ कमांड को कम करने की अपेक्षा करते हैं I ssh पर एक साधारण कमांड cat /tmp/id_rsa.pub
चलाने के लिए expect
का उपयोग करना चाहते हैं।रिक्त स्थान
एक खोल में, मैं चला सकते हैं इस wo समस्या, (साथ मैन्युअल रूप से पासवर्ड में डाल)
ssh [email protected] 'cat /tmp/id_rsa.pub'
मैं expect
के साथ इस स्वचालित करना चाहते हैं। मेरे expect
स्क्रिप्ट है,
#!/usr/bin/expect
eval spawn ssh [email protected] 'cat /tmp/id_rsa.pub'
expect "password:"
send "123456"
expect eof
यह त्रुटि bash: cat /tmp/id_rsa.pub: no such file or directory
फेंकता है। यह मेरे लिए बहुत अजीब लग रहा है। संभावित कारण क्या हो सकता है?
संपादित करें: कुछ परीक्षणों के बाद, मुझे लगता है कि यह सामान्य है, न केवल cat
के मामले में। यदि कमांड को कम करने का तर्क अंतरिक्ष के साथ है (भले ही यह उद्धरण में है), तो इसमें समस्या होगी। उदाहरण के लिए, रिक्त स्थान के साथ अन्य आदेशों के साथ cat /tmp/id_rsa.pub
की जगह, जैसे
eval spawn ssh [email protected] 'which java'
यह bash: which java: command not found
साथ शिकायत। लेकिन यह ठीक से काम करता है, तो pwd
साथ की जगह है कि, की तरह
eval spawn ssh [email protected] 'pwd'
।
आपके आस-पास 'कमांड तर्क' एकल उद्धरण चिह्न निकाल कर की कोशिश की है: मैं इसे
"
साथ काम करने में कामयाब रहे? ऐसा प्रतीत होता है कि समस्या की जड़ यह है कि यह आदेश के नाम के रूप में पूरे उद्धृत स्ट्रिंग को कमांड और तर्कों में विभाजित करने की बजाय कोशिश कर रहा है ... – twalberg@twalberg जो काम कर रहा है। मैंने डबल कोट्स, वाई/समस्या भी कोशिश की। जिज्ञासा से बाहर, क्या आप एक उद्धरण के बारे में कुछ खास बता सकते हैं? – Richard
मुझे यह देखने के लिए 'उम्मीद' दस्तावेज़ों को खोदना होगा - मेरे सिर के ऊपर से नहीं पता। मैंने सुझाव दिया कि आपको प्राप्त होने वाले विशेष त्रुटि संदेश के सिंटैक्स के आधार पर ... – twalberg