Aria2 Trackers 自动更新脚本
Bt 软件通过 Tracker 获取 P2P Server,定期更新对下载速度影响很大,本着一切重复工作都交给计算机执行的理念,我写了个 Shell 自动更新脚本,其实网络上不乏此类脚本,本文更多的是分享几个 Shell 技巧。
使用方法
首先,复制下面的脚本粘贴到代码编辑器中,不要使用 Windows 记事本。然后修改第 5-6 行的 Aria2 RPC 地址
和 密钥
,最后将修改好的代码粘贴到终端执行即可。
object=/usr/local/bin/update_trackers.sh
cat > $object <<\SCRIPT
#!/usr/bin/env bash
rpc=http://127.0.0.1:6800/jsonrpc
passwd=
trackers=(
https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt
https://newtrackon.com/api/stable
https://torrents.io/tracker-list/?download=latest
)
for tracker in ${trackers[@]}
do
data="$data\n`curl -s $tracker`"
done
data="`echo -e "$data" | sort -u | sed ':a;N;$!ba;s/\n/,/g;s/^,//'`"
json="`cat <<JSON
{
"jsonrpc": "2.0",
"method": "aria2.changeGlobalOption",
"id": "cron",
"params": [
"token:$passwd",
{
"bt-tracker": "$data"
}
]
}
JSON
`"
[ -n "$data" ] && curl $rpc -d "$json"
SCRIPT
chmod +x $object
echo -e "`crontab -l`\n0 3 * * * $object" | crontab
几个技巧
其实也谈不上技巧,就是基本用法。首先是数组赋值,如果每个元素很长,可以换行以增强可读性。
nums=(
1
2
3
)
第二个是利用 HereDoc 拼接 json,保留格式增强可读性。
json="`cat <<JSON
"users": [{
"name": "Donald Trump",
"age: "73",
"party": "Communist Party of China"
}]
JSON
`"
第三个是不借助 vim 等编辑器,快速添加定时任务。
echo -e "`crontab -l`\n0 3 * * * reboot" | crontab