Vì vậy, tôi muốn tự động đăng nhập SSH của mình. Máy chủ tôi không cho phép xác thực khóa trên máy chủ này, vì vậy tôi phải sáng tạo hơn.Đăng nhập SSH với mong đợi (1). Làm thế nào để thoát khỏi mong đợi và vẫn còn trong SSH?
Tôi không biết nhiều về kịch bản lệnh shell, nhưng một số nghiên cứu đã cho tôi thấy lệnh 'mong đợi' và một số tập lệnh sử dụng nó cho mục đích chính xác này. Tôi thiết lập một kịch bản và chạy nó, nó hoạt động hoàn hảo để đăng nhập.
#!/usr/bin/env expect -f
set password "my_password"
match_max 1000
spawn ssh -p 2222 "my_username"@11.22.11.22
expect "*?assword:*"
send -- "$password\r"
send -- "\r"
expect eof
Ban đầu, nó chạy như mong muốn.
Last login: Wed May 12 21:07:52 on ttys002
esther:~ user$ expect expect-test.exp
spawn ssh -p 2222 [email protected]
[email protected]'s password:
Last login: Wed May 12 15:44:43 2010 from 20.10.20.10
-jailshell-3.2$
Nhưng đó là nơi kết thúc thành công.
Lệnh không hoạt động, nhưng nhấn enter chỉ cần tạo một dòng mới. Phím mũi tên và các phím không phải chữ số khác tạo ra các ký hiệu như '^ [[C', '^ [[A', '^ [OQ', v.v. [1]
Không có lời nhắc nào khác xuất hiện ngoại trừ hai lời nhắc ban đầu được tạo bởi tập lệnh mong đợi. Bất kỳ lệnh bị bỏ qua nào sẽ được thực hiện bởi trình bao cục bộ của tôi khi đã có thời gian chờ đợi. Một ví dụ:
-jailshell-3.2$ whoami
ls
pwd
hostname
(... thời gian trôi qua, hy vọng lần ra ...)
esther:~ user$ whoami
user
esther:~ ciaran$ ls
Books Documents Movies Public
Code Downloads Music Sites
Desktop Library Pictures expect-test.exp
esther:~ ciaran$ pwd
/Users/ciaran
esther:~ ciaran$ hostname
esther.local
Như tôi đã nói, tôi không có kinh nghiệm vỏ kịch bản, nhưng tôi nghĩ rằng nó được gây ra bởi vì Tôi vẫn "bên trong" mong đợi, nhưng không phải "bên trong" SSH. Có cách nào để chấm dứt mong đợi một khi tôi đã đăng nhập, và có nó bàn giao phiên SSH cho tôi?
Tôi đã thử các lệnh như 'đóng' và 'thoát', sau "gửi -" \ r "". Vâng, họ làm những gì tôi muốn và mong đợi chết, nhưng nó dứt khoát mất phiên SSH xuống với nó, để lại cho tôi trở lại nơi tôi bắt đầu. Những gì tôi thực sự cần là cho mong đợi để làm công việc của mình và chấm dứt, để lại phiên SSH trở lại trong tay của tôi như thể tôi đã làm nó bằng tay.
Tất cả trợ giúp đều được đánh giá cao, cảm ơn. [1] Tôi biết có một cái tên cho điều này, nhưng tôi không biết nó là gì. Và đây là một trong những điều đáng sợ mà không thể googled, bởi vì các ký tự dấu câu được bỏ qua. Như một câu hỏi phụ, câu chuyện ở đây là gì?