6个稳定版本
3.2.0 | 2020年4月19日 |
---|---|
3.1.1 | 2020年4月18日 |
3.0.2 | 2020年4月17日 |
#33 in #tcp-connection
185KB
725 行
pingkeeper
命令行应用程序,用于监控检查命令的退出状态,并在失败时运行另一个主命令。可选地,它可以监控提供的主命令是否持续运行,如果检查命令失败,则触发重启(终止并运行)。
主要用于检查网络是否可达(直接TCP连接或ping),当前版本可以通过添加自定义检查和终止命令执行更多操作。
自豪地使用Rust 🦀 在巴塞罗那制作。
它是如何工作的?
安装
三种选择
Cargo & Go
-
如果您已经安装了
cargo
,请使用cargo install pingkeeper
手动下载
-
从发行版页面下载发行版二进制文件。
-
检查下载文件的完整性(版本可能不同)
sha512sum --check pingkeeper-macos-v3.2.0.tar.gz.sha512
它应该显示:
pingkeeper-macos-v3.2.0.tar.gz: OK
-
使用以下命令提取存档(版本可能不同)
tar xvf pingkeeper-macos-v3.2.0.tar.gz
-
使用以下命令检查二进制文件的完整性
sha512sum --check pingkeeper.sha512
它应该显示:
pingkeeper: OK
-
将
pingkeeper
二进制文件复制到您的$PATH
中,例如:/usr/local/bin
。
自己构建
这需要安装稳定版本的rust
& cargo
。有关更多信息,请访问Rust网站。
-
运行以下命令
cargo build --release
-
您将在
./target/release/pingkeeper
找到您的可执行文件。
用法
用法示例
-
使用OpenVPN保持VPN连接活跃
sudo pingkeeper -k "openvpn /home/user/vpn_configuration.ovpn"
-
使用Hummingbird保持VPN连接活跃,无需记录日志
sudo pingkeeper --keep-alive --quiet "hummingbird denmark.ovpn"
-
当网络故障时,使用ping进行测试,向您的老板发送电子邮件
pingkeeper --use-ping "mail -s \"Sorry, my network is down. I will be right back asap.\" [email protected] < /dev/null"
-
当您的家用服务器似乎出现故障时,使用ping进行测试,通过pushbullet-cli消息通知自己
pingkeeper --hosts "192.168.1.50" --use-ping "pb push \"Is home server down?\""
-
当您的opentracker比特Torrent跟踪服务器似乎出现故障时,使用t发推文
pingkeeper --hosts "10.1.1.28:6969" "t update \"Dear users, the tracker is currently down :(\""
-
当该死的无线路由器再次出现故障时,运行您自己的脚本
pingkeeper "/home/user/try_reset_router.sh"
-
当哨兵文件丢失时关闭服务器
sudo pingkeeper --check-cmd "cat /root/canary.txt" --kill-cmd "echo" "shutdown -h now"
用户手册
运行pingkeeper --help
获取帮助
USAGE:
pingkeeper [FLAGS] [OPTIONS] <COMMAND>
FLAGS:
-h, --help
Prints help information
-k, --keep-alive
Keep <COMMAND> alive.
Run <COMMAND> on start, also restart it when it dies.
-q, --quiet
Do not output anything from <COMMAND> output, also reduces `-v` by one
-P, --use-ping
Use `ping` to check connection.
Use system's `ping` command to check network connection.
-V, --version
Prints version information
-v
Verbosity, -v -vv -vvv.
Log levels: 0 = error, 1 = warning, 2 = info, 3 = debug.
OPTIONS:
--check-cmd <check-cmd>
Use custom command to check
Check network or something else. This will trigger the execution / kill flow as if it was a network check.
Example: --check-cmd "cat canary.txt"
-H, --hosts <hosts>
Space separated list of addresses or hosts (ping).
For direct connection: List of IPv4 and IPv6, with or without port.
For ping: List of hosts.
Order does not matter, list will be shuffled. [default: 8.8.8.8 8.8.6.6 1.1.1.1 1.0.0.1]
--kill-cmd <kill-cmd>
Use custom command to kill
Example: --kill-cmd "echo \"My baby shot me down\" >> bang_bang.log"
-m, --max-errors <max-errors>
Maximum number of <COMMAND> errors in a row.
0 for infinite. Only used by `--keep-alive`. [default: 0]
-n, --network-every <n>
Network check delay, in seconds.
Check network again after this amount of seconds from the latest success. [default: 5]
--ping-opt <opts>
Options for `ping` command, requires `--use-ping` [default: -c1]
-p, --port <port>
Default port to connect, ignored if `--use-ping`.
Port to connect if host does not have a port specified. [default: 53]
-w, --wait-after-exec <seconds>
Execution delay, in seconds.
Seconds to check network for the first time after executing <COMMAND>. [default: 5]
-s, --signal <signal>
Signal to kill <COMMAND>.
Could be any unix signal: `SIGINT`, `SIGTERM`, etc. [default: SIGINT]
-t, --timeout <timeout>
Timeout in seconds, ignored if `--use-ping` [default: 2]
ARGS:
<COMMAND>
Command to run
变更日志
v3.2.0
- opt
--kill-cmd
,自定义杀戮命令。 - opt
--check-cmd
,自定义检查命令。 - 添加测试。
- 改进文档。
v3.1.1
- 修复了与选项
-v
相关的错误。
v3.1.0
- 支持在
--hosts
中带有端口的地址。 - 支持IPv4和IPv6地址。
- 改进文档。
- 改进测试。
v3.0.2
- 改进文档。
- 改进测试。
- 将使用示例添加到文档中。
v3.0.1
- 改进文档。
v3.0.0
- 直接检测网络连接。
- opt
--use-ping
,使用系统ping而不是直接连接。 - opt
-t --timeout
,等待网络连接的秒数。 - opt
--max-errors
,允许连续出现多少次保持活跃错误。 - 改进文档。
v2.0.0
- 将opt
重命名为--boot-time
--wait-after-exec
。 - 将opt
重命名为--check-time
--ping-every
。 - opt
--signal
;默认:"SIGINT"
。 - 流程图。
- 将逻辑移至子文件。
- 测试。
v1.0.0
- 当ping失败时启动命令。
- opt
--hosts
;默认:"8.8.8.8 8.8.6.6 1.1.1.1 1.0.0.1"
。 - 检测网络是否可达。
- opt
--ping-opt
,ping选项;默认:"-c1"
。 - opt
--boot-time
,命令后检查网络的秒数;默认:5
。 - opt
--check-time
,网络检查延迟的秒数;默认:5
。 - 网络错误时重启(发送SIGINT信号)。
- opt
--keep-alive
,在初始化时运行命令,在命令退出时重启。 - opt
-v --verbose
,显示日志。 - opt
-q --quiet
,隐藏子命令的stdout/stderr。
回执
- 在杀死子进程后等待,然后SIGTERM。
- 改进生成的文档。
- 导出库。
- 集成测试:模拟。
- 集成测试:命令行。
- 网站。
- LaunchDaemon生成器。
- macOS通知:连接丢失,连接恢复。
- opt
--disable-notifications
。 - 在子进程中检测SIGTERM并停止。
- 将进程ID写入proc。
- opt
-f --force
以杀死PID并从proc中删除PID。 - 检查接口是否已启动。
- 将日志写入
/var/log
。
许可证
Pingkeeper 版权所有 (C) 2020 Ignacio Lago
本程序是自由软件:您可以按照自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它,许可证版本为3,或者(根据您的选择)任何更高版本。
本程序的分发是希望它将是有用的,但没有任何保证;甚至没有关于适销性或特定用途适用性的暗示保证。有关详细信息,请参阅GNU通用公共许可证。
您应该已经随本程序收到了一份GNU通用公共许可证的副本。如果没有,请参阅https://www.gnu.org/licenses/。
依赖项
~5.5MB
~100K SLoC