Shell 脚本基础
frp 安装脚本
检查依赖
脚本启动前需要确认 wget 和 unzip 已安装:
#!/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