2012-01-11 14 views
6

नहीं देता है, तो मैं लिखने के निम्न क्रम दूरस्थ Linux मशीन को ssh लॉगिन को स्वचालित और कुछ समय आदेश "बिल्ली /etc/APP_VERSION.txt फ़ाइल"स्क्रिप्ट उम्मीद + कैसे तार की अनदेखी करने के

चलाने मैं करने के लिए स्क्रिप्ट की उम्मीद एसएस कमांड से पूछा नहीं गया-

"Are you sure you want to continue connecting (yes/no)?" 

तो इस मामले में पहली बार स्ट्रिंग के लिए प्रतीक्षा करें "(हाँ/नहीं)?" ?

इस को हल करने के लिए कैसे,

मेरा मतलब है अगर लाइन "क्या आप वाकई जोड़ने जारी रखने के लिए (हाँ चाहते हैं: -" पासवर्ड "- :(

और न दूसरे के लिए जारी उम्मीद करते हैं? ?/नहीं) पासवर्ड "

फिर हम अगले के पास जाना चाहिए उम्मीद ssh से प्रकट होता है नहीं है": ", लेकिन ऐसा करने के तरीके

Remark1 - मामला प्रश्न में" आप क्या आपको यकीन है कनेक्ट करना जारी रखना चाहते हैं (हां/नहीं)? ", तब दिखाई देता है किसी भी समस्या के बिना स्क्रिप्ट काम ठीक होने की उम्मीद ।

remark2 - मैं (टाइमआउट 10) के रूप में टाइमआउट सकारात्मक मान का उपयोग नहीं कर सकते क्योंकि ssh ही देरी

है। । । ।

मेरी स्क्रिप्ट उम्मीद:

. 
    . 
    . 

    APP_MACHINE=172.12.6.190 


    set timeout -1 
    spawn ssh $APP_MACHINE 
     expect { 
       "(Are you sure you want to continue connecting yes/no)?" 
           { send "yes\r" } 
       } 
     expect password:  {send PASS123\r} 
    expect > {send "cat /etc/APP_VERSION.txt\r"} 
    expect > {send exit\r} 
    expect eof 

. 
. 
. 

(इस उम्मीद मेरी ksh स्क्रिप्ट का हिस्सा है)। । । । । मेरी Linux मशीन

ssh APP_MACHINE 
    The authenticity of host 'APP_MACHINE (172.12.6.190)' can't be established. 
    RSA key fingerprint is 1e:8a:3d:b3:e2:8c:f6:d6:1b:16:65:64:23:95:19:7b. 
    Are you sure you want to continue connecting (yes/no)? 

उत्तर

7

समय समाप्त

सेट से ssh के

उदाहरण

सेट टाइमआउट 10

10 सेकंड के लिए उम्मीद लाइन के लिए इंतजार करेंगे, और फिर आगे बढ़ें निर्दिष्ट समय समाप्ति के भीतर प्राप्त नहीं होने पर स्क्रिप्ट में अगली पंक्ति में।

संदर्भ http://linuxshellaccount.blogspot.com/2008/01/taking-look-at-expect-on-linux-and-unix.html

अद्यतन: तो एक टाइमआउट एक स्वीकार्य समाधान आप स्क्रिप्ट आगे ड्राइव करने के लिए वैकल्पिक प्रतिक्रियाओं की एक सूची का उपयोग कर की कोशिश कर सकते नहीं है।

expect { 
"(Are you sure you want to continue connecting yes/no)?" { send "yes\r"; exp_continue } 
password:            {send PASS123\r; exp_continue} 
} 
+0

क्षमा करें मैं इसका उपयोग नहीं कर सकता क्योंकि कुछ समय में एसएसएच के पास समय कनेक्शन होता है - कभी-कभी 5 या 10 सेकंड जो जानते हैं? - यह मेरे लिए अच्छा समाधान नहीं है फिर से खेद है, यह अन्य समाधान होना चाहिए !!! –

+0

वैसे भी यह अच्छा विचार नहीं है क्योंकि मेरे एपीपी को अपेक्षित स्क्रिप्ट –

+0

से किसी भी देरी के बिना तेजी से चलाने की आवश्यकता है, जैसा कि आप यहां प्रदर्शित करते हैं, मैं exp_continue स्ट्रिंग जोड़ता हूं लेकिन यह अभी भी अटक गया है। –

0

आप अजगर यह करने के लिए के लिए pexpect मॉड्यूल, उपयोग करने के लिए के रूप में यह एक मामला :)

अधिक जानकारी के लिए की तरह कुछ प्रदान कर सकते हैं चाहते हो सकता है, देखें: http://linux.byexamples.com/archives/346/python-how-to-access-ssh-with-pexpect/

+0

thx फेलिक्स सूरज, लेकिन मैं उम्मीद में इसे हल करने के लिए सबसे पहले पसंद करता हूं क्योंकि मेरे पास स्क्रिप्ट की उम्मीद है शेल स्क्रिप्ट इसलिए मैं इसे पिलोन में अनुवाद करने के लिए आवंटित समय नहीं बिताना चाहता हूं लेकिन आपका विचार नए स्क्रैच कोड के लिए अच्छा है –

7

जब आप एसएसएच उत्पन्न करते हैं तो यह करें:

spawn ssh -o "StrictHostKeyChecking no" "$user\@ip" 
संबंधित मुद्दे