#!/usr/bin/env bash ### BEGIN INIT INFO # Provides: aria2 is a lightweight multi-protocol & multi-source command-line download utility. # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: aria2 is a lightweight multi-protocol & multi-source command-line download utility. # Description: Start or stop the Aria2 ### END INIT INFO PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH NAME="Aria2" NAME_BIN="aria2c" CONFIG_DIR="/root/.aria2c" CONFIG="${CONFIG_DIR}/aria2.conf" LOG="${CONFIG_DIR}/aria2.log" Green_font_prefix="\033[32m" Red_font_prefix="\033[31m" Green_background_prefix="\033[42;37m" Red_background_prefix="\033[41;37m" Font_color_suffix="\033[0m" Info="[${Green_font_prefix}信息${Font_color_suffix}]" Error="[${Red_font_prefix}错误${Font_color_suffix}]" RETVAL=0 [[ ! -e ${CONFIG_DIR} ]] && { mv /root/.aria2 ${CONFIG_DIR} sed -i "s@/root/.aria2/@${CONFIG_DIR}/@" ${CONFIG} } check_running() { PID=$(ps -ef | grep "${NAME_BIN}" | grep -v "grep" | grep -v "aria2.sh" | grep -v "init.d" | grep -v "service" | awk '{print $2}') if [[ ! -z ${PID} ]]; then return 0 else return 1 fi } Read_config() { [[ ! -e ${CONFIG} ]] && echo -e "${Error} ${NAME} 配置文件不存在 !" && exit 1 Download_dir=$(cat ${CONFIG} | grep -v '#' | grep "dir=") [[ ! -z "${Download_dir}" ]] && Download_dir=$(echo "${Download_dir}" | awk -F '=' '{print $2}') RPC_listen_port=$(cat ${CONFIG} | grep -v '#' | grep "rpc-listen-port=") [[ ! -z "${RPC_listen_port}" ]] && RPC_listen_port=$(echo "${RPC_listen_port}" | awk -F '=' '{print $2}') RPC_secret=$(cat ${CONFIG} | grep -v '#' | grep "rpc-secret=") [[ ! -z "${RPC_secret}" ]] && RPC_secret=$(echo "${RPC_secret}" | awk -F '=' '{print $2}') } View_Config() { Read_config IPV4=$( wget -qO- -t1 -T2 -4 ip.sb || wget -qO- -t1 -T2 -4 ifconfig.io || wget -qO- -t1 -T2 -4 www.trackip.net/ip ) [[ -z "${IPV4}" ]] && IPV4="IPv4 地址检测失败" IPV6=$( wget -qO- -t1 -T2 -6 ip.sb || wget -qO- -t1 -T2 -6 ifconfig.io || wget -qO- -t1 -T2 -6 www.trackip.net/ip ) [[ -z "${IPV6}" ]] && IPV6="IPv6 地址检测失败" [[ -z "${Download_dir}" ]] && Download_dir="/usr/local/aria2/" [[ -z "${RPC_listen_port}" ]] && RPC_listen_port="6800" [[ -z "${RPC_secret}" ]] && RPC_secret="无令牌密钥" clear echo -e "\nAria2 简单配置信息:\n IPv4 地址\t: ${Green_font_prefix}${IPV4}${Font_color_suffix} IPv6 地址\t: ${Green_font_prefix}${IPV6}${Font_color_suffix} RPC 端口\t: ${Green_font_prefix}${RPC_listen_port}${Font_color_suffix} RPC 密钥\t: ${Green_font_prefix}${RPC_secret}${Font_color_suffix} 下载目录\t: ${Green_font_prefix}${Download_dir}${Font_color_suffix}\n" } do_start() { check_running if [[ $? -eq 0 ]]; then echo -e "${Info} $NAME (PID ${PID}) 正在运行..." && exit 0 else echo -e "${Info} $NAME 启动中..." ulimit -n 51200 nohup aria2c --conf-path="${CONFIG}" >>"${LOG}" 2>&1 & sleep 2s check_running if [[ $? -eq 0 ]]; then View_Config echo -e "${Info} $NAME 启动成功 !" else echo -e "${Error} $NAME 启动失败 !" fi fi } do_stop() { check_running if [[ $? -eq 0 ]]; then kill -9 ${PID} RETVAL=$? if [[ $RETVAL -eq 0 ]]; then echo -e "${Info} $NAME 停止成功 !" else echo -e "${Error} $NAME 停止失败 !" fi else echo -e "${Info} $NAME 未运行" RETVAL=1 fi } do_status() { check_running if [[ $? -eq 0 ]]; then View_Config echo -e "${Info} $NAME (PID $(echo ${PID})) 正在运行..." else echo -e "${Info} $NAME 未运行 !" RETVAL=1 fi } do_restart() { do_stop do_start } case "$1" in start | stop | restart | status) do_$1 ;; *) echo "使用方法: $0 { start | stop | restart | status }" RETVAL=1 ;; esac exit $RETVAL