说明

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服务相关推荐

  1. autojs入门视频教程,Auto.js Pro安卓全分辨率免ROOT引流脚本开发零基础到进阶教程,飞云脚本学院2019年全力打造高清品质,不容错过的年度大作

    课程大纲(更新中-) 基础课程 [已完成]01安装Visual Studio Code(时长9分33秒)在线观看 [已完成]02安装Auto.js Pro(时长5分48秒)在线观看 [已完成]03解读 ...

  2. autojs批量删除好友源码,安卓免root引流脚本

    说明 本文提供的代码仅供参考.不建议用于生产环境. 可能有些地方在最新版本的Auto.js上面需要做修改,才能运行. Auto.js简介 Auto.js是利用安卓系统的"辅助功能" ...

  3. autojs零基础入门视频教程,跟我学Auto.js Pro安卓免ROOT引流脚本开发教程,飞云脚本学院2019最新录制

    课程大纲(更新中-) 基础课程 [已完成]01安装Visual Studio Code(时长9分33秒)在线观看 [已完成]02安装Auto.js Pro(时长5分48秒)在线观看 [已完成]03解读 ...

  4. linux同名文件没有自动替换,linux – bash脚本替换文件中出现的所有占位符

    我正在尝试编写一个bash脚本,用一个同名环境变量替换文件中所有出现的占位符.举个例子,如果我有一个像下面这样的文件-- This is an {{VAR1}} {{VAR2}}. It should ...

  5. GitHub标星1.3W!五分钟带你搞定Linux Bash脚本使用技巧

    原文:https://mp.weixin.qq.com/s/NnpyTOAghr_MXXK5H9twAg 来自:开源最前线(ID:OpenSourceTop)  综合自:https://leanpub ...

  6. linux bash漏洞 入侵,Mac OS X 用户若不使用命令行,则不会受 Bash 漏洞攻击(附测试方法)...

    前天,少数派报道了 Linux/Unix 系统中 Bash 的远程执行代码漏洞,因此许多人担心脱胎于 Unix 的 Mac OS X 同样会被攻击.不过,最新消息称,苹果向外媒 iMore 证实 绝大 ...

  7. 物理服务器怎么装linux,新手如何在物理机上部署红帽linux系统

    合理进行windows分区规划 对于新手来说,一台机器上部署windows和linux两种操作系统,到底应该如何操作才能达到最佳的体验应用?对于linux系统来说,红帽企业级Linux系统版本应该是大 ...

  8. linux bash脚本编程知识点

    bash变量类型: 环境变量 本地变量(局部变量) 位置变量 特殊变量 本地变量: set VARNAME=VALUE: 作用域为整个bash进程: 引用变量 $(varname) 局部变量: loc ...

  9. Linux.bash脚本编写基础

    一.bash shell脚本编写基础: 1.linux服务器中新建目录:dema 命令行:mkdir dema 2.在目录下创建:dema.sh文件:cd dema/ : touch dema.sh ...

最新文章

  1. trash-cli设置Linux 回收站
  2. 运行sqlplus时遇到cannot restore segment prot after reloc: Permission denied
  3. Atlas Of Cardiovascular Emergencies 心血管急症图集
  4. mysql8坑太多_mysql8安装遇到的坑
  5. 检索 COM 类工厂中 CLSID 为 { } 的组件时失败,原因是呈现以下错误: 80040154
  6. MSSQL分组取后每一组的最新一条记录
  7. UI设计师用的最多的素材网站都收纳在一个导航
  8. HashMap 的深入学习
  9. python 如何判断字典存在key
  10. 托管代码 非托管代码
  11. Ceph添加、删除osd及故障硬盘更换
  12. python毕业设计作品基于django框架 教室图书馆座位预约系统毕设成品(7)中期检查报告
  13. 得物App购买记录数据爬取
  14. COSCon'22 第七届中国开源年会火热报名中,喜迎新一波赞助伙伴
  15. 第十八篇 -- 学习第十七天打卡20190705
  16. 流程引擎之Flowable简介
  17. 力扣-两数之和 (梦开始的地方)
  18. 《Scikit-Learn与TensorFlow机器学习实用指南》 第04章 训练模型
  19. 办公室的好帮手!多能办公记事本 V3.7 (20150607更新)
  20. jQuery Pagination分页插件

热门文章

  1. 微软MCITP认证英文原版高清教材
  2. 51单片机PWM温控风扇定时关闭手动自动DS18B20测温LCD1602显示
  3. 【linux】grep: /var/mqm/mqs.ini: No such file or directory
  4. LVGL开发 | lv_lib_100ask之lvgl画板(lv_100ask_sketchpad)
  5. 使用django实现某淘客网站采集功能
  6. 基于Leaflet实现图标旋转角度的效果(附源代码下载)
  7. 云原生分布式数据库云平台技术选择
  8. 磐河数据php代码,【名门的骄将】袁绍磐河战公孙,麴义先登...
  9. 使用 Workbox 创建 PWA 应用
  10. 批量新建文件夹的方法步骤