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服务相关推荐
- autojs入门视频教程,Auto.js Pro安卓全分辨率免ROOT引流脚本开发零基础到进阶教程,飞云脚本学院2019年全力打造高清品质,不容错过的年度大作
课程大纲(更新中-) 基础课程 [已完成]01安装Visual Studio Code(时长9分33秒)在线观看 [已完成]02安装Auto.js Pro(时长5分48秒)在线观看 [已完成]03解读 ...
- autojs批量删除好友源码,安卓免root引流脚本
说明 本文提供的代码仅供参考.不建议用于生产环境. 可能有些地方在最新版本的Auto.js上面需要做修改,才能运行. Auto.js简介 Auto.js是利用安卓系统的"辅助功能" ...
- autojs零基础入门视频教程,跟我学Auto.js Pro安卓免ROOT引流脚本开发教程,飞云脚本学院2019最新录制
课程大纲(更新中-) 基础课程 [已完成]01安装Visual Studio Code(时长9分33秒)在线观看 [已完成]02安装Auto.js Pro(时长5分48秒)在线观看 [已完成]03解读 ...
- linux同名文件没有自动替换,linux – bash脚本替换文件中出现的所有占位符
我正在尝试编写一个bash脚本,用一个同名环境变量替换文件中所有出现的占位符.举个例子,如果我有一个像下面这样的文件-- This is an {{VAR1}} {{VAR2}}. It should ...
- GitHub标星1.3W!五分钟带你搞定Linux Bash脚本使用技巧
原文:https://mp.weixin.qq.com/s/NnpyTOAghr_MXXK5H9twAg 来自:开源最前线(ID:OpenSourceTop) 综合自:https://leanpub ...
- linux bash漏洞 入侵,Mac OS X 用户若不使用命令行,则不会受 Bash 漏洞攻击(附测试方法)...
前天,少数派报道了 Linux/Unix 系统中 Bash 的远程执行代码漏洞,因此许多人担心脱胎于 Unix 的 Mac OS X 同样会被攻击.不过,最新消息称,苹果向外媒 iMore 证实 绝大 ...
- 物理服务器怎么装linux,新手如何在物理机上部署红帽linux系统
合理进行windows分区规划 对于新手来说,一台机器上部署windows和linux两种操作系统,到底应该如何操作才能达到最佳的体验应用?对于linux系统来说,红帽企业级Linux系统版本应该是大 ...
- linux bash脚本编程知识点
bash变量类型: 环境变量 本地变量(局部变量) 位置变量 特殊变量 本地变量: set VARNAME=VALUE: 作用域为整个bash进程: 引用变量 $(varname) 局部变量: loc ...
- Linux.bash脚本编写基础
一.bash shell脚本编写基础: 1.linux服务器中新建目录:dema 命令行:mkdir dema 2.在目录下创建:dema.sh文件:cd dema/ : touch dema.sh ...
最新文章
- trash-cli设置Linux 回收站
- 运行sqlplus时遇到cannot restore segment prot after reloc: Permission denied
- Atlas Of Cardiovascular Emergencies 心血管急症图集
- mysql8坑太多_mysql8安装遇到的坑
- 检索 COM 类工厂中 CLSID 为 { } 的组件时失败,原因是呈现以下错误: 80040154
- MSSQL分组取后每一组的最新一条记录
- UI设计师用的最多的素材网站都收纳在一个导航
- HashMap 的深入学习
- python 如何判断字典存在key
- 托管代码 非托管代码
- Ceph添加、删除osd及故障硬盘更换
- python毕业设计作品基于django框架 教室图书馆座位预约系统毕设成品(7)中期检查报告
- 得物App购买记录数据爬取
- COSCon'22 第七届中国开源年会火热报名中,喜迎新一波赞助伙伴
- 第十八篇 -- 学习第十七天打卡20190705
- 流程引擎之Flowable简介
- 力扣-两数之和 (梦开始的地方)
- 《Scikit-Learn与TensorFlow机器学习实用指南》 第04章 训练模型
- 办公室的好帮手!多能办公记事本 V3.7 (20150607更新)
- jQuery Pagination分页插件
热门文章
- 微软MCITP认证英文原版高清教材
- 51单片机PWM温控风扇定时关闭手动自动DS18B20测温LCD1602显示
- 【linux】grep: /var/mqm/mqs.ini: No such file or directory
- LVGL开发 | lv_lib_100ask之lvgl画板(lv_100ask_sketchpad)
- 使用django实现某淘客网站采集功能
- 基于Leaflet实现图标旋转角度的效果(附源代码下载)
- 云原生分布式数据库云平台技术选择
- 磐河数据php代码,【名门的骄将】袁绍磐河战公孙,麴义先登...
- 使用 Workbox 创建 PWA 应用
- 批量新建文件夹的方法步骤