Tôi muốn tạo một tập lệnh shell thực thi các lệnh trên thiết bị mà tôi telnet đến hoặc trong các chương trình như FTP hoặc OpenSSL. Tôi đã tìm thấy một phương thức trong FTP, nó sẽ trông giống như thế này:
#!/bin/sh
HOST='0.0.0.0'
USER='User'
PASSWD='Pass'
FILE='~/Desktop/file.txt'
RFILE='file.txt'
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
binary
passive
put $FILE $RFILE
quit
END_SCRIPT
exit 0
Làm cách nào tôi có thể làm điều gì đó tương tự với các thiết bị tôi telnet đến hoặc trong các chương trình khác nhau?
@cas Tôi muốn bám vào shell script, vì nó không cần cài đặt bất cứ thứ gì và có thể di động trên các hệ thống UNIX khác.
—
TheBro21
Sau đó, thật tệ khi sh (trong bất kỳ biến thể nào của nó) không thực sự phù hợp với nhiệm vụ. có quá nhiều điều có thể sai (hoặc chỉ bất ngờ) mà một kịch bản sh chuyển hướng đơn giản không thể đối phó được. Có một lý do tại sao các công cụ như
—
cas
expect
và các công cụ khác mà tôi đã đề cập tồn tại - và đó là vì các tập lệnh shell không có khả năng thực hiện công việc một cách đáng tin cậy.
@cas Nếu không có cách nào thì bạn có thể đưa ra câu trả lời khi tạo tập lệnh perl đó
—
TheBro21
bạn chưa cung cấp bất cứ nơi nào gần đủ chi tiết để viết bất kỳ loại kịch bản nào. tuy nhiên, điều đó không cần thiết - có rất nhiều ví dụ về các
—
cas
expect
tập lệnh vv trên trang web này (và về lỗi tràn stack và serverfault). Bắt đầu với một số liên kết dưới tiêu đề Liên quan đến bên phải. và cũng tìm kiếm các trang web SE để mong đợi và / hoặc các thư viện perl và python tôi đã đề cập.
expect
hoặc viết tập lệnh perl sử dụngExpect.pm
(hoặc một trong cácNet::*
mô-đun perl nhưNet::Telnet
hoặcNet:SSH
v.v.) hoặc tập lệnh python sử dụngpexpect
.