1、按图示获取磁盘挂载路径(脚本执行推荐使用路由固件中集成的WebShell,需路由器开启Telnet):
不知道怎么开启Telnet的小伙伴,来来来,看这里(系统管理→系统设置):
2、正确获取路径后(推荐挂载前给移动硬盘设置好卷标,如上图),将下载好的Xware解压到D盘,并保持如下目录结构。之后开始对thunder_mounts.cfg进行修改。
3、将获取的挂载路径添加到相应的位置,确认修改无误后保存。
4、通过WinSCP将文件夹xunlei上传到/jffs文件夹内。
5、使用如下迅雷官方示例脚本,安装运行Xware。
- cd /jffs/xunlei
- chmod 777 * -R
- ./etm_monitor &
复制代码
7、由于Xware下载BT资源时占用CPU资源较多,实测将“同时进行最大任务数”设置为1时较为稳妥。
3、迅雷快鸟(diǎo)路由器版(Part 2)
如果你是迅雷快鸟会员,并且使用迅雷快鸟官方PC客户端能对当前网络进行稳定加速,那么请继续往下看。如果不满足以上条件请直接跳过。注意:使用固件双拨功能的童鞋,也请直接跳过。快鸟在双拨开启的前提下,是无法正常运行的。。。
作者主页:http://yooooo.us/2015/xunlei-fastdick-routerGayhub(其实是GitHub,作者抽风了,在主页写这个):
之前版本的快鸟路由器版,因为i值设定失误,会导致无法快速自动恢复加速。
原脚本在提速失败后,需等待至少270秒才会重新获取相关参数。
这个问题其实从作者刚推出迅雷快鸟路由器版时就已经存在了,昨晚一反馈,今早作者神速更新了,赞一个!
#更新脚本后,不要忘了执行第5步操作。
1、在PC上安装好Python 2.7.10。
2、下载Xunlei-FastDick最新版(如上图1、图2),建议在磁盘根目录(比如D:\)下新建文件夹swjsq,将下载的swjsq.py放入其中,并在同目录下新建文本swjsq.account.txt,内容格式为“用户名,密码”,如aabbcc,123456(关闭输入法,英文状态时输入),确认无误后保存。保持目录结构如下:
3、完成以上步骤后,在PC上直接双击运行swjsq.py,看是否能成功加速。
4、成功加速后,同目录会生成对应的ipk和sh,以及加密后的.swjsq.account
5、按图示设置,确认无误后保存。
6、将swjsq_wget.sh更名为swjsq,通过WinSCP上传到jffs/scripts目录。
7、使用如下脚本,安装运行swjsq。
- chmod 755 /jffs/scripts/swjsq
- /jffs/scripts/swjsq &
复制代码
4、自启及守护脚本(进阶)1.迅雷远程Xware守护脚本的编写:
Xware 3.x 本身官方脚本自带守护,xunlei这个脚本实际作用仅起到双重保险+首次启动迅雷远程的作用,请悉知!注意脚本中xware的大小写,参数中的5其实可以设置为2-8之间的任意整数(ps|grep xware)。
- #!/bin/sh
- PROCESS_0=xware
- sleep 2
- while true; do
- COUNT_0=`ps|grep ${PROCESS_0}|grep -v grep|wc -l`
- if [ "${COUNT_0}" -lt "5" ]; then
- echo "${PROCESS_0} is not running!"
- cd /jffs/xunlei
- chmod 777 * -R
- ./etm_monitor &
- fi
- sleep 10
- done
复制代码保存以上脚本为xunlei,上传到/jffs/scripts文件夹。
使用如下脚本,赋予xunlei执行权限。
- chmod 755 /jffs/scripts/xunlei
复制代码 如果仅安装迅雷远程,添加自启有以下两个方法,按需选择。方法1:将xunlei添加到WAN-START,格式/jffs/scripts/xunlei 方法2:直接在webshell运行如下命令,完成后重启路由器。(仅限能看懂脚本用途的童鞋使用)- cat > /jffs/scripts/init-start << EOF
- #!/bin/sh
- PROCESS_1=xunlei
- chmod 755 /jffs/scripts/\${PROCESS_1}
- cd /jffs/scripts
- ./\${PROCESS_1} &
- EOF
- chmod 755 /jffs/scripts/init-start
复制代码 脚本的作用是开机运行/jffs/scripts/xunlei2.迅雷快鸟swjsq守护脚本的编写:
和迅雷远程的守护脚本基本一致,再次感谢@guozan提供的脚本示范。
- #!/bin/sh
- PROCESS_2=swjsq
- SCRIPTS_DIR=$(dirname $0)
- sleep 2
- while true; do
- LOG_SIZE=`ls -l "${SCRIPTS_DIR}/${PROCESS_2}.log"|awk '{print $5}'`
- if [ "${LOG_SIZE}" -gt "1048576" ]; then
- echo > "${SCRIPTS_DIR}/${PROCESS_2}.log"
- fi
- COUNT_2=`ps|grep ${PROCESS_2}|grep -v grep|wc -l`
- if [ "${COUNT_2}" -lt "1" ]; then
- echo "$(date): ${PROCESS_2} IS NOT RUNNING!"
- sh "${SCRIPTS_DIR}/${PROCESS_2}">"${SCRIPTS_DIR}/${PROCESS_2}.log" 2>&1 &
- fi
- sleep 480
- done
复制代码保存以上脚本为kuainiao,上传到/jffs/scripts文件夹。
使用如下脚本,赋予kuainiao执行权限。
- chmod 755 /jffs/scripts/kuainiao
复制代码 如果你已经安装好了迅雷快鸟,推荐搭配checkrun脚本使用,继续往下看。3.WAN-START加载脚本的编写:
说明:在WAN口首次连上外网或者WAN口重连(IP改变)后,wan-start脚本会自动运行一次,再由wan-start调用checkrun。而checkrun的作用是,检测并重新运行迅雷远程守护和迅雷快鸟!有效防止多个同名进程同时运行,导致断网重连后迅雷快鸟无法“快速”自动恢复加速的问题。
若使用此脚本,则仅需按格式在wan-start中加入checkrun即可,无需再添加kuainiao或xunlei脚本的启动。
checkrun脚本会
不定时进行更新,请之前下载过的童鞋覆盖原脚本使用。
一些提示:
1、在webshell中执行如下命令,可以仅关闭快鸟加速相关服务。
- /jffs/scripts/checkrun -r
复制代码2、在webshell中执行如下命令,以检查checkrun脚本的启动添加情况,并自动运行一次wan-start。
- /jffs/scripts/checkrun -w
复制代码3、在webshell中执行如下命令,可调出五彩菜单。
- /jffs/scripts/checkrun -m
复制代码以下代码已于2015年11月2日更新!(添加菜单入口)
- #!/bin/sh
- PROCESS_0=xware
- PROCESS_1=xunlei
- PROCESS_2=swjsq
- PROCESS_3=kuainiao
- TEST_URL="www.189.cn"
- XWARE_DIR="/jffs/xunlei"
- SCRIPTS_DIR=$(dirname $0)
- LOG_FILE="$(dirname $0)/$(basename $0).log"
- show_menu()
- {
- ITEM_0="q"
- ITEM_1="1: Check Xware"
- ITEM_2="2: Check FastDick"
- ITEM_3="3: Check Xunlei"
- ITEM_4="4: Check Kuainiao"
- ITEM_5="5: Apply Recover"
- while true; do
- clear
- echo "==========================="
- echo -e "\033[0;31;1mNow you have 5 options.\033[0m \n \n \033[0;33;1m${ITEM_1}\033[0m \n \033[0;32;1m${ITEM_2}\033[0m \n \033[0;36;1m${ITEM_3}\033[0m \n \033[0;34;1m${ITEM_4}\033[0m \n \033[0;35;1m${ITEM_5}\033[0m \n"
- read -p "Enter your choice (1, 2, 3, 4 or 5): " ITEM_0
- case "${ITEM_0}" in
- 1)
- echo "$(date): Checking Xware!"
- check_xware>>"${LOG_FILE}" 2>&1
- ITEM_1="1: Check Xware(Done!)"
- ;;
- 2)
- echo "$(date): Checking FastDick"
- check_fastdick>>"${LOG_FILE}" 2>&1
- ITEM_2="2: Check FastDick(Done!)"
- ;;
- 3)
- echo "$(date): Checking Xunlei"
- check_xl>>"${LOG_FILE}" 2>&1
- ITEM_3="3: Check Xunlei(Done!)"
- ;;
- 4)
- echo "$(date): Checking Kuainiao"
- check_kn>>"${LOG_FILE}" 2>&1
- ITEM_4="4: Check Kuainiao(Done!)"
- ;;
- 5)
- echo "$(date): Applying Recover"
- swjsq_recover>>"${LOG_FILE}" 2>&1
- ITEM_5="5: Apply Recover(Done!)"
- ;;
- [wW])
- echo "$(date): Restarting wan-start!"
- check_checkrun>>"${LOG_FILE}" 2>&1
- ;;
- [qQ])
- echo "$(date): See you!"
- sleep 2
- clear
- break
- ;;
- *)
- echo "$(date): Enter q to quit!"
- sleep 2
- esac
- done
- }
- check_checkrun()
- {
- if [ -f "/usr/bin/dbus" ]; then
- CWS_X="dbus fire onwanstart"
- EOC=`dbus list __|grep $(basename $0)`
- if [ -z "${EOC}" ]; then
- dbus event onwanstart_$(basename $0) "${SCRIPTS_DIR}/$(basename $0)"
- fi
- else
- CWS_X="sh ${SCRIPTS_DIR}/$(basename $0)"
- fi
- if [ -f "${SCRIPTS_DIR}/wan-start" ]; then
- CWS=`cat ${SCRIPTS_DIR}/wan-start|grep "${CWS_X}"`
- if [ -z "${CWS}" ]; then
- echo "$(date): Modifying wan-start!"
- sed -i "1a ${CWS_X}" "${SCRIPTS_DIR}/wan-start"
- fi
- else
- cat > "${SCRIPTS_DIR}/wan-start" <<EOF
- #!/bin/sh
- ${CWS_X}
- EOF
- fi
- chmod 755 "${SCRIPTS_DIR}/wan-start"
- sh "${SCRIPTS_DIR}/wan-start"
- echo "$(date): Restarting wan-start done!"
- }
- swjsq_recover()
- {
- PID_2=`ps|grep ${PROCESS_2}|grep -v grep|awk '{print $1}'`
- PID_3=`ps|grep ${PROCESS_3}|grep -v grep|awk '{print $1}'`
- kill "${PID_3}"
- kill "${PID_2}"
- sleep 2
- echo "$(date): CHECKING RECOVER_FILE!"
- RECOVER_FILE="${SCRIPTS_DIR}/${PROCESS_2}_recover"
- if [ -f "${RECOVER_FILE}" ]; then
- api_url=`cat ${RECOVER_FILE}|grep "http://"`
- if [ -z "${api_url}" ]; then
- echo "$(date): NO RECOVER!"
- else
- echo "$(date): APPLYING RECOVER!"
- uid=`cat "${SCRIPTS_DIR}/${PROCESS_2}"|grep -oE "uid.[0-9]{3,}"|grep -oE "[0-9]{3,}"`
- peerid=`cat "${SCRIPTS_DIR}/${PROCESS_2}"|grep -oE "peerid.[A-Z0-9]{8,}"|grep -oE "[A-Z0-9]{8,}"`
- sid=`cat ${RECOVER_FILE}|grep -oE "[A-Z0-9]{16,}"`
- wget -O - "$api_url/recover?peerid=${peerid}&userid=${uid}&user_type=1&sessionid=${sid}"
- echo > "${RECOVER_FILE}"
- TIME_OUT_1=`awk 'BEGIN{srand();printf("%.0f", rand()*10+10)}'`
- sleep ${TIME_OUT_1}
- fi
- else
- echo "$(date): RECOVER_FILE WILL BE GENERATED LATER!"
- fi
- }
- check_sk()
- {
- echo "$(date): CHECKING SWJSQ!"
- ECHO_1=`cat "${SCRIPTS_DIR}/${PROCESS_2}"|grep 'echo "\$api_url"'`
- if [ -z "${ECHO_1}" ]; then
- echo "$(date): MODIFYING SWJSQ!"
- ECHO_2=`cat "${SCRIPTS_DIR}/${PROCESS_2}"|grep 'echo "session is \$session"'`
- ECHO_3='>"\$(dirname \$0)\/\$(basename \$0)_recover"; echo "\$api_url">>"\$(dirname \$0)\/\$(basename \$0)_recover"'
- sed -i "/${ECHO_2}/s/$/${ECHO_3}/" "${SCRIPTS_DIR}/${PROCESS_2}"
- else
- echo "$(date): SWJSQ HAS ALREADY BEEN MODIFIED!"
- fi
- COUNT_2=`ps|grep ${PROCESS_2}|grep -v grep|wc -l`
- COUNT_3=`ps|grep ${PROCESS_3}|grep -v grep|wc -l`
- if [ "${COUNT_2}" -ge "1" -o "${COUNT_3}" -ge "1" ]; then
- echo "$(date): RESTARTING FASTDICK!"
- else
- echo "$(date): STARTING FASTDICK!"
- fi
- swjsq_recover
- sh "${SCRIPTS_DIR}/${PROCESS_2}">"${SCRIPTS_DIR}/${PROCESS_2}.log" 2>&1 &
- sh "${SCRIPTS_DIR}/${PROCESS_3}" &
- }
- check_kn()
- {
- if [ ! -f "${SCRIPTS_DIR}/${PROCESS_3}" ]; then
- echo "$(date): CREATING KUAINIAO!"
- UPGRADE_KN=1
- else
- echo "$(date): CHECKING KUAINIAO!"
- ECHO_4=`cat "${SCRIPTS_DIR}/${PROCESS_3}"|grep "LOG_SIZE"`
- if [ -z "${ECHO_4}" ]; then
- echo "$(date): MODIFYING KUAINIAO!"
- UPGRADE_KN=1
- else
- UPGRADE_KN=0
- fi
- fi
- if [ "${UPGRADE_KN}" = "1" ]; then
- cat > "${SCRIPTS_DIR}/${PROCESS_3}" <<EOF
- #!/bin/sh
- PROCESS_2=${PROCESS_2}
- SCRIPTS_DIR=\$(dirname \$0)
- sleep 2
- while true; do
- LOG_SIZE=\`ls -l "\${SCRIPTS_DIR}/\${PROCESS_2}.log"|awk '{print \$5}'\`
- if [ "\${LOG_SIZE}" -gt "1048576" ]; then
- echo > "\${SCRIPTS_DIR}/\${PROCESS_2}.log"
- fi
- COUNT_2=\`ps|grep \${PROCESS_2}|grep -v grep|wc -l\`
- if [ "\${COUNT_2}" -lt "1" ]; then
- echo "\$(date): \${PROCESS_2} IS NOT RUNNING!"
- sh "\${SCRIPTS_DIR}/\${PROCESS_2}">"\${SCRIPTS_DIR}/\${PROCESS_2}.log" 2>&1 &
- fi
- sleep 480
- done
- EOF
- else
- echo "$(date): KUAINIAO HAS ALREADY BEEN MODIFIED!"
- fi
- chmod 755 "${SCRIPTS_DIR}/${PROCESS_3}"
- }
- check_xx()
- {
- COUNT_0=`ps|grep ${PROCESS_0}|grep -v grep|wc -l`
- COUNT_1=`ps|grep ${PROCESS_1}|grep -v grep|wc -l`
- PID_1=`ps|grep ${PROCESS_1}|grep -v grep|awk '{print $1}'`
- if [ "${COUNT_0}" -ge "5" -o "${COUNT_1}" -ge "1" ]; then
- echo "$(date): ETM_XWARE IS RUNING!"
- if [ "${COUNT_1}" -ne "1" ]; then
- kill "${PID_1}"
- sleep 2
- sh "${SCRIPTS_DIR}/${PROCESS_1}" &
- fi
- else
- echo "$(date): STARTING ETM_XWARE!"
- sh "${SCRIPTS_DIR}/${PROCESS_1}" &
- fi
- }
- check_xl()
- {
- if [ ! -f "${SCRIPTS_DIR}/${PROCESS_1}" ]; then
- echo "$(date): CREATING XUNLEI!"
- cat > "${SCRIPTS_DIR}/${PROCESS_1}" <<EOF
- #!/bin/sh
- PROCESS_0=${PROCESS_0}
- sleep 2
- while true; do
- COUNT_0=\`ps|grep \${PROCESS_0}|grep -v grep|wc -l\`
- if [ "\${COUNT_0}" -lt "5" ]; then
- echo "\$(date): \${PROCESS_0} IS NOT RUNNING!"
- cd ${XWARE_DIR}
- chmod 777 * -R
- ./etm_monitor &
- fi
- sleep 10
- done
- EOF
- else
- echo "$(date): XUNLEI EXISTS!"
- fi
- chmod 755 "${SCRIPTS_DIR}/${PROCESS_1}"
- }
- check_fastdick()
- {
- if [ -f "${SCRIPTS_DIR}/${PROCESS_2}" ]; then
- echo "$(date): FASTDICK IS INSTALLED!"
- check_kn
- check_sk
- else
- echo "$(date): CHECK IF FASTDICK IS INSTALLED!"
- fi
- }
- check_xware()
- {
- if [ -f "${XWARE_DIR}/xunlei.pid" ]; then
- echo "$(date): ETM_XWARE IS INSTALLED!"
- check_xl
- check_xx
- else
- echo "$(date): CHECK IF ETM_XWARE IS INSTALLED PROPERLY!"
- fi
- }
- check_status()
- {
- while true; do
- wget -4 --spider --quiet --tries=2 --timeout=2 ${TEST_URL}
- if [ "$?" = "0" ]; then
- echo "$(date): START CHECKRUN!"
- break
- else
- echo "$(date): CHECK NETWORK STATUS AGAIN!"
- TIME_OUT_0=`awk 'BEGIN{srand();printf("%.0f", rand()*10+5)}'`
- sleep ${TIME_OUT_0}
- fi
- done
- }
- #CHECKRUN START
- while true; do
- case "$1" in
- [-][mM]|[mM])
- echo "$(date): Show menu for $(basename $0)!"
- show_menu
- ;;
- [-][rR]|[rR])
- echo "$(date): Recover only!"
- swjsq_recover>>"${LOG_FILE}" 2>&1
- ;;
- [-][wW]|[wW])
- echo "$(date): Restart wan-start!"
- check_checkrun>>"${LOG_FILE}" 2>&1
- ;;
- *)
- echo "$(date): No parameters match!"
- break
- esac
- exit
- done
- check_status>"${LOG_FILE}" 2>&1
- check_xware>>"${LOG_FILE}" 2>&1
- check_fastdick>>"${LOG_FILE}" 2>&1
- #CHECKRUN END
复制代码
保存以上脚本为checkrun,上传到/jffs/scripts文件夹。
使用如下脚本,赋予checkrun执行权限。
- chmod 755 /jffs/scripts/checkrun
复制代码4.将checkrun脚本加入到WAN-START,之后重启路由,圆满结束。
请不要尝试直接运行checkrun脚本,所有操作完成后,重启路由器(推荐)或者重连WAN口。
待路由器能正常联网后,wan-start会自动调用checkrun脚本,以实现相关脚本后台常驻的效果。