2011-10-17 22 views
6

Tôi đã cố gắng để tạo ra một hy vọng kịch bản để tự động đăng nhập vào thiết bị của mình thông qua telnetmong đợi kịch bản để tự động hóa telnet đăng nhập

Nếu không có nhiều khả năng các mong đợi lệnh, kịch bản hoạt động tốt, các bản ghi vào thiết bị.

#!/usr/bin/expect 
set timeout 20 
set ip [lindex $argv 0] 
set port [lindex $argv 1] 
set user [lindex $argv 2] 
set password [lindex $argv 3] 

spawn telnet $ip $port 
expect "'^]'." sleep .1; 
send "\r"; 
sleep .1; 
expect "login:" 
send "$user\r" 
expect "Password:" 
send "$password\r"; 
interact 

Kịch bản trên hoạt động tốt và đăng nhập thành công khi tôi chuyển đúng thông số. Nhưng khi tôi thêm các nhánh bổ sung (để xử lý lỗi) vào lệnh mong đợi, tập lệnh sẽ bị kẹt tại dấu nhắc login:.Sau một thời gian, nó in Script Error Bất kỳ trợ giúp nào ?? Kịch bản sai lầm bên dưới.

#!/usr/bin/expect 
set timeout 20 
set ip [lindex $argv 0] 
set port [lindex $argv 1] 
set user [lindex $argv 2] 
set password [lindex $argv 3] 

spawn telnet $ip $port 
expect "'^]'." 
sleep .1; 
send "\r"; 
expect 
{ 
    "login:" 
    { 
     send "$user\r" 
     expect "Password:" 
     send "$password\r"; 
     interact 

    } 

    "host: Connection refused" 
    { 
    send_user "ERROR:EXITING!" 
    exit 
    } 

} 

PS: Tập lệnh này sẽ được phát triển thêm để chờ thêm lời nhắc tải hình ảnh xây dựng khác nhau trên thiết bị. Chỉ kết nối telnet (console) mới hoạt động. vì vậy ssh không phải là một lựa chọn.

+0

Chăm sóc để chia sẻ cách bạn thực hiện chuyển các lệnh bổ sung sau khi đăng nhập? Tôi không thể vượt qua rào cản đó: http://stackoverflow.com/questions/11148832/shell-script-successful-telnet-login-how-to-issue-commands-after-that – TryTryAgain

+1

nếu bạn đang nói về thực hiện các lệnh bổ sung trong trình bao tự động thông qua tập lệnh. bạn có nghĩa vụ phải sử dụng lệnh gửi. tương tác chuyền bóng cho người dùng. Từ câu hỏi u được đăng, tôi thấy rằng bạn đã có câu trả lời. :) mong đợi cho chiến thắng .. – woodstok

Trả lời

4

Tệ của tôi. Vấn đề là với các dấu ngoặc nhọn. Chúng được cho là ở cùng một dòng với lệnh mong đợi.

Các vấn đề liên quan