Skip to content
shilapiPublic

About

Useful scripts i'm using

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

scripts

Useful scripts, partly by AI

Use at your own risk

fetch-cert

从 HTTP Basic Auth 保护的 URL 获取证书文件,并由脚本自行安装和管理 cron 定时任务。脚本不内置任何证书域名、远端路径、本地路径或账户信息;它们只在首次配置时通过参数传入。脚本不会重载任何服务或校验证书内容。

sudo ./fetch-cert.sh \
  --user 'HTTP Basic Auth 用户名' \
  --password 'HTTP Basic Auth 密码' \
  --file '远端证书完整 URL' '本机证书完整路径' \
  --interval '3d'

参数说明:

  • --file URL FILE:远端证书的完整 URL 和本机完整路径;可重复传入,用于同时更新证书链、私钥等多个文件。
  • --user、--password:HTTP Basic Auth 账户和密码。
  • --interval:可选,更新周期,格式为正整数加 d。例如 3d 表示每 3 天、5d 表示每 5 天;默认 7d。

首次配置会立即获取所有文件,随后安装 cron 任务。脚本会复制到 /usr/local/bin/fetch-cert,配置保存在仅 root 可读的 /etc/fetch-cert.conf,cron 此后从这份配置读取账户、密码、远端 URL 和目标路径。每个文件先下载到目标目录的临时文件,成功后再原子更新,避免写入半份内容。只有所有文件都获取成功,才会记录本次更新周期。

支持 Alpine Linux 与 Debian/Ubuntu;在 Debian/Ubuntu 中任务文件为 /etc/cron.d/fetch-cert,在 Alpine 中写入 root 的 /etc/crontabs/root。cron 每小时第 17 分钟运行一次检查,到达设定周期后才实际下载,因此时间误差最多约 1 小时。若系统未安装 curl 或 cron,首次配置时会自动安装。

修改证书地址、账户、密码、本地路径或周期,只需再次使用完整参数运行脚本;旧 cron 任务会被更新。改为每 5 天更新:

sudo ./fetch-cert.sh \
  --user 'HTTP Basic Auth 用户名' \
  --password 'HTTP Basic Auth 密码' \
  --file '远端证书完整 URL' '本机证书完整路径' \
  --file '另一个远端文件 URL' '另一个本机完整路径' \
  --interval '5d'

首次配置会立即下载。之后 sudo /usr/local/bin/fetch-cert --sync 只会在周期到期时下载。删除脚本管理的 cron 任务、配置、日志和程序副本可使用 sudo /usr/local/bin/fetch-cert --uninstall。由于密码首次作为命令行参数传入,可能会进入 Shell 历史记录或短暂显示在进程列表中,建议仅在受信任的环境运行,并限制脚本启动方式的访问权限。

network

port-forward

Linux IPv4 TCP/UDP 端口转发管理脚本,支持 Alpine Linux 与 Debian/Ubuntu。直接执行下面的一键命令会安装依赖、安装每日定时任务并打开交互菜单:

curl -fsSL https://raw.githubusercontent.com/shilapi/scripts/main/network/port-forward.sh | sudo bash

菜单提供四项主要操作:打开、关闭、新增、修改端口转发。新增规则时可填写单端口或等长端口范围,并将流量转发到 IPv4 地址或域名;本机端口与对端端口可以不同。脚本每天 04:17 重新解析域名,仅在本机保存最新 IPv4,并重建它自己管理的 iptables 规则;系统启动时也会恢复已打开的规则。

所有转发地址、域名和端口都只在运行时输入,并保存在本机 root 专用的 /etc/port-forward/rules.tsv(权限 600)中,GitHub 脚本不包含这些信息。关闭功能只移除本脚本的独立规则链并保留配置,也不会擅自关闭可能被其他服务使用的系统 IP 转发。

cf-ddns

Cloudflare DDNS script for Alpine Linux and Debian/Ubuntu. It can maintain IPv4 (A) and IPv6 (AAAA) records independently.

Usage

cf-ddns.sh -d example.com -key 'CLOUDFLARE_KEY'

Run it as root. The interactive menu lets you add an IPv4-only, IPv6-only, or dual-stack record. Configuration is saved to /etc/cf-ddns.conf (mode 600), and the managed record list is /etc/cf-ddns.records.

About

Useful scripts i'm using

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages