在极1s上用了一段时间ssh插件,速度很慢还很不稳定,间歇性抽风,虽然autossh会检测到并重启ssh插件,但频繁的断线频率和不完善的重启恢复机制实在是不能让人心情愉悦的去爬梯子 直到现在hiwifi都还没提供shadowsocks插件,不过在其官方源中提供了软件包,于是经过一番折腾安装好了(极1s安装shadowsocks、redsocks、pdnsd实现科学上网) 本以为就可以搞定收工,但今天早上起来却又连不上了,发现原来是因为使用的免费shadowsocks账号密码已经改了(在此感谢提供免费shadowsocks账号的boafanx官方网站) 经常改密码很正常,毕竟是免费的账号,于是便有了下面的简易的一键自动获取脚本:
功能说明: 定时自动获取(boafanx官方网站)免费shadowsocks账号,判断如有更新则自动替换shadowsocks配置文件重启shadowsocks并发送邮件通知。
#!/bin/sh
# Copyright (C) 2014 www.jslink.org
# author: Freedom
# blog: www.jslink.org
source /etc/profile >/dev/null
#设置从boafanx获取的服务器IP
ipmatch=106.185.43.112
#邮件提醒
email="xxxxxxx@qq.com"
#是否发送邮件 1 发送 0 不发送
isemail=1
#-----------------------------------------------------------------------------
#判断mutt
which mutt >/dev/null
[ $? -eq 0 ] || isemail=0
#配置文件路径
File1=/etc/config/shadowsocks.json
#临时缓存文件
File2=/tmp/shadowsocks.json.tmp
TMPFILE=/tmp/curl.tmp
#循环5次 确定网络可用
for i in 1 2 3 4 5;do
curl -s -A 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36' http://www.baidu.com 1>/dev/null 2>&1
[ $? -eq 0 ] && {
for j in 1 2 3;do
curl -s -A 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36' -e 'http://boafanx.tabboa.com/' http://boafanx.tabboa.com/boafanx-ss/ 1>$TMPFILE 2>&1
[ $? -eq 0 ] && {
#获取指定服务器的配置信息
grep -A 6 -B 1 "$ipmatch" $TMPFILE | sed 's///g' >$File2
#修改shadowsocks本地端口为65500
sed -i 's/"local_port":.*/"local_port":65500,/g' $File2
#简单判断是json格式
[ "`head -n 1 $File2 2>/dev/null`" = "{" -a "`tail -n 1 $File2 2>/dev/null`" = "}" ] && {
CurRow=1
LastRow=`cat $File2 | wc -l`
Eq=1
[ -f $File1 ] || {
touch $File1
Eq=0
}
rm -f $TMPFILE
#对比是否更新
while [ $CurRow -le $LastRow ];do
file1Line="`awk 'NR=='$CurRow' {print $0}' $File1`"
file2Line="`awk 'NR=='$CurRow' {print $0}' $File2`"
echo "$CurRow/$LastRow $file1Line <=> $file2Line" >>$TMPFILE
#逐行对比
[ "$file1Line" = "$file2Line" ] || Eq=0
CurRow=$((CurRow+1))
done
[ "$Eq" = "0" ] && {
cp -rf $File2 $File1
/etc/init.d/shadowsocks restart 1>/dev/null 2>&1
#发送邮件提醒
[ "$isemail" = "1" ] && mutt -s "[shadownsocks] Configuration file has been updated" $email <$TMPFILE
}
break
} || {
[ "$isemail" = "1" ] && mutt -s "[shadownsocks] Contents does not match" $email <$File2
}
break
} || {
sleep 5
[ $j -eq 3 -a "$isemail" = "1" ] && mutt -s "[shadownsocks] Get content error" $email <$TMPFILE
}
done
break
} || {
sleep 15
}
done
rm -f $TMPFILE
rm -rf $File2
安装配置方法:
1、简单点,ssh连接路由器执行下面命令即可:
cd /etc
wget http://www.jslink.org/upload/files/20140929/shadowsocks_get_account.sh
chmod +x shadowsocks_get_account.sh
[ -n "`crontab -l|grep shadowsocks_get_account`" ] || {
rm -rf /tmp/crontab.tmp
crontab -l >/tmp/crontab.tmp
echo>>/tmp/crontab.tmp
echo "0 */1 * * * /bin/sh /etc/shadowsocks_get_account.sh" >>/tmp/crontab.tmp
crontab /tmp/crontab.tmp
/etc/init.d/cron restart
}
crontab -l
#获取免费shadowsocks账号
/bin/sh /etc/shadowsocks_get_account.sh
上面计划任务是1个小时执行一次,可以先修改下再执行,不建议时间间隔改的太短~
2、编辑/etc/shadowsocks_get_account.sh 将里面的邮箱账号和需要获取的IP修改成你的
另外,需要邮件提醒的,安装配置mutt方法可以参考:路由器安装mutt、ssmtp实现发送邮件提醒功能
不需要的isemail=1改为isemail=0
最后:
这个脚本的缺点是:只能获取指定服务器的配置信息,理想中是做到一键获取所有配置,判断TTL得到最快的IP,这只是一个简单的shell脚本,暂时可以解决它频繁改密码。
还有一个Shadowsocks的公益组织专门提供免费Shadowsocks账号(官网:https://www.shadowsocks.net/get)
对此也已经有人使用Python写出来了一个更高级的一键获取脚本,推荐原文博客地址: http://bindog.github.io/blog/2014/09/06/shadowsocks-account/
没有评论:
发表评论