|
|
- #!/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
|