Tôi đã kế thừa ứng dụng tương tác dòng lệnh tương tác 20 tuổi không còn được nhà cung cấp hỗ trợ. Chúng tôi cần tự động hóa một số tác vụ trong ứng dụng này.Làm cách nào để kiểm soát ứng dụng Unix tương tác bằng Perl?
Các rắc rối nhất trong số này đang tạo ra hàng ngàn kỷ lục mới với các thông số hơi khác nhau (ví dụ định danh khác nhau, tên gọi khác nhau). Các bản ghi phải được tạo theo thứ tự, mỗi lần một lần, sẽ mất nhiều tháng (và do đó đô la) để làm thủ công. Trong hầu hết các trường hợp, việc tạo một bản ghi có mô hình khóa có thể dự đoán được trong các lệnh, đọc phản hồi, khóa trong các lệnh khác, v.v. Tuy nhiên, một số hoạt động tạo bản ghi sẽ dẫn đến các điều kiện lỗi ('bản ghi với số nhận dạng này đã tồn tại') một bộ lệnh khác để thoát ra một cách duyên dáng.
tôi có thể thấy một vài cách khác nhau để làm điều này:
ống đặt tên. Viết một kịch bản Perl chạy ứng dụng đích với STDIN và STDOUT được đặt thành các đường ống có tên, sau đó gửi ứng dụng đích trình tự các lệnh để tạo một bản ghi với các tham số cần thiết, và sau đó hướng dẫn ứng dụng đích thoát ra và tắt. Sau đó, chúng tôi chạy tập lệnh nhiều lần theo yêu cầu với các thông số khác nhau.
Application. Tìm một công cụ Unix khác có thể được sử dụng để viết các chương trình tương tác. Những người duy nhất tôi đã có thể tìm thấy mặc dù là expect, nhưng điều này dường như không được duy trì hàng đầu; và trò chuyện, mà tôi nhớ lại từ nhiều năm trước, và điều đó dường như làm nhiều hơn hoặc ít hơn những gì tôi muốn, nhưng dường như chỉ dành cho việc điều khiển các modem.
Một biến chứng tiềm năng khác: Tôi nghĩ ứng dụng đích được viết cho thiết bị đầu cuối VT100 và nó sử dụng một số loại trình tự thoát để làm những việc như đánh dấu.
Câu hỏi của tôi là tiếp cận những gì tôi nên dùng? Một trong số đó, hoặc một cái gì đó hoàn toàn khác? Tôi khá thích ý tưởng sử dụng các đường ống có tên và sau đó có một kịch bản Perl mở FIFO và đọc và ghi theo yêu cầu, vì nó cung cấp nhiều tính linh hoạt, nhưng từ những gì tôi đọc, có vẻ như có nhiều vấn đề tiềm năng Tôi đi xuống con đường này.
Xin cảm ơn trước.
kỳ vọng hiện đã có trên sourceforge http://sourceforge.net/projects/expect/ – Mark
Cập nhật: Tôi có các giải pháp về cách sử dụng Expect.pm. cám ơn tất cả những người đã hồi đáp. Tôi có thể SSH đến máy chủ thử nghiệm, khởi động ứng dụng và bắt đầu tương tác với nó. Có vẻ như các mã điều khiển VT100 khá đơn giản. Hiện tại tôi không có tài khoản, nhưng tôi đã học được một vài tên người dùng, vì vậy tôi nghĩ thử nghiệm tự động hóa đầu tiên của tôi sẽ là một cuộc tấn công từ điển vào tài khoản người biểu tình ... –