Shell 脚本基础

Shell 脚本基础

frp 安装脚本

检查依赖

脚本启动前需要确认 wgetunzip 已安装:

#!/bin/bash   #! 开头指定解释器。

if ! command -v wget &>/dev/null; then
    echo "wget 未安装"
    exit 1
fi

if ! command -v unzip &>/dev/null; then
    echo "unzip 未安装"
    exit 1
fi

command -v <tool> 的返回码为 0 表示命令可用,可以用 echo $? 查看上一次命令的退出码。

获取最新版本

通过 GitHub API 提取最新的 tag_name

FRP_VERSION=$(curl -s https://api.github.com/repos/fatedier/frp/releases/latest | grep -oP '"tag_name": "\\K(.*)(?=")')

上面的正则表达式提取 "tag_name" 后面的版本号。

echo "下载 frp 版本 $FRP_VERSION..."
wget https://github.com/fatedier/frp/releases/download/${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz

解压安装

解压并移动到 /usr/local/bin

tar -xvzf frp_${FRP_VERSION}_linux_amd64.tar.gz

mv frp_${FRP_VERSION}_linux_amd64 /usr/local/bin/

rm -f frp_${FRP_VERSION}_linux_amd64*

配置

配置文件可以放在 /etc/frp/ 下,利用 cat <<EOF 简洁写入:

mkdir -p /etc/frp

cat <<EOF > /etc/frp/frp.ini
[common]
server_addr = 你的服务器地址
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
EOF

此处 EOF 只是界定字符串的符号,只要前后一致即可。

服务

使用 tee 将 service 文件写入 /etc/systemd/system/frpc.service,并立即启用:

echo "创建 systemd 服务文件..."
cat <<EOF | sudo tee /etc/systemd/system/frpc.service > /dev/null
[Unit]
Description=frpc service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl start frp
sudo systemctl enable frp