6月 24

监控mysql从机同步状态脚本1.1

  之前写了个一个检查mysql从机的脚本(http://www.simonzhang.net/?p=1823),但是在使用中发现一个问题。如果数据库被重启了,但是同步的没有启动,此脚本检查还是正常,不会进行报警,数据不会同步。
  我做了个调整,每次检查同步主机的pos,通过crontab进行调用,如果多次都没有变化则进行告警。如果10分钟调用一次,设为3次,就是半个小时内没有更新则报警。
crontab配置如下:
*/10 * * * * /bin/bash /script/check_mysql_slave/check_mysql_slave.sh start >/dev/null 2>&1
部分代码如下:

源代码

4月 18

监控mysql从机同步状态脚本

  mysql数据库主从运行。为了知道从机的同步情况,写了个脚本,放在crontab中,如果同步出错,则邮件报警。去年写的,放上来做个备忘。

3月 27

不明IP登陆linux服务器时邮件通知

  当有人登陆服务器时希望能知道是那个IP在登陆,如果是黑客登陆了也能及时知道。
  处理方法是,python时时检查linux下 secure 文件,如果是登陆成功的就发邮件。然后用shell脚本调用py启停,然后配置crontab定时检查py是否运行,如果检查进行不在则进行启动。
  python 脚本

  shell 脚本

  crontab的配置,每8个小时检查一次。
0 */8 * * * /bin/sh /program/script/check_login_user/monitoring_secure.sh check >/dev/null 2>&1
代码下载

12月 06

raspberry pi 开机wifi自动启动并发邮件通知

  安装好USB的wifi模块,自动获取IP地址。获取到IP后邮件通知。这样每次重启就不用再连显示器了。

以下几个的安装是为了方便使用与本次无关。
安装vim
$ sudo apt-get install vim
将时区改为上海
$ sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
安装校时工具
$ sudo apt-get install ntpdate
通过网络同步时间
$ /usr/sbin/ntpdate stdtime.gov.hk

  把USB的wifi接口接好。
  我接了一个腾达W311M的wifi无线,用命令看到无线网卡已经加载。如下:
$ lsusb
Bus 001 Device 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
image

  然后可以在图形化界面中wpa_gui配置。如果使用命令行可以用wpa_cli。我是直接修改配置文件。我的配置文件如下:

无线配置文件位置/etc/wpa_supplicant/wpa_supplicant.conf
文件内容如下:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=0

network={
ssid=”simonzhang”
psk=”xxxxxxx”
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}

网络部分配置/etc/network/interface
文件内容如下:
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

  配置完毕,将启动后发送邮件的脚本放到家目录中,脚本如下,如果邮件服务器认证不严的话用sendmail会更简单:

NotificationIP脚本

  脚本测试通过,配置开机启动。

$ sudo vim /etc/rc.local

# Print the IP address
_IP=$(hostname -I) || true
if [ “$_IP” ]; then
printf “My IP address is %s\n” “$_IP”
fi
# start wifi
echo “Starting WiFi…”
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
sleep .5s
dhclient wlan0
echo “WiFi should be started”

# notification my ip
python /home/pi/script/NotificationIP.py

exit 0

失败经验总结:
1)之前是用的下面代码,但是在除掉网线后路由里的默认网关没有,用“sudo route add default gw 192.168.1.1”添加,如果有网线只是报有一个ip。
def get_local_ip_address():
ipaddr = ”
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((‘1.1.1.1’, 8000))
ipaddr = s.getsockname()[0]
s.close()
except:
ipaddr = “ERROR”
return ipaddr

2)系统应该不支持热插拔,每次查usb wifi时都会重启。

3)不知道是电力原因,还是USB wifi原因,连接质量很不好,容易断开。

参考文档:
http://stinebaugh.info/auto-start-your-wifi-on-raspberry-pi/

11月 13

python 通过邮件服务器发送 邮件

很早写的,本来觉得意义不大,还是放上来,以备丢了。python2.6下发送通过。