Linux 当xinetd通过udp接收消息时,将参数传递给Bash脚本
我想知道,当xinetd通过udp从随机主机(局域网中)接收命令时,是否可以将参数传递给bash脚本。清除:当我从随机客户端向xinetd服务器发送hello时,我希望xinetd服务器将hello传递给我指定的bash脚本。与世界一样 这是我的xinetd服务文件:Linux 当xinetd通过udp接收消息时,将参数传递给Bash脚本,linux,bash,ubuntu,udp,xinetd,Linux,Bash,Ubuntu,Udp,Xinetd,我想知道,当xinetd通过udp从随机主机(局域网中)接收命令时,是否可以将参数传递给bash脚本。清除:当我从随机客户端向xinetd服务器发送hello时,我希望xinetd服务器将hello传递给我指定的bash脚本。与世界一样 这是我的xinetd服务文件: service test { socket_type = dgram protocol = udp port = 65534 type
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
}