我以不寻常的方式使用nc命令。我有两个bash脚本,如果两个用户几乎同时运行它们,则启动聊天会话。这些脚本是围绕nc命令构建的。我希望文本流在每次回车后显示一个值(当用户按下回车键时)。
以下是脚本如何以交互方式协同工作: 在工作站1上,我调用它:nc -l 44444
在工作站2上,其他人调用此命令:nc x.x.x.x 44444 (其中x.x.x.x是工作站1的IP地址)
我可以和别人聊天。无论哪种用户类型镜像到另一个终端。我的问题:如何编写bash脚本来附加文本?我在变量中有我想要的文本(例如,"表示user1")。
我希望自动显示(无需用户手动输入)。
如果用户在工作站1上(IP地址为x.x.x.x)在聊天会话期间键入"这只是一个测试"并按回车,我希望这是结果:
这只是一个测试说user1。
如果聊天会话期间用户在工作站2上(IP地址为y.y.y.y)"哦,好的"并按回车,我希望这是结果:
哦,ok表示user2。
用户名在脚本中的变量中。我可以毫无问题地构造字符串。我只是不知道如何让这个变量字符串自动显示。每次只在脚本运行时按下输入,是否可以显示一些文本?运行bash脚本时会镜像文本流。我不知道如何做到这一点。
答案 0 :(得分:0)
试试这个:
sed -u "s/$/said user2 /" | nc xxx.xxx.xxx.xxx 44444
sed -u "s/$/ said user1 /" | nc -l 44444
答案 1 :(得分:0)
当nc
以交互方式运行(即作为前台作业运行)时,其标准输入连接到终端,而Bash也不能仅向其发送输入。恕我直言,最简单的方法是(对于每一行)读取Bash中的输入并在那里添加后缀,然后将它们都传递给nc
的新调用。
请注意,nc
在从标准输入读取时会忽略文件结束(EOF),请参阅nc(1)
。 -q
选项告诉nc
在客户端EOF之后关闭连接,您可以在服务器端的循环中运行nc -l
。