Aria2Android 免root,Linux Bash脚本:在本地机上部署用户自用aria2服务
說明
aria2是一個功能豐富的下載器,但它是命令行程序,不符合多數人的胃口。
現有的aria2圖形界面客戶端(如webui-aria2、AriaNg、YAAW等)都是RPC客戶端,為了使用這種客戶端,需要讓aria2以特殊的后臺服務模式運行。
為了建立用戶本地自用的aria2后臺服務,在Linux下需要編寫systemd服務配置文件放到目錄~/.config/systemd/user下,并在其中指定aria2的命令行參數,當參數很多時,又得編寫aria2的配置文件。
下面的腳本就是為了把這一過程自動化,只需以普通用戶身份(無需root權限)運行腳本,就能讓aria2服務在本機上跑起來,并且以后開機自啟動。不想要的時候,加參數undeploy就能卸載這個服務。
如果想要在服務器上部署aria2,還要涉及SSL證書等更加復雜的問題,加上筆者目前沒有這個需求,所以略去不提。
#! /bin/bash
#### 文件名:deploy_aria2_rpc_service
#### 建立本地用戶自用aria2后臺服務
#### 使用方法:
#### ./deploy_aria2_rpc_service (不帶參數運行) 為本用戶建立并啟動aria2后臺服務
#### ./deploy_aria2_rpc_service status 查詢服務狀態
#### ./deploy_aria2_rpc_service undeploy 撤銷已經建立的服務
function create_dir_if_nonexist
# 如果參數所指定目錄不存在,則建立之;接受任意個數參數
{
for i in "$@"; do
if [ ! -d "$i" ]; then
mkdir -p "$i"
fi
done
}
function create_aria2_daemon_conf
# 建立aria2配置文件
# 參數 $1: 主配置文件名
# 參數 $2: the dir to create the configs in
{
create_dir_if_nonexist "$2"
cd "$2"
# 在下面編輯你想要的aria2參數,但不要更改預設置的dht和session文件路徑
(
cat <
#### Basic Options ####
dir=${HOME}/Downloads
continue=true
#### HTTP/FTP/SFTP Options ####
#### BT/metalink Options ####
dht-file-path=`pwd`/dht/dht4.dat
dht-file-path6=`pwd`/dht/dht6.dat
#### RPC Options ####
enable-rpc=true
rpc-listen-all=true
rpc-listen-port=6800
rpc-secret=Your_Secret_Token
#### Misc. Options ####
daemon=true
save-session=`pwd`/session/aria2_session
input-file=`pwd`/session/aria2_session
HereIsAria2ConfTemplate
) > "$1"
# 說明:出于安全考慮,這里沒有指定rpc-allow-origin-all=true,
# 那么在使用AriaNg或YAAW連接時,必須選擇WebSocket協議(ws://..),而不是http://..
create_dir_if_nonexist "session" "dht"
touch "session/aria2_session"
cd - >/dev/null
# 當aria2以daemon模式運行時,它讀取的配置文件都需有可執行權限
chmod -R o+rx "$2"
}
function register_aria2_user_service
# 建立用戶級aria2服務并使之自啟動
# 參數 $1: 服務配置文件名(不帶擴展名.service)
# 參數 $2: 對應的Aria2主配置文件的全路徑
{
create_dir_if_nonexist "${HOME}/.config/systemd/user"
cd "${HOME}/.config/systemd/user"
# 下面的內容不要隨意更改,除非你知道自己在干啥
local a='$MAINPID'
(
cat <
[Unit]
Description=Aria2 Daemon (Local, User)
Documentation=man:aria2c(1) http://aria2.github.io/manual/en/html/index.html
[Service]
Type=forking
ExecStart=/usr/bin/aria2c --conf-path="$2"
ExecReload=/bin/kill -HUP $a
Restart=on-failure
RestartSec=3s
[Install]
WantedBy=default.target
HereIsAria2UserServiceTemplate
) >"${1}.service"
systemctl --user daemon-reload
systemctl --user enable "${1}.service"
systemctl --user start "${1}.service"
cd - >/dev/null
}
function unregister_aria2_user_service
# 撤銷已經建立的aria2服務
# 參數 $1: 服務配置文件名(不帶擴展名.service)
{
cd "${HOME}/.config/systemd/user"
systemctl --user stop "${1}.service"
systemctl --user disable "${1}.service"
rm "${1}.service"
systemctl --user daemon-reload
cd - >/dev/null
}
# aria2ConfDir: aria2配置文件目錄,請勿指定為現有的目錄
aria2ConfDir="${HOME}/.config/aria2_conf.d"
aria2ConfFileName="aria2_daemon.conf"
serviceName="my_aria2_local"
if [ "$1" = "undeploy" ]; then
unregister_aria2_user_service "${serviceName}"
rm -rf ${aria2ConfDir}
elif [ "$1" = "status" ]; then
systemctl --user status "${serviceName}.service"
else
create_aria2_daemon_conf "${aria2ConfFileName}" "${aria2ConfDir}"
register_aria2_user_service "${serviceName}" "${aria2ConfDir}/${aria2ConfFileName}"
fi
總結
以上是生活随笔為你收集整理的Aria2Android 免root,Linux Bash脚本:在本地机上部署用户自用aria2服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java dbcp连接池_DBCP-基于
- 下一篇: 万能码又又有新功能了(安全扫码专业委员会