最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【修復(fù)版】1Panel 批量拉取第三方應(yīng)用腳本

2023-11-04 00:19 作者:風(fēng)嶼Wind  | 我要投稿

相較于原版,增加了自動(dòng)裝git,debian系統(tǒng)防報(bào)錯(cuò) 感謝?星零歲(GZY)?發(fā)現(xiàn)此問題 使用教程

在1Panel后臺(tái)點(diǎn)擊“計(jì)劃任務(wù)-創(chuàng)建計(jì)劃任務(wù)” 在彈出的窗口中按照下方說明修改配置: 執(zhí)行周期建議每天一次 腳本內(nèi)容中填入文末源碼 之后如果你的1Panel是通過雨云(https://www.rainyun.com/wp-admin_)預(yù)裝的面板,則無需修改任何地方,若自行安裝且更改了安裝位置,那么需要將下方app_local_dir="/opt/1panel/resource/apps/local"中的內(nèi)容進(jìn)行修改,使其能夠指向1Panel安裝目錄下的資源目錄-app目錄-本地應(yīng)用目錄 完成后點(diǎn)擊“執(zhí)行”即可進(jìn)行首次拉取,當(dāng)然你也可以通過手動(dòng)執(zhí)行來提前觸發(fā)cron 之后前往應(yīng)用商店,點(diǎn)擊右上角“更新應(yīng)用列表”即可

源碼如下

#!/bin/bash # 這下面是修改配置的地方 #? # 1panel本地app的目錄(如果不是默認(rèn)安裝,需修改該目錄) app_local_dir="/opt/1panel/resource/apps/local" # AppStore的git倉庫地址(必選) # git_repo_url="https://github.com/xxxily/local-appstore-for-1Panel" # git_repo_url="https://github.com/1Panel-dev/appstore" git_repo_url="https://github.com/okxlin/appstore" # 訪問git倉庫的access token,訪問私有倉庫時(shí)用,優(yōu)先級(jí)高于賬密(可選) # 建議使用access token,降低賬密泄露的風(fēng)險(xiǎn) git_access_token="" # 訪問git倉庫的用戶名,訪問私有倉庫時(shí)用(可選) git_username="" # 訪問git倉庫的密碼,訪問私有倉庫時(shí)用(可選) git_password="" # 指定克隆的分支(可選) git_branch="" # 指定克隆的深度(可選) git_depth=1 # 拉取遠(yuǎn)程倉庫前是否清空本地app目錄(可選) clean_local_app=false # 拉取遠(yuǎn)程倉庫前是否清空遠(yuǎn)程app緩存(可選) clean_remote_app_cache=false # 設(shè)置克隆或拉取遠(yuǎn)程倉庫時(shí)使用的代理(可選) proxyUrl="" # 設(shè)置示例: # proxyUrl="http://127.0.0.1:7890" # proxyUrl="socks5://127.0.0.1:7890" # proxyUrl="socks5://user:password@host:port" # 將遠(yuǎn)程app store工程克隆到本地的工作目錄 work_dir="/opt/1panel/appstore" # 獲取系統(tǒng)信息?? os_info=$(uname -a)?? ?? # 檢查是否為Debian系統(tǒng)?? if [[ "$os_info" == *"Debian"* ]]; then?? ??echo "檢測(cè)到Debian環(huán)境,執(zhí)行特殊設(shè)置" ??chmod +x /usr/bin/bash ??sudo su $@ else?? ??echo "非Debian,跳過特殊設(shè)置"?? fi?? # 檢測(cè)Git是否已安裝?? echo "檢測(cè)Git是否安裝" if ! command -v git &> /dev/null; then?? ??echo "Git未找到,開始安裝..."?? ??#? ??# apt版 ??if [[ -f /etc/apt/sources.list ]]; then?? ????sudo apt-get update?? ????sudo apt-get install git -y ??fi?? ???? ??# yum版?? ??if [[ -f /etc/yum.repos.d/CentOS-Base.repo ]]; then?? ????sudo yum install git -y?? ??fi?? ???? ??echo "Git安裝完成."?? else?? ??echo "Git已安裝."?? fi set -e mkdir -p "$work_dir/logs" log_file="$work_dir/logs/local_appstore_sync_helper_$(date +"%Y-%m-%d").log" logs() { ?local message="$1" ?if [ -n "$log_file" ]; then ??mkdir -p "$(dirname "$log_file")" ??if [ $? -eq 0 ]; then ???echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] $message" ???echo "[$(date +"%Y-%m-%d %H:%M:%S")] $message" >>"$log_file" ???return ??fi ?fi ?echo -e "$message" } # 函數(shù): url_encode # 參數(shù): #??- url: 需要進(jìn)行編碼的字符串 # 返回值: #??經(jīng)過URL編碼后的字符串 function url_encode() { ?local string=$1 ?local length="${#string}" ?local url_encoded_string="" ?local c ?for ((i = 0; i < length; i++)); do ??c=${string:i:1} ??case "$c" in ??[a-zA-Z0-9.~_-]) url_encoded_string+=$c ;; ??*) url_encoded_string+=$(printf '%%%02X' "'$c") ;; ??esac ?done ?echo "$url_encoded_string" } # 定義函數(shù),接收一個(gè)URL參數(shù)和可選的替換字符串參數(shù) replace_protocol() { ?local url=$1 ?local replacement=$2 ?# 如果沒有提供替換字符串,則刪除"http://"或"https://" ?if [[ -z $replacement ]]; then ??local new_url=$(echo $url | sed "s/http:\/\///" | sed "s/https:\/\///") ?else ??local new_url=$(echo $url | sed "s/http:\/\//${replacement}/" | sed "s/https:\/\//${replacement}/") ?fi ?# 輸出替換后的URL ?echo $new_url } # 函數(shù): clone_git_repo # 參數(shù): #??- url: Git倉庫URL #??- username: 賬號(hào)(可選) #??- password: 密碼(可選) #??- access_token: 訪問令牌(可選) #??- branch: 克隆分支(可選) #??- depth: 克隆深度(可選,默認(rèn)為0,即克隆整個(gè)倉庫) function clone_git_repo() { ?local url=$1 ?local username=$2 ?local password=$3 ?local access_token=$4 ?local branch=$5 ?local depth=$6 ?branch=${branch:+--branch $branch} ?depth=${depth:+--depth $depth} ?echo "branch: $branch, depth: $depth" ?if [[ -n $access_token ]]; then ??echo "use access_token to clone" ??local fix_url=$(replace_protocol "$url") ??git clone "https://oauth2:$access_token@$fix_url" $branch $depth ?elif [[ -n $username && -n $password ]]; then ??local encoded_username=$(url_encode "$username") ??local encoded_password=$(url_encode "$password") ??local fix_url=$(replace_protocol "$url") ??# echo "use username and password to clone, encoded_username: $encoded_username, encoded_password: $encoded_password, fix_url: $fix_url" ??echo "use username and password to clone" ??git clone "https://$encoded_username:$encoded_password@$fix_url" $branch $depth ?else ??echo "use default clone" ??git clone "$url" $branch $depth ?fi } # 取消代理 function proxy_off() { ?unset http_proxy ?unset https_proxy ?unset ALL_PROXY ?unset no_proxy ?logs "Proxy Off" } # 開啟代理 function proxy_on() { ?proxy_url="http://127.0.0.1:7890" ?match_str="://" ?if [ -n "$1" ]; then ??if [[ $1 =~ $match_str ]]; then ???proxy_url=$1 ??else ???logs "Incorrect proxy_url, use defualt proxy_url" ???return ??fi ?fi ?export http_proxy=$proxy_url ?export https_proxy=$proxy_url ?export ALL_PROXY=$proxy_url ?export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" ?logs "Proxy On $proxy_url" } function scriptInfo() { ?echo "" ?logs "##################################################################" ?logs "#??Name: local appstore sync helper for 1Panel?????????#" ?logs "# Version: v1.0.1????????????????????????#" ?logs "#?Author: xxxily????????????????????????#" ?logs "#?Author: BiliWind???????????????????????#" ?logs "#?Github: https://github.com/xxxily/local-appstore-for-1Panel??#" ?logs "##################################################################" ?echo "" } function main() { ?scriptInfo ?if [ ! -d "$app_local_dir" ]; then ??logs "未檢測(cè)到1panel的app目錄,請(qǐng)檢查1panel是否安裝正確,或修改腳本中的app_local_dir變量" ??exit 1 ?fi ?# 檢查地址結(jié)尾是否包含.git,如果不包含則自動(dòng)補(bǔ)全 ?if [[ "$git_repo_url" != *".git" ]]; then ??git_repo_url="${git_repo_url}.git" ?fi ?local repo_username="" ?local repo_projectname="" ?# 使用正則表達(dá)式匹配倉庫地址中的用戶名和項(xiàng)目名 ?if [[ $git_repo_url =~ .*\/(.*)\/(.*)\.git ]]; then ??repo_username=${BASH_REMATCH[1]} ??repo_projectname=${BASH_REMATCH[2]} ??# logs "用戶名: $repo_username" ??# logs "項(xiàng)目名: $repo_projectname" ?fi ?if [ -z "$repo_username" ] || [ -z "$repo_projectname" ]; then ??logs "無法提取用戶名和項(xiàng)目名,請(qǐng)檢查git_repo_url變量提供的地址是否正確" ??exit 1 ?fi ?mkdir -p "$work_dir/temp" ?local repo_user_dir="$work_dir/temp/$repo_username" ?local repo_dir="$repo_user_dir/$repo_projectname" ?# 根據(jù)clean_remote_app_cache變量的值決定是否清空遠(yuǎn)程app的緩存數(shù)據(jù) ?if [ "$clean_remote_app_cache" = true ] && [ -d "$repo_dir" ]; then ??rm -rf "$repo_dir" ??logs "已清空遠(yuǎn)程app的緩存數(shù)據(jù)" ?fi ?# 根據(jù)proxyUrl變量的值決定是否開啟代理 ?if [ -n "$proxyUrl" ]; then ??proxy_on "$proxyUrl" ?fi ?# clone或拉取遠(yuǎn)程倉庫最新代碼 ?logs "準(zhǔn)備獲取遠(yuǎn)程倉庫最新代碼:$git_repo_url" ?if [ -d "$repo_dir" ]; then ??logs "執(zhí)行g(shù)it pull操作" ??cd "$repo_dir" ??# 強(qiáng)行拉取最新代碼 ??git pull --force 2>>"$log_file" ?else ??logs "執(zhí)行g(shù)it clone操作" ??mkdir -p "$repo_user_dir" ??cd "$repo_user_dir" ??clone_git_repo "$git_repo_url" "$git_username" "$git_password" "$git_access_token" "$git_branch" "$git_depth" 2>>"$log_file" ?fi ?logs "遠(yuǎn)程倉庫最新代碼獲取完成" ?if [ ! -d "$repo_dir/apps" ]; then ??logs "未檢測(cè)到apps目錄,請(qǐng)檢查遠(yuǎn)程倉庫是否正確" ??exit 1 ?fi ?# 根據(jù)clean_local_app變量的值決定是否清空本地app目錄 ?if [ "$clean_local_app" = true ]; then ??rm -rf "$app_local_dir"/* ??logs "已清空本地原有的app" ?fi ?# 將遠(yuǎn)程倉庫的apps目錄下的所有app復(fù)制到本地app_local_dir目錄下 ?cd "$repo_dir" ?cp -rf apps/* "$app_local_dir" ?pwd ?ls -lah ?du -sh ?# 根據(jù)clean_remote_app_cache變量的值決定是否清空遠(yuǎn)程app的緩存數(shù)據(jù) ?if [ "$clean_remote_app_cache" = true ]; then ??rm -rf "$repo_dir" ?fi ?if [ -n "$proxyUrl" ]; then ??proxy_off ?fi ?logs "1panel本地app同步成功,enjoy it!" } main "$@" logs "腳本由BiliWind-風(fēng)嶼島站長二改,尊重開源,請(qǐng)不要?jiǎng)h除或修改原作者、二改者信息"

【修復(fù)版】1Panel 批量拉取第三方應(yīng)用腳本的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
安泽县| 正镶白旗| 寿光市| 任丘市| 宣武区| 名山县| 探索| 广宁县| 日喀则市| 友谊县| 淮阳县| 富顺县| 安塞县| 栾川县| 忻城县| 开远市| 柯坪县| 铜山县| 霞浦县| 茌平县| 商水县| 定兴县| 白水县| 长岛县| 萨嘎县| 满洲里市| 库车县| 青岛市| 新闻| 锡林浩特市| 高尔夫| 临漳县| 哈尔滨市| 十堰市| 江陵县| 班戈县| 玉树县| 彰化市| 吴旗县| 万山特区| 修文县|