linux– 当xinetd通过udp接收消息时,将参数传递给Bash脚本

linux– 当xinetd通过udp接收消息时,将参数传递给Bash脚本,第1张

概述我想知道当xinetd通过udp从随机主机(在lan中)接收命令时是否可以将args传递给bash脚本.要澄清:当我发送时,例如从随机客户端到xinetd服务器,我希望xinetd服务器将hello传递给我指定的bash脚本.世界也是如此.这是我的xinetd服务文件:service test { socket_type = dgram

我想知道当xinetd通过udp从随机主机(在lan中)接收命令时是否可以将args传递给bash脚本.要澄清:当我发送时,例如从随机客户端到xinetd服务器,我希望xinetd服务器将hello传递给我指定的bash脚本.世界也是如此.

这是我的xinetd服务文件:

service test{        socket_type = dgram        protocol    = udp        port        = 65534        type        = UNListED        wait        = yes        user        = root        server      = /root/sendmail        server_args = **Received Message from UDP connection**}

亲切的问候,非常感谢你!最佳答案您无法在bash脚本中接收消息,因为在stdin上根本没有要接收的流.

使用UDP,您将发送由xinetd以不同方式处理的数据报.

接收TCP流:

xinetd与源主机建立连接并分叉给定脚本的实例.
stdin(标准输入)get连接到源主机的流.然后,您可以阅读输入或执行您在本地启动的sendmail进程运行时所做的任何事情.

顺便说一句:stdout get也连接到你的源主机stdin,你可以看到答案或其他消息,如果你需要双向通信.

接收UDP数据报:

xinetd在您的端口上接收数据报,并在读取其收到的内容之前运行您的脚本. (仍然未连接的)套接字将被移交给您的脚本.

您需要自己完全处理读取数据报,这不像读写流一样简单.此外,这通常需要的不仅仅是简单的bash脚本.

(如果您对此感兴趣,请参阅recvfrom和sendto)

从我的角度来看,我建议你只需切换到TCP流.这还将确保您的命令实际到达主机或在源主机上抛出异常以进行进一步处理.

编辑:这是您的xinetd服务的样子:

service test{        socket_type = stream        protocol    = tcp        port        = 65534        user        = root        server      = /root/sendmail}
总结

以上是内存溢出为你收集整理的linux – 当xinetd通过udp接收消息时,将参数传递给Bash脚本全部内容,希望文章能够帮你解决linux – 当xinetd通过udp接收消息时,将参数传递给Bash脚本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1047919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存