मैं एक उम्मीद स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो सर्वर में ssh होगा, sudo su भेजें, फिर iptables स्थिति जांचें और आउटपुट को सर्वर पर लॉग फ़ाइल में रखें। नीचे लिपि है।स्क्रिप्ट से ssh रिटर्न अमान्य कमांड नाम
1 #!/usr/bin/expect
2 exp_internal 1
3 log_user 0
4 set timeout 10
5 set password "******"
6
7 spawn /usr/bin/ssh -l subhasish *.*.*.* -p 10022
8
9 expect {
10 -re "password: " {send "$password\r"}
11 -re "$ " {send "sudo su\r"}
12 -re "[sudo] password for subhasish:" {send "$password\r"}
13 -re "# " {send "service iptables status\r"}
14 }
15 set output $expect_out(buffer)
16 send "exit\r"
17 puts "$output\r\n" >> output.log
लेकिन डीबग मोड में चलाते समय, मुझे इस तरह की त्रुटि मिल रही है;
expect -d testcase
expect version 5.44.1.15
argv[0] = expect argv[1] = -d argv[2] = testcase
set argc 0
set argv0 "testcase"
set argv ""
executing commands from command file testcase
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {24105}
invalid command name "sudo"
while executing
"sudo"
invoked from within
"expect {
-re "password: " {send "$password\r"}
-re "$ " {send "sudo su\r"}
-re "[sudo] password for subhasish:" {send "$password\r"}
..."
(file "testcase" line 9)
यह सुनिश्चित नहीं है कि मैं कहां गलत हो रहा हूं। यह अमान्य कमांड नाम "सुडो" कहता है, मुझे लगता है कि ऐसा इसलिए है क्योंकि उम्मीदें इन आदेशों को समझ नहीं पाती हैं। इसके आसपास कैसे जाना है। कृपया मदद करे। धन्यवाद।
मैंने सुडो सु को "सबहाशीश के लिए पासवर्ड" की उम्मीद की है और यह भी बताया कि आपने कैसे उल्लेख किया है, न ही यह काम कर रहा है; नीचे दिए गए कोड का उपयोग करके, #!/usr/bin/expect -f #!/Bin/bash सेट टाइमआउट 60 log_user 1 सेट मेजबान *। *। *। * सेट पासवर्ड ****** output.txt अंडे ssh -p 10022 $ उपयोगकर्ता सेट उपयोगकर्ता Subhasish सेट लॉगफ़ाइल @ $ मेजबान उम्मीद "* assword: *" भेजें - "$ पासवर्ड \ r" log_user 1 उम्मीद "$" भेजने - "sudo सु \ r" उम्मीद "Subhasish के लिए पासवर्ड:" भेजें - - "$ पासवर्ड \ r" उम्मीद है कि "#" भेजें - "सेवा iptables स्थिति \ r" log_file /home/subhasish/output.log "#" log_file भेजें - "बाहर निकलें \ r"; भेजें - "बाहर निकलें \ r"; बाहर निकलें –
मैन्युअल लॉगिंग इस तरह दिखता है, [रूट @ लोकलहोस्ट सबहाशीश] # ssh -p 10022 [email protected]*.*.*.* [email protected]*.*.*.* पासवर्ड है: अंतिम लॉगिन: सोम अप्रैल 2 9 07:19:52 2013 से *। *। *।* [Subhasish @ testhost ~] $ sudo सु [sudo] Subhasish के लिए पासवर्ड: [जड़ @ testhost Subhasish] # –
डिबग स्क्रिप्ट से पता चलता है अपने में अटक उम्मीद: उम्मीद: करता है "\ r \ Nlast लॉगिन: सोम अप्रैल 29 07:35:36 2013 से *। *। *। * \ R \ r \ n \ u001b] 0; subhasish @ testhost: ~ \ u0007 "(spawn_id exp4) मिलान ग्लोब पैटर्न" subhasish के लिए पासवर्ड: "? नहीं [subhasish @ testhost ~] $ उम्मीद है: "\ r \ n अंतिम लॉगिन: सोम अप्रैल 29 07:35:36 2013 से *। *। *। * \ r \ r \ n \ u001b] 0; subhasish @ testhost: ~ \ u0007 \ u001b [? 1034h [subhasish @ testhost ~] $ "(spawn_id exp4) मैच ग्लोब पैटर्न" subhasish के लिए पासवर्ड: "? नहीं –