Category Archives: code

perl, lua, bash, c…

如何安全的使用 bash 操作 MySQL

By | 2016-10-12

最近在 percona blog 中看到这篇文章 use-mysql-shell-securely-from-bash , 讲述如何在 Bash 中安全的使用 MySQL 进行查询. 字面意思的安全要比文章所说的更宽泛, 不过这篇文章有几点可取之处值得学习, 因为 Bash 的方便性, 我们经常用到 Bash 来完成各种脚本任务, 如果操作数据库的话(比如备份, 监控等), 任何可以执行 ps aux 命令的用户都可以看到正在执行的命令, 一些敏感信息如配置文件, 用户密码等都可以看到, 另外在 MySQL 5.6 之后命令行下用密码连接数据库也会得到警告信息 Warning: Using a password on the command line interface can be insecure. 如何隐藏进程中的密码信息是我们都需要关注的, 文章中的作者用了很巧妙的方式来达到隐藏的目的, 甚至 ip, port 等也可以隐藏, 并且 5.6 版本中的 warning 信息也不会再出现, 我在下面会基于此技巧进行阐述,… Read More »

Common utilities for sysadmin/dba

By | 2016-05-26

sys-toolkit Some useful scripts to sysadmins/dbas. read more from: https://github.com/arstercz/sys-toolkit toolkit lists: sys-genpass sys-nton sys-pubip sys-ascii sys-ipton sys-lock-run sys-repeat sys-checkport sys-echo-stderr sys-php-chroot sys-tcp-port-proxy sys-shell-type sys-memory-maps sys-mem-redis-summary sys-mysql-summary sys-mysql-adj sys-mysql-kill-blocked-thread sys-mysql-kill-long-query sys-mysql-block-account sys-mysql-createdb sys-mysql-qps sys-mysql-set-maxconnections sys-mysql-sql-reject

Qtunnel 加密数据库主从复制通道

By | 2015-11-05

Qtunnel 加密数据库主从复制通道 链接见: https://github.com/getqujing/qtunnel https://github.com/arstercz/qtunnel 背景 在异地机房的环境下, MySQL 数据同步复制基于 tcp 的明文传输, slave 接收到的 sql 语句可以很容易的被监听到, 对于敏感数据, 这种简单的异地复制是很危险的方式. 当然机房之间如果已经打通或有 vpn 互相通信就可以忽略该文的介绍. 另外也可以通过 MySQL 内置的 tls/ssl 方式实现复制, 不过该方式对应用的访问性能可能造成影响, 也容易影响线上的数据库架构, 详见 https://dev.mysql.com/doc/refman/5.6/en/ssl-connections.html

Perl one line command – 常用正则

By | 2015-03-04

Perl one line command – 常用正则 本章说明一些常用的正则表达式, 比如匹配 IP 地址, HTTP 头信息, email 地址等. 1. 匹配 IPv4 地址 IP 地址格式 xxx.xxx.xxx.xxx, 使用 \d 来匹配数字,通用的做法如下: /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ {1,3}表示匹配最少一个, 最多3个数字,这个表达式没有检查地址的有效性(不能大于255),所以也能匹配出无效的地址,但是对于有效的地址都能匹配出来; 我们可以发现前三部分是一样的, 可以改成: /^(\d{1,3}\.){3}\d{1,3}$/

Perl one line command – 输出和删除行

By | 2015-03-04

Perl one line command – 输出和删除行 本章介绍使用 Perl 命令行输出和删除指定的行内容, 比如 输出/删除 指定的行, 重复的行, 匹配的行等. 输出和删除操作是相对的( -i 参数 ), 明白了如何输出, 删除也就尽在掌握. 1. 输出文本 n 行内容 perl -ne ‘print ; exit’ file perl -i -ne ‘print ; exit’ file

Perl one line command – 转义和替换

By | 2015-03-03

Perl one line command – 转义和替换 本章使用 Perl 命令行来更改, 转换, 替换文本内容, 同时会介绍 base64 的编解码, url 转义, HTMl转义等相关的信息. 1. ROT13 详见 http://en.wikipedia.org/wiki/ROT13 ROT13(回转13位,rotateby13places,有时中间加了个减号称作ROT-13)是一种简易的置换暗码,比如 A 加密后为 N, B 为 M, a 为 n, b 为 m .它是一种在网路论坛用作隐藏八卦、妙句、谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥, 本身上ROT13是它自己逆反;也就是说,要还原ROT13,套用加密同样的算法即可得,故同样的操作可用再加密与解密. 我们使用 y/// 和 tr/// 操作符说明如下: perl -le ‘$string = “hello”; $string =~ y/A-Za-z/N-ZA-Mn-za-m/; print $string’ perl -le ‘$string =… Read More »

Perl one line command – 字符串与数组

By | 2015-03-03

Perl one line command – 字符串与数组 本章使用 Perl 命令行说明如何创建字符串和数组, 包括生成密码, 创建指定长度字符串, 查找字符串中的数值等, 也会介绍一些特殊变量比如 $, 和 @ARGV 等, 同样以示例说明. 1. 生成并打印字符 # perl -le ‘print a..z’ abcdefghijklmnopqrstuvwxyz 在 Perl 中 .. 是范围操作符, 在列表环境中, 上述命令表示打印从 a 到 z 的字母, 也可以使用 $, 和 join 来指定字母之间的分隔符: # perl -le ‘print join “, “,(a..z)’ a, b, c, d, e, f,… Read More »