围绕 nc 命令编写的 bash 脚本。如何在每行前添加文本?

A bash script written around the nc command. How do I prepend text before each line?

我正在以一种不寻常的方式使用 nc 命令。我有两个 bash 脚本,如果两个用户 运行 他们几乎同时启动聊天会话。这些脚本是围绕 nc 命令构建的。我希望文本流显示每个回车符后附加的值 return(当用户按回车键时)。

以下是脚本交互和协同工作的方式: 在工作站 1 上,我调用这个:nc -l 44444

在工作站 2 上,其他人调用此命令:nc x.x.x.x 44444 (其中 x.x.x.x 是工作站 1 的 IP 地址)

我可以和别人闲聊。无论哪种用户类型都将镜像到另一个终端。我的问题:如何编写 bash 脚本来附加文本?我在变量中有我想要的文本(例如,"said user1")。

我希望它自动显示(无需用户手动输入)。

如果工作站 1 上的用户(IP 地址 x.x.x.x)在聊天会话期间键入 "this is just a test" 并按回车键,我希望结果如下:

这只是用户 1 所说的测试。

如果工作站 2 上的用户(具有 IP 地址 y.y.y.y)在聊天会话期间键入 "oh, ok" 并按回车键,我希望这是结果:

哦,好的,user2 说。

用户名在脚本的变量中。我可以毫无问题地构造字符串。我只是不知道如何让这个可变字符串自动显示。仅当脚本 运行ning 时,每次按回车键时是否可以显示一些文本?当 bash 脚本是 运行ning 时,文本流被镜像。我不确定如何完成此操作。

试试这个:

sed -u "s/$/said user2 /" | nc xxx.xxx.xxx.xxx 44444
sed -u "s/$/ said user1 /" | nc -l 44444

nc以交互方式运行ning时(即运行ning作为前台作业),其标准输入连接到终端,而Bash不能'也不要向它发送输入。恕我直言,最简单的方法是(对于每一行)读取 Bash 中的输入并在那里添加后缀,然后将它们都通过管道传递给 nc.

的新调用

请记住,当从标准输入读取时,nc 将忽略文件结尾 (EOF),请参阅 nc(1)-q 选项告诉 nc 在客户端的 EOF 后关闭连接,你可以在服务器端循环 运行 nc -l