繁体   English   中英

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

[英]Pass Arguments to Bash Script when xinetd receive message via udp

我想知道当xinetd通过udp从随机主机(在lan中)接收命令时是否可以将args传递给bash脚本。 要清除:当我从一个随机客户端发送hello到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以不同方式处理的datagrams

接收TCP

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

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

接收UDP 数据报

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

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

(如果您对此感兴趣,请参阅recvfromsendto


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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM