月度归档:2016年11月

autossh sock5

原理很简单就是用ssh -D建立socks代理,然后把浏览器配置成socks代理就是了。用路由器来做ssh -D的好处是不用在每个设备上(我有一个iphone,两个ipad,一个android手机,n个虚拟机)去做ssh -D。那为什么不直接在远程服务器上提供socks5代理呢?因为socks5不能fq,流量中有关键字的话会被阻断。ssh -D建立的socks proxy是加密的,暂时还不会被阻断。

第一步: 配置服务器/root/.ssh/authorized_keys放你的public key

第二步: 把private key传到openwrt的/root/.ssh/id_rsa

第三步: 把openwrt的ssh客户端从dropbear换成openssh-client,安装autossh

rm /usr/bin/scp
rm /usr/bin/ssh
opkg update
opkg install openssh-client
opkg install autossh

第四步: 配置autossh,/etc/config/autossh 如下:

config autossh
        option ssh        '-i /root/.ssh/id_rsa -N -T -D 192.168.2.1:7080 root@<your_server_ip>'
        option gatetime        '0'
        option monitorport        '20000'
        option poll        '600'

192.168.2.1是你的路由器的lan ip。关键行是-D 192.168.2.1:7080,就是这个建立了一个socks代理。

第五步: 开机自动启动

/etc/init.d/autossh enable
/etc/init.d/autossh start

使用的时候需要连接这个路由器,应该会分配一个192.168.2.x的ip(你自己知道怎么配吧)。然后把socks代理设成192.168.2.1:7080

适合懒人的简单开机自动运行

编辑/etc/rc.local加入

autossh -M 0  -NT -D 0.0.0.0:8888 ssh_host &

PyMongo基本使用

引用PyMongo

import pymongo

创建连接Connection

import pymongo

conn = pymongo.Connection('localhost',27017)

from pymongo import Connection

conn = Connection('localhost',27017)

创建Connection时,指定host及port参数

import pymongo
conn = pymongo.Connection(host='127.0.0.1',port=27017)

连接数据库

db = conn.ChatRoom

db = conn['ChatRoom']

连接聚集

account = db.Account

或 account = db["Account"]

查看全部聚集名称

db.collection_names()

查看聚集的一条记录

db.Account.find_one()
db.Account.find_one({"UserName":"keyword"})

查看聚集的字段

db.Account.find_one({},{"UserName":1,"Email":1})
// {u'UserName': u'libing', u'_id': ObjectId('4ded95c3b7780a774a099b7c'), u'Email': u'libing@35.cn'}
db.Account.find_one({},{"UserName":1,"Email":1,"_id":0})
// {u'UserName': u'libing', u'Email': u'libing@35.cn'}

查看聚集的多条记录

for item in db.Account.find():
    item

for item in db.Account.find({"UserName":"libing"}):
    item["UserName"]

查看聚集的记录统计

db.Account.find().count()
db.Account.find({"UserName":"keyword"}).count()

聚集查询结果排序

db.Account.find().sort("UserName")  --默认为升序
db.Account.find().sort("UserName",pymongo.ASCENDING)   --升序
db.Account.find().sort("UserName",pymongo.DESCENDING)  --降序

聚集查询结果多列排序

db.Account.find().sort([("UserName",pymongo.ASCENDING),("Email",pymongo.DESCENDING)])

添加记录

db.Account.insert({"AccountID":21,"UserName":"libing"})

修改记录

db.Account.update({"UserName":"libing"},{"$set":{"Email":"libing@126.com","Password":"123"}})

删除记录

db.Account.remove()   -- 全部删除
db.Test.remove({"UserName":"keyword"})