自动更新frp

linux下frp更新居然也需要手动执行,于是网上搜索一番,找到了一个自动化脚本,自己修改了一下,分享给大家。

感谢这位博主分享的自动化脚本

自动化脚本

控制台执行内容

nano update_frp.sh
# 粘贴下方的自动化升级脚本
# 保存退出  ctrl+o ctrl+x
chmod +x update_frp.sh
./update_frp.sh

自动化升级脚本

修改/var/www/frp、frps、linux_amd64为你需要的值

#!/usr/bin/env bash
# FRP updater

# frp可执行文件的路径
[ -z "${FRP_PATH}" ] && FRP_PATH=/var/www/frp
# frp端,服务端为frps,客户端为frpc
[ -z "${FRP_END}" ] && FRP_END=frps
# 架构 默认为linux_amd64
[ -z "${ARCH}" ] && ARCH=linux_amd64
[ -z "${SUDO}" ] && [ "${NO_SUDO}" != "Y" ] && which sudo >/dev/null 2>&1 && SUDO=sudo

VER=$(${FRP_PATH}/${FRP_END} -v)

RELEASE_URL="https://api.github.com/repos/fatedier/frp/releases/latest"
TMP_NAME=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
TMP_DIR="/tmp/frp_${TMP_NAME}"

mkdir -p "${TMP_DIR}"
pushd "${TMP_DIR}" >/dev/null

DL_URL=$(curl -s ${RELEASE_URL} | grep ${ARCH} | grep browser_download_url | cut -d '"' -f 4)

if (echo ${DL_URL} | grep ${VER}) >/dev/null 2>&1; then
    echo already latest version!
else
    wget ${DL_URL} -O frp.tar.gz
    tar zxvf frp.tar.gz
    cd frp_*

    $SUDO cp -f "${FRP_END}" "${FRP_PATH}/"

    CUR_VER=$(${FRP_PATH}/${FRP_END} -v)
    echo "Update FRP Complete (${VER} -> ${CUR_VER})!"
fi

popd >/dev/null

rm -rf "${TMP_DIR}"

# 自己写的systemd服务脚本,可以看下方详情
systemctl restart frp

systemd服务配置

cd /etc/systemd/system
nano frp.service
# 粘贴下方systemd服务配置详情

systemd服务配置详情

将/var/www/frp改为你的frp执行地址

[Unit]           
Description=frp server
After=network.target

[Service]
User=nobody
Type=simple
WorkingDirectory=/var/www/frp
ExecStart=/var/www/frp/frps -c /var/www/frp/frps.ini
Restart=on-failure

[Install]
WantedBy=multi-user.target