52c75d7a / scripts /install /frpc-install.sh
autoface's picture
first commit
9b205e1
#!/bin/bash
set -e
# Function for logging
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
}
# Function for cleanup
cleanup() {
log "Performing frpc installation cleanup..."
rm -rf /tmp/frp*
}
# Trap to ensure cleanup on exit
trap cleanup EXIT
log "Starting frpc installation..."
log "Getting latest frpc version..."
FRPC_VERSION=$(curl -s https://api.github.com/repos/fatedier/frp/releases/latest | \
grep -Po '"tag_name": "\K.*?(?=")')
if [ -z "${FRPC_VERSION}" ]; then
log "ERROR: Failed to get frpc version"
exit 1
fi
log "Latest frpc version: ${FRPC_VERSION}"
log "Downloading frpc ${FRPC_VERSION}..."
DOWNLOAD_URL="https://github.com/fatedier/frp/releases/download/${FRPC_VERSION}/frp_${FRPC_VERSION#v}_linux_amd64.tar.gz"
curl -fsSL "${DOWNLOAD_URL}" -o /tmp/frp.tar.gz
log "Extracting frpc..."
tar -xzf /tmp/frp.tar.gz -C /tmp
log "Installing frpc binary..."
EXTRACT_DIR="/tmp/frp_${FRPC_VERSION#v}_linux_amd64"
if [ ! -f "${EXTRACT_DIR}/frpc" ]; then
log "ERROR: frpc binary not found in extracted archive"
exit 1
fi
mv "${EXTRACT_DIR}/frpc" /usr/local/bin/frpc
chmod +x /usr/local/bin/frpc
log "Verifying frpc installation..."
if command -v frpc >/dev/null 2>&1; then
INSTALLED_VERSION=$(frpc --version 2>&1 | head -n1 || echo "Version check failed")
log "frpc installed successfully: ${INSTALLED_VERSION}"
else
log "ERROR: frpc installation failed"
exit 1
fi
log "frpc installation completed successfully"