小编Hug*_*ugh的帖子

Systemd 套接字激活触发 bash 脚本

我想定期触发远程 bash 脚本。这需要如何工作,第三方应用程序将连接到特定 TCP 端口上的 CentOS 7 系统并发送一条短文本消息。由于 3rd 方应用程序,SSH 不是一个选项。

当收到消息时,它需要将 IP 地址传递给 bash 脚本。我希望 bash 脚本运行,然后进入休眠状态,直到下一条消息。我不想写一个守护进程。我只想保持这个简单。

这些消息可能每周出现几次或更少。我们使用 xinetd 运行此程序,但不确定如何使用 systemd 使其工作。

这是我到目前为止所拥有的:

/etc/systemd/systemfoo.service

[Unit]
Description=Foo Service
After=network.target foo.socket
Requires=foo.socket

[Service]
Type=oneshot
ExecStart=/bin/bash /opt/foo/foo.sh
TimeoutStopSec=5

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

/etc/systemd/systemfoo.socket

[Unit]
Description=Foo Socket
PartOf=foo.service

[Socket]
ListenStream=127.0.0.1:7780

[Install]
WantedBy=sockets.target
Run Code Online (Sandbox Code Playgroud)

/opt/foo/foo.sh

#!/bin/bash

# Not sure how to get IP
logger -t FOO "Connection received:"
# Do some action
Run Code Online (Sandbox Code Playgroud)

这是我在日志中看到的:

Jul 10 17:29:32 localhost systemd: Listening on Foo Socket.
Jul 10 17:29:32 localhost systemd: …
Run Code Online (Sandbox Code Playgroud)

systemd

7
推荐指数
1
解决办法
2351
查看次数

标签 统计

systemd ×1