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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值