博客从 bo-blog 转移到WordPress中,内容有些丢失,后续正在维修中

rsync 服务器的搭建

2017年1月5日 没有评论

rsync是个神器我就不啰嗦了. 我这边主要介绍一下, raync 的自动同步下载. 某些原因, 国外的vps实在便宜,流量大,可以用来下载电影什么的. 可是下载完了,还需要再下载到本地. 特别是文件很多的时候, 一个个的下载,速度实在太慢了. 也不现实. rsync就比较适合这个了. 不管再多. 都是轻轻松松的一个命令而已.

服务器端: Linux. 各种发行版都可以.

服务器端配置文件:

# /etc/rsyncd.conf

uid=root
gid=root
max connections=400
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsyncd.passwd
hosts deny=172.16.78.0/22
hosts allow=127.0.0.1

[backup]
comment= backup
path=/mnt/
read only = yes
exclude=test
auth users=backup

认证的密码文件
# /etc/rsyncd.passwd

echo "backup:123456" > /etc/rsyncd.passwd
chmod 600 /etc/rsyncd.passwd

启动 rsync 服务器端

rsync --daemon --config=/etc/rsyncd.conf

下面是客户端

rsync -avz --password-file=pass.txt --progress 0day@127.0.0.1::backup .

# pass.txt
123456

分类: Linux服务器 标签:

过了今天,就是2017了

2016年12月31日 没有评论

太快了,太快了

还没觉得,又过了一年了,算下来,工作都这么多年了,时间好快!

回顾这一年,感觉好像没有做成什么事,也没有完成目标,有点遗憾,希望在2017能有一个好的开始!

年纪越来越大,哎!

分类: 未分类 标签:

iOS客户端编写文章

2016年12月26日 没有评论

这是一个iOS客户端的文章

感觉效果很不错

分类: 生活杂谈 标签:

最近将陆续更新一些智能硬件的文章

2016年12月25日 没有评论

最近将陆续更新一些智能硬件的文章, arduino 树莓派 linkit 7688an openwrt mtk mt7620a 相关的文章. 总结下这几年的成果. 是该记录分享一下了!

今天是圣诞节哦, 转眼就到2017年了,好快. 叮当也有一岁了!

分类: 生活杂谈 标签:

博客数据丢失, 停止了几个月后重新恢复

2016年12月25日 没有评论

以前备份的数据也找不到了, 最近健忘的比较厉害,找了很久的文档,才早到 2015年5月份的备份记录, 就暂时先恢复到这个时候吧!

另外以前的bo-blog的数据也找不到了, 实在是杯具的很, 哎!!!

最近时间过得很快,实在是太快了!

分类: 生活杂谈 标签:

nagios 高级监控之 nrpe

2015年6月5日 没有评论

上篇文章主要介绍了 nagios 的基本监控. 可以用来监控ping等. 但是有个问题. 如果我需要监控主机的 系统负载. nagios 监控主机怎么办? 这个时候 nrpe 这个软件就派上用场了.

nrpe 可以用来做代理. 把nrpe 安装在被监控的主机上. 这个服务监听 tcp 5666 端口. 接受nagios nrpe插件的请求.然后把检查结果汇报给 nagios主机. 流程如下

nagios主机 -> nrpe 插件 ->|| 被监控主机 nrpe 服务 -> nrpe 执行命令 -> nrpe 返回检查结果

注意中间的过程. nagios 主机需要安装 nrpe插件. 注意, 是nrpe插件, 不是nrpe服务. 这个插件就是一个小程序. 可以跟对方的nrpe服务通信的.

下面用监控对方主机的 系统负载为例. 讲解如何操作.

1.首先在 nagios 监控主机上安装 nagios-nrpe-plugs. yum 可以用这个命令安装 nagios-plugins-nrpe.x86_64 : Provides nrpe plugin for Nagios.
这个软件包安装以后, 会在 /usr/lib64/nagios/plugins/check_nrpe

2. 在nagios command 里面定义 调用 nrpe插件. 这个貌似安装nagios 的时候,就已经定义好了,如果没有,可以自添加. 如下. 具体含义就不在解释了.

define command {
command_name check_nrpe
# 定义npre的连接参数, 超时120秒, 如果超时,报告状态为未知 -c 表示要远程调用nrpe执行的命令
command_line $USER1$/check_nrpe -u -4 -t 120 -H $HOSTADDRESS$ -c $ARG1$
}

3. 定义好命令以后. 就可以在服务项目里面调用了. 如下
# load
define service {
use generic-service,graphed-service
host_name hostname
service_description Load
check_command check_nrpe!check_load
}

这个地方解释下 check_command. check_nrpe!check_load 表示调用 check_nrpe 这个命令. check_load 表示 check_nrpe 的参数. 也就是 $ARG1$.

4. 这个地方定义好以后并没有完.
以下操作在 被监控主机 上执行.
4.1 安装 nrpe 服务. yum 安装即可.
4.2 编辑 /etc/nagios/nrpe.cfg 这个文件, 里面定义 check_load 这个命令的参数. 如下
command[check_load]=/usr/lib64/nagios/plugins/check_load -w 2.0,1.5,1 -c 3,2,1.5
主要是定义了 引用 check_load 的命令参数. -w 表示 警告值. -c 表示严重值.

定义好以后, 重启下 nrpe 服务就好了. 这个一定要做.

好了, 以上步骤弄完了, 重启下nagios服务吧, 等几分钟, 应该在监控主机地方,就可以看见监控项目了

分类: Linux服务器 标签:

nagios 监控高级用法

2015年6月5日 没有评论

随着用nagios的越来越多. 基本上算是熟练掌握了nagios的一些用法了.

nagios不熟悉的时候,觉得不好用. 下面是我使用的一些经验.

nagios 初步介绍:
nagios 主要是通过各种配置文件定义来监控. 不能通过web页面新增监控项目. 这点跟其他的监控不一样. 所以配置起来对新手来说比较麻烦.
nagios 分两种类型的监控. 一个是主机(host),一个是服务(service). 所有的监控都是这两种.
nagios 通过模板定义. 需要监控的服务,可以先用模板定义, 在使用的时候, 用 use 指令引用即可.
重点就是要理解监控的对象. host/service 这两种. 这两种都是先定义模板, 然后引用. 每个服务都对应的一个命令. 命令先在 command.cfg 文件里面先定义即可. 就三步

1. 安装.
我个人的观点是, 在centos下面安装软件, 尽量都用yum安装. 加上 epel 的扩展包以后. 基本上绝大部分软件都可以yum安装了. yum 安装的好处就是方便批量自动安装. 别扯什么编译源码啥的. 麻烦. 不方便管理.

2. 配置.
nagios的配置文件在 /etc/nagios 目录下面.下面的目录结构是我的配置. 可以参考下.
下面我 重点介绍下面配置文件目录的关系.

/etc/nagios/
├── cgi.cfg    # 这个配置文件主要是跟cgi设置相关的. 不用修改.
├── conf.d     # 这个目录是自己新建的.定义被监控主机的一些额外项目
│   ├── host01.hdieus.net.cfg
├── nagios.cfg   # nagios 服务进程的主要配置文件,nagios服务的主要参数都是在这个文件里面
├── nrpe.cfg   # 这个是安装了nrpe 服务以后, nrpe 的配置文件.
├── objects   # 这个目录定义了一些模板对象, 监控的对象种类等
│   ├── commands.cfg   # 定义监控的命令.以后自己添加命令就修改这个文件
│   ├── contacts.cfg    # 定义联系人信息
│   ├── localhost.cfg
│   ├── printer.cfg
│   ├── switch.cfg
│   ├── templates.cfg    # 定义模板, 里面包含一个主机模板和服务模板.
│   ├── timeperiods.cfg  # 定义时间模板
│   └── windows.cfg
├── passwd    # 这个文件是 cgi 进程的web登录模板
├── private
│   └── resource.cfg  # 定义一些系统变量
└── servers   # 这个目录是自己创建的, 里面放被监控主机的定义. 每个主机对应一个文件
    ├── host01.hideus.net.cfg   # 这个文件定义了 host01.hideus.net 这个主机需要监控的项目.
    ├── group.cfg 
    ├── localhost.cfg
    ├── servicegroup.cfg

通过上面的讲解, 关系很清楚了. 如果需要新增一个监控的主机或者服务, 就只需要在 servers 目录下面创建一个配置文件即可.

3. 创建需要监控主机/服务的配置文件. 我下面给一个模板.



# 定义主机
define host {
    use                     linux-server
    host_name               host01.hideus.net
    alias                   host01.hideus.net
    # 修改成自己的被监控服务器的IP
    address                 host01.hideus.net
}


# procs
define service {
        use    generic-service,graphed-service
        host_name  host01.hideus.net
        service_description Total Processes
        check_command check_nrpe_procs!check_procs!250!400!RSZDT

}

分别讲解:

1. 定义主机的监控. 就是监控这个主机是否可以ping通.

# 定义主机监控类型
define host {
    use                     linux-server   # use linux-server  表示使用 linux-server 的模板定义. 这个定义在 templates.cfg  文件里面先定义好
    host_name               host01.hideus.net   # 表示定义的主机名
    alias                   host01.hideus.net   # 表示定义的别名
    # 修改成自己的被监控服务器的IP
    address                 host01.hideus.net   # 定义主机的ip地址   
}

更多的 主机监控对象的定义,可以参考 http://nagios.sourceforge.net/docs/3_0/objectdefinitions.html#host . 不过说明的几项已经足够了.

2. 定义服务对象的监控. 定义需要监控的服务类型

# procs   
define service {
        use    generic-service,graphed-service   # 表示分别引用 generic-service,graphed-service 这两个模板. 这两个模板定义先在  templates.cfg 定义好
        host_name  host01.hideus.net   # 定义的主机名, 这个主机名必须要跟 主机的主机名一致, 否则会报错
        service_description Total Processes  # 定义的服务描述, 这个在web页面会显示
        check_command check_nrpe_procs!check_procs!250!400!RSZDT  # 这个就是定义的命令了. 这个命令需要先在 command.cfg 文件里面先定义.
 
}

下面是 模板文件里面,关于主机的定义

define host{
	name				linux-server	; The name of this host template
	use				generic-host	; This template inherits other values from the generic-host template
	check_period			24x7		; By default, Linux hosts are checked round the clock
	check_interval			5		; Actively check the host every 5 minutes
	retry_interval			1		; Schedule host check retries at 1 minute intervals
	max_check_attempts		3		; Check each Linux host 10 times (max)
        check_command                   check-host-alive ; Default command to check Linux hosts
	notification_period		workhours	; Linux admins hate to be woken up, so we only notify during the day
							; Note that the notification_period variable is being overridden from
							; the value that is inherited from the generic-host template!
	notification_interval		120		; Resend notifications every 2 hours
	notification_options		d,u,r		; Only send notifications for specific host states
	contact_groups			admins		; Notifications get sent to the admins by default
	register			0		; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
	}

解释的很清楚. 就不需要解释了. 这个地方要弄清楚的关系. 就是如果在模板文件里面定义好了. 在定义被监控的主机的时候. 用 use 引用以后, 这个主机就会默认使用模板里面的设置. 就不需要额外在主机监控里面写了.

下面是服务的模板定义.


define service{
        name                            generic-service 	; The 'name' of this service template
        active_checks_enabled           1       		; Active service checks are enabled
        passive_checks_enabled          1    		   	; Passive service checks are enabled/accepted
        parallelize_check               1       		; Active service checks should be parallelized (disabling this can lead to major performance problems)
        obsess_over_service             1       		; We should obsess over this service (if necessary)
        check_freshness                 0       		; Default is to NOT check service 'freshness'
        notifications_enabled           1       		; Service notifications are enabled
        event_handler_enabled           1       		; Service event handler is enabled
        flap_detection_enabled          1       		; Flap detection is enabled
        failure_prediction_enabled      1       		; Failure prediction is enabled
        process_perf_data               1       		; Process performance data
        retain_status_information       1       		; Retain status information across program restarts
        retain_nonstatus_information    1       		; Retain non-status information across program restarts
        is_volatile                     0       		; The service is not volatile
        check_period                    24x7			; The service can be checked at any time of the day
        max_check_attempts              5			; Re-check the service up to 3 times in order to determine its final (hard) state
        normal_check_interval           10			; Check the service every 10 minutes under normal conditions
        retry_check_interval            2			; Re-check the service every two minutes until a hard state can be determined
        contact_groups                  admins			; Notifications get sent out to everyone in the 'admins' group
	notification_options		w,u,c,r			; Send notifications about warning, unknown, critical, and recovery events
        notification_interval           120			; Re-notify about service problems every hour
        notification_period             24x7			; Notifications can be sent out at any time
        register                        0       		; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
        }

废话不多说了, 每个指令都有解释. 仔细看懂就知道了. 主要是要理解 这里面的含义. 在定义主机服务监控以后, 直接用 use 指令引用这个模板即可.

接下来就是 命令 的定义了. 在 command.cfg 文件里面.

# 'check_local_disk' command definition
define command{
        command_name    check_local_disk
        command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
        }

格式固定的.参考下面. 就几行. 主要是 comman_line 这个表示需要执行的命令的文件.
$USER1$ 这个变量是系统变量. 这个变量在 private/resource.cfg 文件中定义的. 如下
# Sets $USER1$ to be the path to the plugins
$USER1$=/usr/lib64/nagios/plugins

$USER1$ 就表示 /usr/lib64/nagios/plugins 这个目录.
check_disk 这个表示需要执行的命令. 可以登录 /usr/lib64/nagios/plugins ,然后用ls查看有这个文件存在.
-w $ARG1$ -c $ARG2$ -p $ARG3$ 表示执行命令的参数. $ARG1$ 表示第一个参数 其他的依次类似. 如果多个就是 $ARG2$ $ARG3$ $ARG4$ . 调用的时候. 用 ! 分割命令参数.
比如 定义主机监控这个服务的时候, 可以这样用

check_command check_ping!350,20%!450,30% # check_ping 表示调用的命令名.就是在name地方定义的. 350,20% 为 $ARG1$. 450,30% 为 $ARG2$. 中间用 ! 分割.

上面介绍完了. 基本上对 nagios 的基本监控就算理解的差不多了.

下篇文章介绍 nagios 跟 nrpe 配合的. 远程监控其他主机.

分类: Linux服务器 标签:

python 简易的 FTP 服务器模块

2015年6月5日 没有评论

发现一个好东西, 搭建FTP服务器不用每次安装麻烦的配置了. 直接用几条命令就搞定了, 特别是自己的小FTP服务器,可能就是自己用而已, 不需要特别的权限. 这个就很好了.

https://github.com/giampaolo/pyftpdlib

git clone https://github.com/giampaolo/pyftpdlib.git

下面的简易的代码

"""A basic FTP server which uses a DummyAuthorizer for managing 'virtual
users', setting a limit for incoming connections.
"""

import os

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer


def main():
    # Instantiate a dummy authorizer for managing 'virtual' users
    authorizer = DummyAuthorizer()

    # Define a new user having full r/w permissions and a read-only
    # anonymous user
    authorizer.add_user('user', '12345', os.getcwd(), perm='elradfmwM')
    authorizer.add_anonymous(os.getcwd())

    # Instantiate FTP handler class
    handler = FTPHandler
    handler.authorizer = authorizer

    # Define a customized banner (string returned when client connects)
    handler.banner = "pyftpdlib based ftpd ready."

    # Specify a masquerade address and the range of ports to use for
    # passive connections.  Decomment in case you're behind a NAT.
    # handler.masquerade_address = '151.25.42.11'
    # handler.passive_ports = range(60000, 65535)

    # Instantiate FTP server class and listen on 0.0.0.0:2121
    address = ('', 2121)
    server = FTPServer(address, handler)

    # set a limit for connections
    server.max_cons = 256
    server.max_cons_per_ip = 5

    # start ftp server
    server.serve_forever()

if __name__ == '__main__':
    main()

记录下 windows2003 r2 的序列号

2015年3月13日 没有评论

windows 2003 R2 Sp2 64位 企业版
MR78C-GF2CY-KC864-DTG74-VMT73

分类: 未分类 标签:

iptables nat

2015年3月3日 没有评论
#!/bin/bash
pro='tcp'
NAT_Host='172.16.1.2'
NAT_Port=80
Dst_Host='172.16.1.1'
Dst_Port=80
iptables -t nat -A PREROUTING  -m $pro -p $pro --dport $NAT_Port -j DNAT --to-destination $Dst_Host:$Dst_Port
iptables -t nat -A POSTROUTING -m $pro -p $pro --dport $Dst_Port -d $Dst_Host -j SNAT --to-source $NAT_Host
分类: Linux服务器 标签: