Tôi có một quy trình có thể được truyền thông qua một ổ cắm UNIX (thực tế là abstract socket mà tôi nghĩ là dành riêng cho Linux).Sử dụng mạng xã hội để kết nối với ổ cắm, gửi lệnh và đọc một dòng
Tôi đang viết tập lệnh trình bao cần gửi lệnh đến quy trình này. Tôi quyết định thử sử dụng SOCAT cho mục đích này. Tôi đang cố gắng tìm ra cách để (1) kết nối với socket trừu tượng, (2) gửi cho nó một lệnh duy nhất (một chuỗi), (3) đọc phản hồi và in đáp ứng cho stdout.
Cho đến nay, tôi có thể kết nối dễ dàng bằng cách đơn giản nói:
socat ABSTRACT-CONNECT:mysocket STDIN
này kết nối STDIN để các ổ cắm, vì vậy nếu tôi biết bằng tay gõ một lệnh, ổ cắm sẽ đọc trong chuỗi, và sau đó sản lượng trả lời kết quả cho bàn điều khiển.
Trừ khi tôi chạy socat trong tập lệnh, tôi cần tự động gửi chuỗi tới STDIN. Được rồi, do đó, cách đơn giản nhất để làm điều này dường như chỉ là một chuỗi để STDIN. Vì vậy, giả sử chúng ta có một lệnh gọi là "status
", tôi sẽ nói:
echo status | socat ABSTRACT-CONNECT:mysocket STDIN
Điều này dường như làm việc (socat báo cáo không có lỗi), ngoại trừ kết quả không được gửi đến thiết bị xuất chuẩn. Thay vào đó, cuộc gọi chỉ đơn giản trả về mà không có phản hồi. Vậy làm thế nào tôi có thể đọc một dòng từ socket và hiển thị kết quả trên stdout?
Và cách lưu biến này vào biến cục bộ trong tập lệnh shell? – 0andriy