Shell下执行下面脚本即可
cat /tmp/dhcp.leases
Shell下执行下面脚本即可
cat /tmp/dhcp.leases
关于在Openwrt上安装Python可以参考这里
https://wiki.openwrt.org/doc/software/python
使用本程序请先安装Python
在~目录下写buaa.py,内容如下
import urllib
import urllib2
import hashlib
import os
#Here input your username and password
username = 'xxx'
password = 'xxx'
def check_network():
response = urllib2.urlopen('http://www.offer4u.cn/ping', timeout=3)
response.close()
return response.getcode() == 204
def login(username,password):
md5 = hashlib.md5()
md5.update(password)
password = md5.hexdigest()[8:-8];
url = 'http://gw.buaa.edu.cn/cgi-bin/do_login'
values = {'username':username,'password':password,'drop':'0','type':'1','n':'100'}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req, timeout=3)
page_result= response.read()
response.close()
if page_result.isdigit() == True:
return "\033[1;32m%s\033[0m" % "Login successful"
elif page_result == "password_error":
return "\033[1;31m%s\033[0m" % "Wrong password"
else:
return "\033[1;31m%s\033[0m" % "Unknown error" + page_result
def light(on):
if on == 1:
os.system('echo 1 > /sys/class/leds/y1\:blue\:internet/brightness')
else:
os.system('echo 0 > /sys/class/leds/y1\:blue\:internet/brightness')
#main
try:
if check_network() == False:
light(0)
result = login(username,password)
if "successful" in result:
light(1)
else:
light(0)
print result
else:
light(1)
print "\033[1;34m%s\033[0m" % "Network connection is working"
except:
light(0)
print "\033[1;31m%s\033[0m" % "Processing error"
echo 0 > /sys/class/leds/y1\:blue\:internet/brightness
如果你是其他的路由器,请打开/sys/class/leds/ 目录,找到你想控制的灯,修改y1\:blue\:internet 即可(这里的反斜杠是转义符)

这款路由器推荐一下非常不错,支持U盘并且内存和运存等配置足够支持运行和安装很多软件,并且价格便宜,我买的时候才70多
crontab -e
然后我们输入
*/1 * * * * python ~/buaa.pyc > /dev/null */1 * * * * sleep 20; python ~/buaa.pyc > /dev/null */1 * * * * sleep 40; python ~/buaa.pyc > /dev/null
这样就会每隔20秒运行我们的脚本,如果网络断开就会自动连通,其中> /dev/null 是用来关闭输出
其中Openwrt不会默认启动crontab,我们还需要执行一下命令
/etc/init.d/cron start /etc/init.d/cron enable
vi /etc/config/dhcp
然后在config dhcp ‘lan’ 中加入
option 'dhcp_option' '6,114.114.114.114,119.29.29.29'
其中119.29.29.29是DNSPOD的Public+免费DNS
Openwrt默认的是vi而不是vim,如果想使用必须安装vim-full,同时要安装vim-runtime
opkg update opkg install vim-full vim-runtime
我们输入vim就可以看见安装成功
然后执行下面的命令编辑vim配置
vim /usr/share/vim/vimrc
同时分享一下我的配置
set showcmd " show (partial) command in status line set showmatch " show matching brackets set incsearch " incremental search set autowrite " automatically save before commands like :next and :make set nocompatible " use vim defaults instead of 100% vi compatibility set backspace=indent,eol,start " more powerful backspacing set autoindent " always set autoindenting on set linebreak " don't wrap words by default set textwidth=0 " don't wrap lines by default set ruler " show the cursor position all the time set backupskip+=/etc/crontabs.* " fix crontab -e "set number "设置行号 syntax on "语法高亮 filetype on "文件类型检测 set tabstop=4 set softtabstop=4 set shiftwidth=4
搭建环境:
Nginx-1.8.0,安装目录:/usr/local/nginx
PHP-7.0,虚拟主机目录在/home/vhosts/
首先,我们进入虚拟主机目录,新建一个wordpress目录,下载wordpress并解压
cd /home/vhosts/ mkdir wordpress cd wordpress wget https://cn.wordpress.org/wordpress-4.4-zh_CN.zip unzip wordpress-4.4-zh_CN.zip
然后我们把wordpress解压文件夹里面的文件移动到外面来,删除刚才下载的压缩包和wordpress-4.4-zh_CN.zip
mv wordpress/* ./ rm -rf wordpress*
然后我们把wordpress文件夹的权限和所有者更改一下(当前目录还为/home/vhosts/wordpress )
这里演示的是Nginx和php-fpm的用户和用户组均为nginx
chmod -R 755 ./ chown -R nginx.nginx ./
然后,我们到Nginx的安装目录,到你虚拟主机的配置文件目录中增加一份配置(这里我新建了一个专门的目录来放虚拟主机配置文件,在/usr/local/nginx/vhosts 下)
cd /usr/local/nginx/vhosts vi wordpress.conf
把下面的配置文件内容粘贴进去(用Windows的注意下回车和编码)
注意,其中的root目录为你wordpress虚拟主机的目录
server_name为监听的域名,这里用www.yourdomain.com做演示
server {
listen 80;
server_name www.yourdomain.com;
index index.html index.htm index.php;
root /home/vhosts/wordpress;
location ~ .*\.(gif|jpg|jpeg|png|bmp|ico|webp)$
{
expires 30d;
}
location ~ .*\.(woff|ttf|svg|otf|eot)$
{
expires 180d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location /
{
#支持wordpress的rewrite
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php/$1 last;
break;
}
}
location ~ \.php($|/)
{
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
接着按下Esc,输入:wq 退出vi
然后我们进入mysql
mysql -u root -p
输入你的密码之后,创建wordpress数据库
create database wordpress;
接着创建一个wordpress数据库的帐号,账号名为wp,密码为123456(修改成你自己的)
grant all privileges on wordpress.* to wp@localhost identified by '123456';
然后我们重载入nginx
service nginx reload
现在,访问www.yourdomain.com,用刚才创建的数据库用户名和密码安装wordpress吧
#!/usr/bin/python
"""Replacement for htpasswd"""
# Original author: Eli Carter
import os
import sys
import random
from optparse import OptionParser
# We need a crypt module, but Windows doesn't have one by default. Try to find
# one, and tell the user if we can't.
try:
import crypt
except ImportError:
try:
import fcrypt as crypt
except ImportError:
sys.stderr.write("Cannot find a crypt module. "
"Possibly http://carey.geek.nz/code/python-fcrypt/\n")
sys.exit(1)
def salt():
"""Returns a string of 2 randome letters"""
letters = 'abcdefghijklmnopqrstuvwxyz' \
'ABCDEFGHIJKLMNOPQRSTUVWXYZ' \
'0123456789/.'
return random.choice(letters) + random.choice(letters)
class HtpasswdFile:
"""A class for manipulating htpasswd files."""
def __init__(self, filename, create=False):
self.entries = []
self.filename = filename
if not create:
if os.path.exists(self.filename):
self.load()
else:
raise Exception("%s does not exist" % self.filename)
def load(self):
"""Read the htpasswd file into memory."""
lines = open(self.filename, 'r').readlines()
self.entries = []
for line in lines:
username, pwhash = line.split(':')
entry = [username, pwhash.rstrip()]
self.entries.append(entry)
def save(self):
"""Write the htpasswd file to disk"""
open(self.filename, 'w').writelines(["%s:%s\n" % (entry[0], entry[1])
for entry in self.entries])
def update(self, username, password):
"""Replace the entry for the given user, or add it if new."""
pwhash = crypt.crypt(password, salt())
matching_entries = [entry for entry in self.entries
if entry[0] == username]
if matching_entries:
matching_entries[0][1] = pwhash
else:
self.entries.append([username, pwhash])
def delete(self, username):
"""Remove the entry for the given user."""
self.entries = [entry for entry in self.entries
if entry[0] != username]
def main():
"""%prog [-c] -b filename username password
Create or update an htpasswd file"""
# For now, we only care about the use cases that affect tests/functional.py
parser = OptionParser(usage=main.__doc__)
parser.add_option('-b', action='store_true', dest='batch', default=False,
help='Batch mode; password is passed on the command line IN THE CLEAR.'
)
parser.add_option('-c', action='store_true', dest='create', default=False,
help='Create a new htpasswd file, overwriting any existing file.')
parser.add_option('-D', action='store_true', dest='delete_user',
default=False, help='Remove the given user from the password file.')
options, args = parser.parse_args()
def syntax_error(msg):
"""Utility function for displaying fatal error messages with usage
help.
"""
sys.stderr.write("Syntax error: " + msg)
sys.stderr.write(parser.get_usage())
sys.exit(1)
if not options.batch:
syntax_error("Only batch mode is supported\n")
# Non-option arguments
if len(args) < 2:
syntax_error("Insufficient number of arguments.\n")
filename, username = args[:2]
if options.delete_user:
if len(args) != 2:
syntax_error("Incorrect number of arguments.\n")
password = None
else:
if len(args) != 3:
syntax_error("Incorrect number of arguments.\n")
password = args[2]
passwdfile = HtpasswdFile(filename, create=options.create)
if options.delete_user:
passwdfile.delete(username)
else:
passwdfile.update(username, password)
passwdfile.save()
if __name__ == '__main__':
main()
用法参考下面
Usage: htpasswd.py [-c] -b filename username password
Create or update an htpasswd file
Options:
-h, --help show this help message and exit
-b Batch mode; password is passed on the command line IN THE CLEAR.
-c Create a new htpasswd file, overwriting any existing file.
-D Remove the given user from the password file.
在Nginx设置密码访问的配置
server {
***
auth_basic "Please enter the security code";
auth_basic_user_file /usr/local/nginx-1.8.0/htpasswd/mysql.db;
***
}
这里是版本7.0.1,使用下面命令下载编译包然后解压
wget http://php.net/get/php-7.0.1.tar.gz/from/this/mirror -O php-7.0.1.tar.gz tar zxvf php-7.0.1.tar.gz
yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel
./configure \ --prefix=/usr/local/php-7.0.1 \ --with-mcrypt \ --with-mhash \ --with-openssl \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-gd \ --with-iconv \ --with-zlib \ --enable-zip \ --enable-inline-optimization \ --disable-debug \ --disable-rpath \ --enable-shared \ --enable-xml \ --enable-bcmath \ --enable-shmop \ --enable-sysvsem \ --enable-mbregex \ --enable-mbstring \ --enable-ftp \ --enable-gd-native-ttf \ --enable-pcntl \ --enable-sockets \ --with-xmlrpc \ --enable-soap \ --without-pear \ --with-gettext \ --enable-session \ --with-curl \ --with-jpeg-dir \ --with-freetype-dir \ --enable-opcache \ --enable-fpm \ --with-fpm-user=nginx \ --with-fpm-group=nginx \ --disable-fileinfo
其中可以增加–with-mysql-sock=[dir] 来设置mysql的sock文件的位置,默认是/tmp/mysql.sock
–prefix 是你要安装的位置
make make install
cp php.ini-production /usr/local/php-7.0.1/lib/php.ini cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm cp /usr/local/php-7.0.1/etc/php-fpm.conf.default /usr/local/php-7.0.1/etc/php-fpm.conf cp /usr/local/php-7.0.1/etc/php-fpm.d/www.conf.default /usr/local/php-7.0.1/etc/php-fpm.d/www.conf
其中/usr/local/php-7.0.1/ 是你的安装位置,请替换成你自己的
chmod +x /etc/init.d/php-fpm chkconfig --add php-fpm chkconfig php-fpm on service php-fpm start
修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码
PATH=$PATH:/usr/local/php-7.0.1/bin export PATH