gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:56:21 27 4
gpt4 key购买 nike

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

这是我的 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(标准输入)连接到源主机stream。然后您可以读取输入或执行您在本地启动的sendmail 进程运行时执行的任何操作。

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

接收 UDP 数据报:

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

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

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


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

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

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

关于linux - 当 xinetd 通过 udp 接收消息时将参数传递给 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com