MENU

Aria2 Trackers 自动更新脚本

2019 年 08 月 07 日 • 阅读: 55 • 脚本

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