Tôi cần chạy một lệnh trong thiết bị đầu cuối để liên tục nhận các tin nhắn đến từ nơi khác trên mạng. Tôi không kiểm soát được việc xây dựng độ dài của tin nhắn. Tuy nhiên, lệnh có thể nhận và in một tin nhắn đầy đủ tại một thời điểm (và tôi cũng không có quyền kiểm soát lệnh này).
Nhiệm vụ của tôi là chuyển tiếp luồng tin nhắn này đến một cổng cục bộ. Một ứng dụng đang lắng nghe cổng đó sẽ tiếp tục xử lý các tin nhắn. Đây là vấn đề: Tôi phải đặt bộ đệm nhận tại ứng dụng (giả sử 1024 byte) và theo giao thức TCP (như đã thảo luận nhiều đây), các tin nhắn vừa đi qua không còn nguyên bản đoạn
. Và độ dài của tin nhắn có thể không cố định (như ví dụ của tôi bên dưới)
Tôi muốn thêm một ký tự đặc biệt vào đầu và cuối tin nhắn mà lệnh đưa ra để xử lý chúng ở phía bên kia. Đây là một ví dụ cụ thể hơn.:
Trên thiết bị đầu cuối, tôi chạy lệnh này;
lệnh của tôi | áo thun | máy chủ netcat 2003
Lệnh này nhận các tin nhắn trong khối ban đầu của chúng và chuyển tiếp tới cổng 2003:
action_1_timestamp_2021_6_09_10_34_23_abort
action_2_timestamp_2021_6_09_10_34_34_success
...
action_193848_timestamp_2021_6_23_10_34_23_hold
Làm cách nào tôi có thể bọc từng dòng ở trên như thế này:
<action_1_timestamp_2021_6_09_10_34_23_abort>
trước khi nó được chuyển tiếp bởi máy chủ netcat 2003
. Tôi không quen thuộc lắm với kịch bản bash.