杂七杂八的最近搞得一些小东西

最近干嘛都不知道 瞎搞了很多乱七八糟的东西 整理一下 虽然事情都是小事 但是因为都很简洁而且强大 特别喜欢 所以记录一下

  1. 使用pssh一个指令 批量服务器执行制定脚本
  2. python使用mysqldb导出数据量超大的表
  3. 使用rsync同步多台服务器上的数据
  4. 微信文章爬虫
  5. 破解百度云限速的小工具

批量远程操作服务器

因为一个需求涉及到批量操作远程服务器 找了很多文章和工具推荐 一个个都没有我想要的 有推荐pssh的 就是 parallel-ssh 也没有很方便的使用方法 后来我自己研究help 找到了一个非常非常好用的方法 这样 相当好用 完全满足自己的需求了 后来想想 还是有点不足 就是如果每个服务器登陆用户名不一样怎么办 不过这个已经提供了一种思路了 直接用ssh命令也可以操作了吧

1
parallel-ssh -I -P --user username -h server/list.txt bash < script/to/run.sh

server/list.txt:

1
2
3
12.34.56.78:1022
12.34.56.79:1022
12.34.56.80:1022

python导出大数据库表

一个伟人说过:

你说我好好一个前端,怎么就去写了python。

python2和python3反正不管 实现了再说 查了相关资料 主要是SSCursor这个来实现的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import MySQLdb, MySQLdb.cursors
conn = MySQLdb.connect(
host = config["host"],
user = config["user"],
passwd = config["password"],
db = config["db"],
charset = "utf8",
port = int(config["port"]),
cursorclass = MySQLdb.cursors.SSCursor)
cursor = conn.cursor()
cursor.execute("select * from my_table")
colNames = [i[0] for i in cursor.description]
for row in cursor:
doSomeAction(colNames, row)
cursor.close()
conn.close()

可以看出来 使用SSCursor之后 需要我们自己处理每条得到记录 而不是一次性拿到所有的结果 不过这也很好理解为啥这样的方案能导出超大的表

rsync同步多台服务器数据

这个工具感觉非常复杂 配置的时候我也相当头疼 搞了好久才搞定了实现需求的最简配置 这个工具啊 客户端和服务端都是同一个命令 所以特别讨厌 但是有个好处就是不一定需要使用root

服务端需要两个文件 一个是配置各种东西的 另外一个是账号密码文件

server.conf 其他参数可以按需自己改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
use chroot = no
max connections=500
syslog facility=local5
pid file = /tmp/rsync/rsync.pid # 具体修改到其他目录
log file = /tmp/rsync/rsync.log # 具体修改到其他目录
lock file = /tmp/rsync/rsync.lock # 具体修改到其他目录
[backup1] # 可以配置多个备份
path=/path/to/rsync/ # 需要同步的路径
read only = false
timeout = 60
list = no
auth users= username1 # 客户端认证的账号 必须来自secrets file文件中
secrets file = /path/to/secret # 账号文件路径

secret 可设置多组账号

1
2
username1:password123
username2:password567

启动服务

1
rsync --daemon --config=/path/to/server.conf --port=1234

这样服务端就算完成了 还有客户端 只需要一个密码文件

client.pass

1
password123

同步命令

1
rsync -rtvz --bwlimit=4000 --delete --port=1234 --password-file=/path/to/client.pass username1@127.0.0.1::backup1 /path/to/sync/

参数特别复杂 这样 服务端那边文件有增改删除 客户端执行命令后都能同步过来

微信文章爬取工具

使用非常简单 传入微信文章地址就可以了 导出的数据非常简洁 没有任何script标签 只有文章内容和样式

之前做一个项目 写过了微信文章爬虫 基于cheerio的 因为微信的文章有部分内容是动态生成的 所以这个库就显得相当不好用 后来想个工具 本来想phantomjs的 但是这个工具有点大 最后选了jsdom 还是相当好用 不过因为request 请求deflate格式内容会出现异常的bug 所以有部分文章请求的时候会出现问题 这个bug已经提了pr但是没有合并 不过按照这个情况 除非换另外的不依赖request的工具 否则问题还是存在的 不过应该没有多少库不用request而用其他的吧 所以现在只能等这个pr合并了 之后这个工具才能拿出来用

破解百度云限速小工具

不需要安装任何插件 没有浏览器限制 最后实现的效果非常棒 因为这里传视频不是很方便 就传微博了 效果

使用起来也非常简单 把代码保存到书签 选择文件之后点击书签 把生成的命令放终端里运行就可以了 因为是基于aria2的 所以还有断点续传的功能 嘿嘿 超级方便的