官网在这里,英语好的直接去看官网文档吧,我是英语渣只能翻译个大概;另外注意本文翻译时间,可能你看到的时候官网已经更新了。


flask-socketio赋予了flask程序支持服务端和客户端间双向低延迟通讯的能力,客户端可以使用 SocketIO 库或任何支持与服务端建立长链接的兼容库。

安装

可以直接使用pip安装:

1
pip install flask-socketio

依赖

自从1.0版开始,这个扩展完全兼容了python2.7和python3.3+版本。异步服务的支持基于下面3个选择中的一个:

  • eventlet 是3个选项中性能最高的,同时支持长轮循(long-polling)和WebSocket。
  • gevent 是在以前版本中使用的框架,支持长轮循,如果想支持WebSocket的话需要同时安装gevent-websocket 库。使用gevent和gevent-websocket结合性能也不错,但略低于eventlet。
  • flask 基于Werkzeug的开发服务也能用,不过性能上不如上面2个选项,所以它应该只用于开发时使用。这个选项只支持长轮循。
    本扩展将自动检测哪些异步框架被安装,默认首选eventlet,其次是gevent,最后是flask自带的开发服务。
    对于客户端来说,可以使用官方的Socket.Io来建立于服务端的链接,也有使用swift和c++写成的客户端。非官方的客户端也能工作,只要它实现了Socket.IO 协议。

目前的局限

目前flask-socketio只能同时运行在单个进程中(这里应该指的是一个进程中仅能存在一个实例的意思,而非只能开启一个进程吧…),解决这个限制的工作正在进行中。
(关于升级变化、以及从老版本迁移到新版的注意事项我就不翻译了,因为没用过老版本)

阅读全文

centos7安装Metasploit框架

发布在 Centos

Metasploit应该不用多说了吧?Kali自带、Win和Mac都提供了现成的安装包,不过我莫名的对apt系不感冒,这里记录一下在centos7上安装metasploit框架的步骤,理论上yum系的都应该通用。
首先执行

1
2
3
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
./msfinstall

然后安装postgresql:

1
2
yum install postgresql
yum install postgresql-server

安装完成后先别启动服务,这里有个 关键的步骤 就是修改验证方式,编辑/var/lib/pgsql/data/pg_hba.conf文件,添加一行

1
2
host    "msf_database"	"msf_user"      127.0.0.1/32          md5
host all all 127.0.0.1/32 ident

保存后初始化数据库并启动服务,这里我直接就是root权限:

1
2
3
4
5
6
7
8
9
10
postgresql-setup initdb
systemctl start postgresql.service
su postgres
createuser msf_user -P
Enter password for new role: yourmsfpassword
Enter it again: yourmsfpassword
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
createdb --owner=msf_user msf_database

然后切换回root用户,执行msfconsole:

1
2
3
4
5
6
7
8
9
10
msf> db_status
[*] postgresql selected, no connection
msf> db_connect msf_user:yourmsfpassword@127.0.0.1:5432/msf_database
NOTICE: CREATE TABLE will create implicit sequence "hosts_id_seq" for serial column "hosts.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "hosts_pkey" for table "hosts"
[..]
NOTICE: CREATE TABLE will create implicit sequence "mod_refs_id_seq" for serial column "mod_refs.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "mod_refs_pkey" for table "mod_refs"
msf > db_status
[*] postgresql connected to msf_database

然后就可以愉快的玩耍了。这里还有个地方需要注意的就是如果用上面的办法安装后执行了msfupdate,更新完成后再执行msfconsole会提示找不到命令,不知为什么/usr/bin目录下的链接被删除了,上面的安装方法将程序安装到了/opt/metasploit-framework/,所有的命令都在/opt/metasploit-framework/bin目录,可以自己重建链接。

另外,如果觉得每次进入msfconsole都要重新链接一次数据库麻烦的话,可以使用alias命令:

1
alias msfconsole='msfconsole -d db_connect -y /opt/framework/config/database.yml'

自己修改对应路径即可。

或者把database.yml放到~/.msf4目录中。

评论和分享

python脚本模拟tail命令

发布在 Python

今天有个需求,需要实时监控nginx日志中某些ip的访问情况。如果ip较少的话,直接使用tail、grep以及管道配合即可。不过需要监控100个左右的ip并进行相应处理的话,除了自己写脚本还真没想到别的办法。

首先引出Python中自带的2个函数:

  1. file.seek(off, whence=0) 从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。
  2. file.tell() 返回文件指针的当前位置。

那么思路就比较清晰了,写一个死循环,循环内记录指针位置并赋值给seek函数:

1
2
3
4
5
6
7
8
9
10
with open("test.txt") as f:
f.seek(0,2) #把指针置尾
while 1:
cp = f.tell() #获取当前位置
#print cp
line = f.readline()
if line:
print line
else:
f.seek(cp)#将指针移动到本次循环的位置

一个简单的模拟tail命令的脚本就完成了,然后在github上发现这么一个程序,原理上都一样,不过作者对其进行了更好的封装:https://github.com/kasun/python-tail

另外在python2.7中while 1的效率比while True的高。

评论和分享

  • 第 1 页 共 1 页
作者的图片

Roy

微信公众号:hi-roy


野生程序猿


China