2012-09-04 49 views
5

Làm cách nào để chạy telnet bên trong tập lệnh shell và thực thi lệnh trên máy chủ từ xa?Telnet bên trong tập lệnh shell

Tôi không mong đợi được cài đặt trên máy tính năng lượng mặt trời vì lý do bảo mật. Tôi cũng chưa cài đặt mô-đun perl net::telnet.

Vì vậy, với việc sử dụng mong đợi và perl, tôi có thể làm như thế nào?

Tôi đã thử điều dưới đây nhưng không hoạt động.

#!/usr/bin/sh 
telnet 172.16.69.116 <<! 
user 
password 
ls 
exit 
! 

Khi tôi thực hiện nó, đây là những gì tôi nhận được:

> cat tel.sh 
telnet 172.16.69.116 <<EOF 
xxxxxx 
xxxxxxxxx 
ls 
exit 
EOF 
> tel.sh 
Trying 172.16.69.116... 
Connected to 172.16.69.116. 
Escape character is '^]'. 
Connection to 172.16.69.116 closed by foreign host. 
> 
+0

Bạn nói "nó không hoạt động", nhưng _how_ nó có hoạt động không? Bạn có nhận được thông báo lỗi không? Chuyện gì xảy ra? –

+0

Bạn không thấy nó mỉa mai rằng bạn không có những thứ nhất định được cài đặt vì lý do bảo mật, nhưng bạn đang sử dụng telnet thay vì ssh? – gpojd

Trả lời

11

Một số các lệnh của bạn có thể bị loại bỏ. Bạn có thể đạt được kiểm soát tốt hơn với các cấu trúc kịch bản thông thường và sau đó gửi các lệnh cần thiết thông qua một đường ống với echo. Nhóm danh sách các lệnh để thực hiện một "phiên": -

{ 
sleep 5 
echo user 
sleep 3 
echo password 
sleep 3 
echo ls 
sleep 5 
echo exit 
} | telnet 172.16.65.209 
+4

+1 hoặc tốt hơn, chuyển sang 'nc' (Netcat) ít phức tạp hơn' telnet' được thiết kế rõ ràng để sử dụng tương tác riêng. – tripleee

+0

Cảm ơn bạn! Nó hoạt động hoàn hảo. – Keshav

+0

Dễ dàng hơn nhiều so với mong đợi !! cảm ơn! – NaturalBornCamper

-1

tôi đã cùng một vấn đề ... Tuy nhiên, ít nhất là trong môi trường của tôi nó bật ra là Giấy chứng nhận SSL trên máy chủ đích đã bị hỏng trong một số cách và nhóm máy chủ đã giải quyết vấn đề này.

Bây giờ, những gì tôi đang cố gắng làm là tìm ra cách để có được một kịch bản để chạy chính xác điều bạn đang làm ở trên ngoại trừ tôi muốn nó đưa ra kịch bản chính xác tương tự ở trên vào một tập tin và sau đó khi nó gặp một máy chủ mà nó thực sự kết nối, tôi muốn nó cung cấp ký tự thoát (^]) và tiếp tục đến máy chủ tiếp theo.

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