![](/img/trans.png)
[英]How do I locate a string in a binary file? (No, not the strings command.)
[英]A bash script written around the nc command. How do I prepend text before each line?
我以一种不寻常的方式使用nc命令。 我有两个bash脚本,如果两个用户大约同时运行它们,它们将启动聊天会话。 这些脚本围绕nc命令构建。 我希望文本流显示每次回车后(当用户按Enter时)附加的值。
这些脚本是如何交互和协作地工作:在工作站1上,我调用此命令:nc -l 44444
在工作站2上,其他人调用此命令:nc xxxx 44444(其中xxxx是工作站1的IP地址)
我可以和别人聊天。 无论哪种用户类型,都将镜像到另一终端。 我的问题:如何编写bash脚本以附加文本? 我在变量中有想要的文本(例如“ said user1”)。
我希望它可以自动显示(无需用户手动输入)。
如果在聊天会话期间工作站1(IP地址为xxxx)上的用户键入“这仅是测试”,然后按Enter,我希望结果如下:
user1这只是一个测试。
如果在聊天会话期间工作站2(IP地址为yyyy)上的用户键入“哦,确定”并按Enter,我希望得到的结果是:
哦,好的,user2说。
用户名在脚本的变量中。 我可以毫无问题地构造字符串。 我只是不知道如何使此可变字符串自动显示。 仅在脚本运行时,每次按下Enter就能显示一些文本吗? 当bash脚本运行时,文本流将被镜像。 我不确定如何做到这一点。
尝试这个:
sed -u "s/$/said user2 /" | nc xxx.xxx.xxx.xxx 44444
sed -u "s/$/ said user1 /" | nc -l 44444
当nc
以交互方式运行(即,作为前台作业运行)时,其标准输入已连接到终端,而Bash也不能只是向其发送输入。 恕我直言,最简单的方法是(针对每一行)读取Bash中的输入并在其中添加后缀,然后将它们都通过管道传递给nc
的新调用。
请记住,当从标准输入中读取时, nc
将忽略文件结尾(EOF),请参阅nc(1)
。 -q
选项告诉nc
在客户端EOF之后关闭连接,您可以在服务器端循环运行nc -l
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.