Files
IPTables-Management/install.sh

69 lines
1.4 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
SOURCE_SCRIPT="${SCRIPT_DIR}/iptables-forward.sh"
TARGET_BIN=${INSTALL_TARGET:-/usr/local/bin/iptables-forward}
usage() {
cat <<USAGE
用法:
sudo ./install.sh
sudo ./install.sh --uninstall
说明:
- 仅创建符号链接,不复制源码。
- 默认链接到 /usr/local/bin/iptables-forward。
- 可通过 INSTALL_TARGET 自定义目标路径。
USAGE
}
require_root() {
if (( EUID != 0 )); then
printf '请使用 root 或 sudo 执行安装脚本。\n' >&2
exit 2
fi
}
install_link() {
[[ -f ${SOURCE_SCRIPT} ]] || {
printf '未找到入口脚本: %s\n' "${SOURCE_SCRIPT}" >&2
exit 1
}
mkdir -p "$(dirname -- "${TARGET_BIN}")"
ln -sfn "${SOURCE_SCRIPT}" "${TARGET_BIN}"
chmod 755 "${SOURCE_SCRIPT}"
printf '已创建链接: %s -> %s\n' "${TARGET_BIN}" "${SOURCE_SCRIPT}"
}
uninstall_link() {
if [[ -L ${TARGET_BIN} || -e ${TARGET_BIN} ]]; then
rm -f "${TARGET_BIN}"
printf '已删除链接: %s\n' "${TARGET_BIN}"
else
printf '未发现已安装链接: %s\n' "${TARGET_BIN}"
fi
}
main() {
case ${1:-install} in
--help|-h)
usage
;;
install)
require_root
install_link
;;
--uninstall|uninstall)
require_root
uninstall_link
;;
*)
usage >&2
exit 1
;;
esac
}
main "$@"