Centos-7安装zabbix

本例环境使用Centos7.3 64位

安装zabbix需要mysql的支持,下面是快速安装LNMP的方法(使用EZHTTP安装)

安装LNMP

首先创建一个目录存放下载文件:

[root@localhost ~]# mkdir /software
[root@localhost software]# cd /software/

安装wget工具:

[root@localhost software]# yum -y install wget

下载EZHTTP安装脚本:

[root@localhost software]# wget --no-check-certificate https://github.com/centos-bz/ezhttp/archive/master.zip?time=$(date +%s) -O ezhttp.zip

启动脚本:

[root@localhost software]# unzip ezhttp.zip
[root@localhost software]# cd ezhttp-master
[root@localhost ezhttp-master]# chmod +x start.sh
[root@localhost ezhttp-master]# ./start.sh

进去选择页面

除了数字选择项需要确认输入,其他的的按回车默认就行:

nginx 和 apache 都行,个人比较喜欢nginx
php版本5.5-7.1
mysql版本5.6

[root@localhost ezhttp-master]# ./start.sh
#############################################################################

You are welcome to use this script to deploy your linux,hope you like.
The script is written by Zhu Maohai.
If you have any question.
please visit http://devops.webres.wang/ezhttp/ and submit your issue.thank you.

############################################################################

1) LAMP LNMP LANMP Installation.
2) Some Useful Tools.
3) Upgrade Software
4) Exit.

please select: 1
you select LAMP LNMP LANMP Installation.
1) LNMP(Nginx MySQL PHP)
2) LAMP(Apache MySQL PHP)
3) LNAMP(Nginx Apache MySQL PHP)
4) back to main menu

please input the package you like to install: 1
#################### nginx setting ####################


1) nginx-1.8.0
2) tengine-2.1.0
3) openresty-1.9.7.3
4) custom_version
5) do_not_install

which nginx you do select(default do_not_install): 1
your selection: nginx-1.8.0
nginx-1.8.0 install location(default:/usr/local/nginx,leave blank for default): 
nginx-1.8.0 install location: /usr/local/nginx
the nginx-1.8.0 configure parameter is:
--prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=/software/ezhttp-master/soft/openssl-1.0.2h  --with-http_sub_module --with-http_stub_status_module --with-pcre --with-pcre=/software/ezhttp-master/soft/pcre-8.33 --with-zlib=/software/ezhttp-master/soft/zlib-1.2.8 --with-http_secure_link_module


Would you like to change it?[N/y](default n): 
you select no,configure parameter will not be changed.

Do you need to install nginx module?[N/y](default n): 
#################### mysql setting ####################


1) mysql-5.1.73
2) mysql-5.5.54
3) mysql-5.6.35
4) mysql-5.7.17 (need about 2GB RAM when building,try mysql-5.6 if failed)
5) libmysqlclient18
6) custom_version
7) do_not_install

which mysql you'd select(default do_not_install): 3
your selection: mysql-5.6.35
mysql-5.6.35 install location(default:/usr/local/mysql,leave blank for default): 
mysql-5.6.35 install location: /usr/local/mysql
mysql data location(default:/usr/local/mysql/data,leave blank for default): 
mysql-5.6.35 data location: /usr/local/mysql/data
mysql port number(default:3306,leave blank for default): 
mysql port number: 3306
mysql server root password (default:root,leave blank for default): 123456
mysql-5.6.35 root password: 123456
the mysql-5.6.35 configure parameter is:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/usr/local/mysql/etc -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DENABLED_LOCAL_INFILE=1 


Would you like to change it?[N/y](default n): 
you select no,configure parameter will not be changed.
#################### php setting ####################


1) php-5.2.17
2) php-5.3.29
3) php-5.4.43
4) php-5.5.27
5) php-5.6.15
6) php-7.1.0
7) custom_version
8) do_not_install

which php you'd select(default do_not_install): 6
your selection: php-7.1.0
php-7.1.0 install location(default:/usr/local/php,leave blank for default): 
php-7.1.0 install location: /usr/local/php
the php-7.1.0 configure parameter is:
--prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --enable-bcmath=shared --with-pdo_sqlite --with-gettext=shared --with-iconv --enable-ftp=shared --with-sqlite --with-sqlite3 --enable-mbstring=shared --enable-sockets=shared --enable-zip --enable-soap=shared --with-openssl --with-zlib --with-curl=shared --with-gd=shared --with-jpeg-dir --with-png-dir --with-freetype-dir --with-mcrypt=shared,/opt/ezhttp/libmcrypt-2.5.8 --with-mhash=shared,/opt/ezhttp/mhash-0.9.9.9 --enable-opcache --with-mysql=mysqlnd --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --without-pear --with-libdir=lib64 --disable-fileinfo


Would you like to change it?[N/y](default n): 
you select no,configure parameter will not be changed.
#################### PHP modules install ####################
php-7.1.0 version available modules:

#################### php_modules install ####################

1) fileinfo
2) php-gmp
3) php-swoole-1.7.20
4) do_not_install

please input one or more number between 1 and 4(default do_not_install)(ie.1 2 3): 
your selection do_not_install
#################### other_soft install ####################

1) memcached-1.4.24
2) pure-ftpd-1.0.41
3) phpMyAdmin-4.4.12-all-languages
4) redis-3.0.3
5) mongodb-linux-x86_64-2.4.9
6) phpRedisAdmin-1.1.0
7) memadmin-1.0.12
8) rockmongo-1.1.6-fix-auth
9) jdk1.7.0_79
10) jdk1.8.0_66
11) apache-tomcat-7.0.68
12) apache-tomcat-8.0.39
13) do_not_install

please input one or more number between 1 and 13(default do_not_install)(ie.1 2 3): 1 2 3 4 6 10 12
your selection memcached-1.4.24 pure-ftpd-1.0.41 phpMyAdmin-4.4.12-all-languages redis-3.0.3 phpRedisAdmin-1.1.0 jdk1.8.0_66 apache-tomcat-8.0.39
input memcached-1.4.24 location(default:/usr/local/memcached): 
memcached location: /usr/local/memcached
input pure-ftpd-1.0.41 location(default:/usr/local/pureftpd): 
pureftpd location: /usr/local/pureftpd
Would you like to install web user manager for pureftpd?[N/y](default n): 
you select not install web manager
input phpMyAdmin-4.4.12-all-languages location(default:/home/wwwroot/phpmyadmin): 
phpmyadmin location: /home/wwwroot/phpmyadmin
input redis-3.0.3 location(default:/usr/local/redis): 
redis location: /usr/local/redis
please input the max memory allowed for redis(ie.128M,512m,2G,4g): 128M
128M
input phpRedisAdmin-1.1.0 location(default:/home/wwwroot/redisadmin): 
phpRedisAdmin location: /home/wwwroot/redisadmin
input jdk1.8.0_66 location(default:/usr/local/jdk1.8.0_66): 
jdk8 location: /usr/local/jdk1.8.0_66
input apache-tomcat-8.0.39 location(default:/usr/local/tomcat8): 
tomcat8 location: /usr/local/tomcat8
#################### your choice overview ####################

Package: lnmp

*****Nginx Setting*****
Nginx: nginx-1.8.0
Nginx Location: /usr/local/nginx
Nginx Configure Parameter: --prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=/software/ezhttp-master/soft/openssl-1.0.2h  --with-http_sub_module --with-http_stub_status_module --with-pcre --with-pcre=/software/ezhttp-master/soft/pcre-8.33 --with-zlib=/software/ezhttp-master/soft/zlib-1.2.8 --with-http_secure_link_module
Nginx Modules: 


*****MySQL Setting*****
MySQL Server: mysql-5.6.35
MySQL Location: /usr/local/mysql
MySQL Data Location: /usr/local/mysql/data
MySQL Port Number: 3306
MySQL Root Password: 123456
MySQL Configure Parameter: -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/usr/local/mysql/etc -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DENABLED_LOCAL_INFILE=1 

*****PHP Setting*****
PHP: php-7.1.0
PHP Location: /usr/local/php
PHP Configure Parameter: --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --enable-bcmath=shared --with-pdo_sqlite --with-gettext=shared --with-iconv --enable-ftp=shared --with-sqlite --with-sqlite3 --enable-mbstring=shared --enable-sockets=shared --enable-zip --enable-soap=shared --with-openssl --with-zlib --with-curl=shared --with-gd=shared --with-jpeg-dir --with-png-dir --with-freetype-dir --with-mcrypt=shared,/opt/ezhttp/libmcrypt-2.5.8 --with-mhash=shared,/opt/ezhttp/mhash-0.9.9.9 --enable-opcache --with-mysql=mysqlnd --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --without-pear --with-libdir=lib64 --disable-fileinfo

*****Other Software Setting*****
Other Software:  memcached-1.4.24 pure-ftpd-1.0.41 phpMyAdmin-4.4.12-all-languages redis-3.0.3 phpRedisAdmin-1.1.0 jdk1.8.0_66 apache-tomcat-8.0.39
memcached location: /usr/local/memcached
pureftpd location: /usr/local/pureftpd
phpmyadmin_location: /home/wwwroot/phpmyadmin
redis_location: /usr/local/redis
phpRedisAdmin_location: /home/wwwroot/redisadmin
jdk8_location: /usr/local/jdk1.8.0_66
tomcat8_location: /usr/local/tomcat8
JAVA_HOME: /usr/local/jdk1.8.0_66

##############################################################

Are you ready to configure your Linux?[Y/n](default y):

安装过程等待即可:

..............................
..............................

安装成功:

start programs...
Starting nginx daemon: .
Starting MySQL.. SUCCESS! 
Warning: Using a password on the command line interface can be insecure.
Starting php-fpm  done
Starting memcached: 
Start pureftpd....  [OK] 
Starting Redis server...

使用EZHTTP安装成功后各服务已经打开,输入Linxu 机器IP 访问即可:

未分类

恭喜,安装成功了!

开始安装zabbix

配置源

Zabbix在CentOS基本源里不可获得,因此必须配置EPEL 和Zabbix 官方repository,因为需要一款名叫fping的软件(这款软件你下载源码编译安装貌似行不通!),然后其他的yum源将mysql全部识别为mariadb了,所以想yum安装mysql,请安装mysql社区版官方源,或者编译安装,上面的EZHTTP安装脚本就是编译安装

安装EPEL repository

[root@localhost software]# pwd
/software
[root@localhost software]# yum -y install epel-release

配置ZabbixZone package repository and GPG key

[root@localhost software]# rpm --import http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX
[root@localhost software]# rpm --import http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-A14FE591
[root@localhost software]# yum -y install fping
[root@localhost software]# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

安装Zabbix server and agent(agent是可选的)

安装Zabbix server and agent:(配置自己监控自己,所以安装了zabbix-agent)

yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent

可以上zabbix rpm包官网查看或下载相应包

http://repo.zabbix.com/

创建MySQL 数据库和用户

登录Mysql:

[root@localhost software]# mysql -uroot -p123456

创建一个数据库zabbix和数据库用户zabbix:

mysql> create database zabbix character set utf8;

mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';

mysql> flush privileges;

数据库导入zabbix template

看yum安装的zabbix-server-mysql-3.x.x 这个文件的版本是多少就改成多少

[root@localhost software]# zcat /usr/share/doc/zabbix-server-mysql-3.2.4/create.sql.gz |mysql -uzabbix -pzabbix -b zabbix

配置Zabbix server

vi /etc/zabbix/zabbix_server.conf

配置下面的几个参数
带#号的就去掉#号,并修改其值

ListenPort=10051
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/usr/local/mysql/data/mysql.sock
DBPort=3306

配置zabbix-agent

vi /etc/zabbix/zabbix_agentd.conf

配置zabbix server的ip

## Line 95 - Specify Zabbix server ##

Server=127.0.0.1

## Line 136 - Specify Zabbix server ##

ServerActive=127.0.0.1

## Line 147 - Specify Zabbix server Hostname or IP address

Hostname=127.0.0.1

修改PHP 设置

修改php.ini为zabbix 建议的设置
编辑文件 php.ini,

[root@localhost software]# vi /usr/local/php/etc/php.ini

设置下面的参数:

max_execution_time = 300

max_input_time = 300

memory_limit = 128M

post_max_size = 32M

upload_max_filesize = 2M

date.timezone = Asia/Shanghai

安装时可能缺少下面扩展,把下面内容添加到php.ini

extension=bcmath.so
extension=gettext.so
extension=sockets.so

安装扩展

[root@localhost ext]# cd /software/ezhttp-master/soft/php-7.1.0/ext
[root@localhost ext]# pwd
/software/ezhttp-master/soft/php-7.1.0/ext
[root@localhost ext]# cd sockets/
[root@localhost sockets]# /usr/local/php/bin/phpize
[root@localhost sockets]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@localhost sockets]# cd ..
[root@localhost ext]# cd bcmath/
[root@localhost bcmath]# /usr/local/php/bin/phpize
[root@localhost bcmath]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@localhost bcmath]# cd ..
[root@localhost ext]# cd gettext/
[root@localhost gettext]# /usr/local/php/bin/phpize
[root@localhost gettext]# ./configure --with-php-config=/usr/local/php/bin/php-config

使用下面命令可以看到有一个扩展存放的目录,我们需要的扩展模块在其中即安装成功

[root@localhost gettext]# make && make install

修改php-fpm运行的用户和组

[root@localhost software]# vi /usr/local/php/etc/php-fpm.d/www.conf
user = www
group = www

方法一:使用 apache 服务器

apache配置zabbix-web站点文件

[root@localhost etc]# cd /etc/httpd/

vi conf/httpd.conf
修改下面内容:

Listen 80

User www
Group wwww

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

vi conf.d/zabbix.conf
修改内容如下:

<IfModule mod_php5.c>
    php_value max_execution_time 300
    php_value memory_limit 128M
    php_value post_max_size 32M
    php_value upload_max_filesize 8M
    php_value max_input_time 300
    php_value always_populate_raw_post_data -1
    php_value date.timezone Asia/Shanghai
</IfModule>

然后重启apache、mysql、php、zabbix-server
浏览器输入ip/setup.php 即可进入zabbix初次web安装界面

方法二:使用 Nginx 服务器

配置zabbix-web站点文件

把zabbix程序文件拷贝到我们指定的目录,并修改属主和属组

[root@localhost software]# cp -r /usr/share/zabbix /var/www/
[root@localhost software]# chown -R www:www /var/www/zabbix
[root@localhost software]# chown -R www:www /etc/zabbix
[root@localhost software]# chown -R www:www /usr/share/zabbix
[root@localhost software]# chown -R www:www /usr/lib/zabbix
[root@localhost software]# chmod -R 755 /etc/zabbix/web

创建存放web站点配置文件的目录

[root@localhost ~]# cd /usr/local/nginx/conf/
[root@localhost conf]# mkdir conf.d/

配置nginx.conf,把新建的目录包含进去

[root@localhost conf]# vi nginx.conf

listen 80 default_server;      ===> 改为 listen 90 default_server;
root /home/wwwroot/;      ===> 改为 # root /home/wwwroot/;
include vhost/*.conf;    ===> 改为 include /usr/local/nginx/conf/conf.d/*.conf;

配置zabbix.conf(zabiix站点的配置文件)

[root@localhost conf]# cd conf.d/
[root@localhost conf.d]# vi zabbix.conf

zabbix.conf 内容如下:

    server {
        listen 80;
        server_name localhost;
        root /var/www/zabbix;
        index index.php index.html index.htm;
        access_log  logs/zabbix.access.log;
        error_log   logs/zabbix.error.log;

        location / {
            try_files $uri $uri/ /index.php?$args;
        }

        location ~ .*.(php)?$ {
            expires -1s;
            try_files $uri =404;
            fastcgi_split_path_info ^(.+.php)(/.+)$;
            include        fastcgi_params;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PHP_VALUE        open_basedir=$document_root:/tmp/:/proc/:/usr/share/zabbix/:/etc/zabbix/web/:/etc/zabbix/;
        }

    }

启动zabbix 和 各服务

启动zabbix-server 和zabbix-agent。并设置zabbix-server和zabbix-agent开机自动启动

systemctl start zabbix-server

systemctl start zabbix-agent

/etc/init.d/nginx restart

chkconfig nginx on

/etc/init.d/mysqld restart

chkconfig mysqld on

/etc/init.d/php-fpm restart

chkconfig php-fpm on

systemctl enable zabbix-server

systemctl enable zabbix-agent

修改Firewall 和SELinux 设置

开放zabbix端口10050 and 10051

firewall-cmd --permanent --add-port=10050/tcp

firewall-cmd --permanent --add-port=10051/tcp

重启firewall

systemctl restart firewalld

如果使用 SELinux, 运行以下命令使 Apache 可以和 Zabbix通信

setsebool -P httpd_can_connect_zabbix=1

如果是测试环境可以直接关闭防火墙和selinux

[root@localhost software]# systemctl stop firewalld
[root@localhost local]# chkconfig firewalld off

修改配置文件,禁用selinux

[root@localhost software]# setenforce 0
[root@localhost software]# vi /etc/selinux/config

SELINUX=disabled

输入ip/setup.php进入zabbix-web界面进行后续安装操作

未分类

确认状态都是ok

未分类

配置数据库信息(填写上面我们设置的数据库账户和密码:zabbix,zabbix,测试环境可以直接用root)

未分类

进入下一步,默认即可

未分类

如果出现下面错误

未分类

解决方法:

sed -i 's#cgi.fix_pathinfo=0#cgi.fix_pathinfo=1#' /usr/local/php/etc/php.ini
/etc/init.d/php-fpm restart

刷新浏览器, 一直下一步

登录,默认用户名: Admin , 默认密码:zabbix

未分类

使用php7.0版本初始化完成后页面有如下的报错:

未分类

这个是因为PHP 7.1.0类型强化,处理方法也很简单找到Zabbix WEB目录下include/func.inc.php文件,执行下面命令,并重启php服务:

sed -i ‘/$last = strtolower(substr($val, -1));/a$val = substr($val,0,-1);’ /var/www/zabbix/include/func.inc.php
/etc/init.d/php-fpm reload
然后刷新页面可以看到已经正常。

ok,初始化完毕。。。

解决图形中文乱码

未分类

这个问题是由于zabbix的web端没有中文字库,我们最需要把中文字库加上即可
解决办法如下
1.从windows下控制面板->字体->选择一种中文字库例如“楷体”

未分类

2.把它拷贝到zabbix的web端的fonts目录下例如:/var/www/html/zabbix/fonts,确认后缀为ttf

未分类

3.修改zabbix的web端/include/defines.inc.php
点击(此处)折叠或打开

//define('ZBX_FONT_NAME', 'graphfont');
define('ZBX_FONT_NAME', 'simkai');

//define('ZBX_GRAPH_FONT_NAME',     'graphfont'); // font file name
define('ZBX_GRAPH_FONT_NAME',       'simkai'); // font file name

其中simkai为字库名字,不包含ttf后缀
测试结果:

未分类

Zabbix通过SNMPv2监控DELL服务器的硬件信息

(一)zabbix监控DELL服务器

(1)简述

监控DELL服务器硬件一般有两种途径:

1、操作系统上安装OMSA,编写脚本调用omreport命令进行监控(需要在操作系统上安装比较麻烦);
2、使用iDRAC(Integrated Dell Remote Access Controller,是一款dell专门用于远程访问控制接口),可以不用在操作系统上安装OMSA,只需要在iDRAC上开启SNMP,zabbix通过SNMP进行监控。对于不支持OMSA的操作系统和要求不能安装额外软件的情况下,推荐使用SNMP监控,配置简单方便(推荐使用)。

(2)步骤

1、登陆iDRAC,直接在浏览器输入访问的ip即可

未分类

2、通过iDRAC开启snmp服务:iDRAC设置—>网络—>服务—>snmp代理,启用snmp并设置团体名(community),不推荐使用默认的public。建议所有服务器设置统一的团体名。

未分类

3、在zabbix_server或代理端通过snmpwalk(snmpwalk -v 2c -c public IP)查看是否能获取到数据。如果获取不到数据,查看失败的原因。

未分类

4、在zabbix官网下下载改监控的相应的模板(https://share.zabbix.com/cat-server-hardware/dell/dell-idrac-chinese) https://share.zabbix.com/
其他的模板都可以在这进行下载

未分类

5、把下载的模板导入到zabbix_server中。配置—>模板—>选择文件—>导入

未分类

6、添加监控服务器。配置—>主机—>创建主机,填写相关信息。

未分类

未分类

未分类

7、修改收集数据的时间,查看获取的数据

未分类

未分类

最后可以查看下监控项看是否有不支持的,不支持的查看原因进行优化。

实现Zabbix通过邮件发送图形报表

在使用Zabbix的过程中,我们通常会建立一些需要图形报表来汇总需要监控的Graph。
而下面的两个脚本,则是通过从Zabbix数据库中获取所有的图形数据,提供Zabbix的WEB接口将所有图形保存到本地,然后通过脚本以Email形式发送过来,作为每天的自动报表。

在本地创建/data/cscript 和 /data/graph 目录

save_graph.pl

#!/usr/bin/perl
use File::Path;
use DBI;
use Net::FTP;
#
#定义graph路径,判断graph目录是否存在,不存在则自动新建
my $path = '/data/graph';
if(-e $path) { rmtree($path); }
mkdir($path);
#
my $stime = `date +%Y%m%d`; chop($stime); $stime .= '1000';
if( length($stime) != 12 ) { print "Error get date"; exit; }
#
#指定截图图形的时间轴周期
my $period = 21600;    # 6 hours
#
#定义Web的登陆名及密码
my $login = 'admin';   # Zabbix Web User
my $pass = 'password'; # Zabbix Web User Password, must be URL Encoded
#
#定义FTP账号密码
my $ftp_site = 'ftp.corp.intra';
my $ftp_user_name = 'zabbix';
my $ftp_password = 'zabbix';
#
#定义cookie的路径
my $cook = "/tmp/cookie";
#
#指定链接数据库
my $dsn = 'DBI:mysql:zabbix:localhost'; # Connect MySQL DB "zabbix" on localhost
my $db_user_name = 'zabbix'; # MySQL DB user
my $db_password = 'dbpassword'; # MySQL DB user password
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
#
#查询存在哪些screen
my $sth = $dbh->prepare(qq{select a.name,a.hsize,a.vsize, b.resourceid, b.width, b.height,b.x,b.y from screens a,screens_items as b where a.screenid=b.screenid and a.templateid<=>NULL order by a.name});
$sth->execute();
my %screens;
#
# Get all graphs by using curl
while (my ($name,$hsize,$vsize, $id,$width,$height,$x,$y) = $sth->fetchrow_array())
{
#
#长度大于2位的是graph,小于2位的表示是MAP
if(length($id) > 2)
{
#print "$id => $idsn";
#
#定义导出的文件路径及文件名
my $p = "$path/$name.$hsize.$vsize.$y.$x.$id.png";
#
#获取cookie,免除访问实际数据时需要认证
my $strcomm  = `curl  -D $cook -b $cook -d "request=&name=$login&password=$pass&autologin=1&enter=Sign+in"  localhost/zabbix/index.php`;
#
#获取图形文件
$strcomm  = `curl  -b $cook -F  "graphid=$id" -F "period=$period" -F "stime=$stime" -F "width=$width" -F "height=$height" localhost/zabbix/chart2.php > $p`;
}
#
#否则,小于2位的表示是MAP
else {
my $p = "$path/map.$name.$id.png";
my $strcomm  = `curl  -b $cook -F  "sysmapid=$id" localhost/zabbix/map.php > $p`;

#
#ftp到服务器上
my $ftp = Net::FTP->new
(
$FTP_Site,
Timeout => 30
) or die "could not connect.n";
$ftp->login($ftp_user_name,$ftp_password) or die "Could not login.n";
$ftp->binary,$ftp->message;
#$remotefile = "Lync.png";
#$localfile = "$path/$p";
$ftp->put($p) or die "put $remotefile fail.n",$ftp->message;
$ftp->quit;
}
}
exit ;

email-pic.py

#! /usr/bin/env python
import os
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
# 定义函数 _sendmail
def _sendmail(smtp_server,port,account,password,str_from,list_to,msg):
    smtp = smtplib.SMTP(smtp_server,port)
    smtp.ehlo()
    smtp.starttls()
    smtp.ehlo()
#    smtp.login(account, password)
    smtp.sendmail(str_from, list_to,msg)
    smtp.close()

# 定义函数 _get_pictures
def _get_pictures(image_dir):
#建立空列表Pictures
    pictures = []
#os.listdir 返回指定目录下的所有文件和目录名
    for f in os.listdir(image_dir):
# append 是在列表最后增加内容,这里是将list出来的信息f增加到Picture列表中
        pictures.append(f)
    return pictures
# 定义函数 _create_msg
def _create_msg(screen_name,screens,image_dir,str_from,list_to):
    msgRoot = MIMEMultipart('related')

# 定义邮件主题
    msgRoot['Subject'] = 'Zabbix Screen Report: %s' % screen_name

#定义发件人、收件人
    msgRoot['From'] = str_from
    msgRoot['To'] = ",".join(list_to)
    msgRoot.preamble = 'This is a multi-part message in MIME format.'
    # Encapsulate the plain and HTML versions of the message body in an
    # 'alternative' part, so message agents can decide which they want to display.
    msgAlternative = MIMEMultipart('alternative')
    msgRoot.attach(msgAlternative)
# 定义邮件正文内容
    msgText = MIMEText('This is the alternative plain text message.')
    msgAlternative.attach(msgText)
    contents = ""
# tuple 元组 定义hsize,vsize变量  
    contents += "<h1>Screen %s</h1><br>" % screen_name
    _,hsize,vsize,_,_,_,_,= tuple(screens[0].split('.'))

    contents +="<table>"

# sorted()是产生一个新的列表并排序   
    screens = sorted(screens)
    y= -1
    for f in screens:
# 将文件名以为.分割点
        items = f.split('.')

# 原文件名格式:$path/$name.$hsize.$vsize.$y.$x.$id.png
# 经过切片后取 image_Y,Image_x,image_ID
        # tuple 元组
        _,_,_,image_y,image_x,image_id,_ = tuple(items)
        #定义邮件中的图片文件名:image-screen_name-image_id
        image_name = "image-%s-%s" % (screen_name, image_id)
        #fp = open("test.txt",w)     直接打开一个文件,如果文件不存在则创建文件
        #关于open 模式:
        #w     以写方式打开,
        #a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
        #r+     以读写模式打开
        #w+     以读写模式打开 (参见 w )
        #a+     以读写模式打开 (参见 a )
        #rb     以二进制读模式打开
        #wb     以二进制写模式打开 (参见 w )
        #ab     以二进制追加模式打开 (参见 a )
        #rb+    以二进制读写模式打开 (参见 r+ )
        #wb+    以二进制读写模式打开 (参见 w+ )
        #ab+    以二进制读写模式打开 (参见 a+ )
        fp = open('%s/%s' % (image_dir,f), 'rb')

        #fp.read([size])                     #size为读取的长度,以byte为单位
        msgImage = MIMEImage(fp.read())

        #fp.close()  #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。 
        #如果一个文件在关闭后还对其进行操作会产生ValueError
        fp.close()

        msgImage.add_header('Content-ID', "<%s>" % image_name)
        msgRoot.attach(msgImage)
#定义循环
        if y != image_y:
            if y!= -1:
                contents +="</tr>"
            y = image_y
            contents +="<tr>"

# 定义td中嵌套图片文件
        contents +="<td><img src='cid:%s'></td>" % image_name

# table结束   
    contents += "</table>"
# 定义邮件格式为HTML
    msgText = MIMEText(contents, 'html')

    msgAlternative.attach(msgText)
#    msgRoot.attach(msgAlternative)
    return msgRoot
# Create the root message and fill in the from, to, and subject headers
def main(str_from,list_to,image_dir):
    pictures = _get_pictures(image_dir)
# 定义screen name,如:  Citrix_APP_Server_Loading
    for screen_name in list(set([x.split('.')[0] for x in pictures ])):
# startswith 判断字串开始
# screens 是一组 相同前缀的文件,如: screens ['Zabbix_server.2.2.1.1.525.png', 'Zabbix_server.2.2.1.0.524.png']
        screens = [x for x in pictures if x.startswith(str(screen_name) + '.') ]

        msgRoot = _create_msg(screen_name,screens,image_dir,str_from,list_to)

#定义邮件服务器地址、端口
        _sendmail(smtp_server,port,'','',str_from,list_to,msgRoot.as_string())
# 定义发送邮件信息,发件人,收件人,图片目录
if __name__ == '__main__':
   smtp_server = '10.210.1.16'
   port = 25
   str_from = '[email protected]'
   list_to = [
                "[email protected]"
             ]
   image_dir = '/data/graph/maps'
   main(str_from,list_to,image_dir)

源代码参考地址:http://heylinux.com/archives/2081.html

centos下使用yum 安装percona xtrabackup

配置percona的yum仓库

一、先安装依赖

yum install perl-DBI

yum install perl-DBD-MySQL

yum install perl-Time-HiRes

yum install perl-IO-Socket-SSL

二、配置yum源

方法1、自动安装percona的yum仓库(以下分别为x86_64和i386平台)

#rpm -ivh http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
#rpm -ivh http://www.percona.com/redir/downloads/percona-release/percona-release-0.0-1.i386.rpm

方法2、手动yum仓库

创建文件/etc/yum.repos.d/Percona.repo内容如下:

[percona]
name = CentOS $releasever - Percona
baseurl=http://repo.percona.com/centos/$releasever/os/$basearch/
enabled = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-percona
gpgcheck = 1

获取和保存key

#wget http://www.percona.com/redir/downloads/percona-release/RPM-GPG-KEY-percona

#cp RPM-GPG-KEY-percona /etc/pki/rpm-gpg/RPM-GPG-KEY-percona

安装 percona xtrabackup
下面我们就可以安装percona一系列工具了:

安装xtrabackup    
#yum -y install percona-xtrabackup    
安装toolkit
#yum -y install percona-toolkit

wordpress删除文章时自动删除文章图片

wordpress删除文章时候文章的图片和略缩图源文件并不会从服务器删除,对于强迫症来说这太难受了,去网上搜索了一下,有相关的教程,下面的代码放到主题的functions.php文件中就可以

/* 删除文章时删除图片附件 */ 
function delete_post_and_attachments($post_ID) { 
 global $wpdb; 
 //删除特色图片 
 $thumbnails = $wpdb->get_results( "SELECT * FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND post_id = $post_ID" ); 
 foreach ( $thumbnails as $thumbnail ) { 
 wp_delete_attachment( $thumbnail->meta_value, true ); 
 } 
 //删除图片附件 
 $attachments = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_parent = $post_ID AND post_type = 'attachment'" ); 
 foreach ( $attachments as $attachment ) { 
 wp_delete_attachment( $attachment->ID, true ); 
 } 
 $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key = '_thumbnail_id' AND post_id = $post_ID" ); 
} 
add_action('before_delete_post', 'delete_post_and_attachments'); 
/* 删除文章时删除图片附件over */

ps:这些小功能是我在建站过程中的一些需求,所以记录下来,方便下次使用

wordpress利用插件一键启用网站维护模式

在网站的建设运营过程中,我们也会遇到一些原因需求,对网站进行改版和升级,这时访问不了,会给用户带来很不好的体验,那么我们怎么解决这一问题,wordpress的有福了,只需要一个插件就可以轻松搞定。

是不是听着很不错,下面介绍这款插件的详细教程

1、插件名称 Maintenance Mode

在我们进入博客后台之后通过插件——已安装插件——安装插件的步骤,在搜索框中搜索 Maintenance Mode这个插件,找到对应的进行安装并启用,启用之后在设置中可以找到。

未分类

2、对插件进行设置

主要是对于插件功能的熟悉,勾选一键激活之后,模式选择是默认的,最重要的是文本编辑框了,里面编辑的内容就是你要展示 的内容,这个发挥你的想象,最后别忘了下面的保存选项

未分类

3、启用设置之后的效果图

我就做了这简单的页面,还算可以吧!就把你自己观点告诉用户。

未分类

4、站长工具查询状态码

我们通过访问这个网站,返回的是503,服务器错误,也就是进入维护中了。

未分类

WordPress配合Debian VPS 使用sendmail发邮件

WordPress自带了一些邮件功能,但是一直没能正常使用,折腾了一下,顺便做个记录。起初以为厂商禁了25端口,后面发现并没有。本文使用的是Debian系统,涉及iptables,DNS,sendmail,PHP等内容。

0. 开启相关端口 25

25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务器所开放,主要用于发送邮件。如过不需要作为邮件服务器,建议关闭25端口,防止被恶意利用。有些服务器厂商会限制25端口,可以工单联系开通。Debian不会自动保存iptables改动,修改iptables端口的方法有很多,我使用的是修改iptables.up.rules的方法配合/etc/network/if-pre-up.d/iptables(内容如下)

#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

平时修改iptables直接修改/etc/iptables.up.rules,可以自己使用代码生效,也可以重启自动生效。
/etc/iptables.up.rules里添加

-I INPUT -p tcp -m tcp --dport 25 -j ACCEPT

保存生效

> iptables-restore < /etc/iptables.up.rules

查看当前iptables规则

> iptables-save

1. 配置dns

需要到域名DNS管理那里设置DNS解析,如果是第三方服务如百度,cloudflare就到相应的设置。
添加2条解析

type    name    value
A   mail    xx.xx.xx.xx
AAAA    mail    xxx:xxx:xxx:xxx

A是IPv4,AAAA是IPv6,分别指向服务器的相应ip地址。为什么要两个,因为国内的邮箱如QQ,IPv4就可以了,但是Gmail这样的需要IPv6。

2. 配置dns反向解析

DNS是用来把IP映射成域名,让用户可以用google.com来访问而不是IP,那么Reverse DNS(反向域名解析)就是反过来,将域名映射成IP。因为多数垃圾邮件发送者使用动态分配或者没有注册域名的IP地址来发送垃圾邮件,以逃避追踪,使用了域名反向解析后,就可以大大降低垃圾邮件的数量。不设置的话会被拦截、拒绝,出现如下提示

----- Transcript of session follows -----
... while talking to gmail-smtp-in.l.google.com.:
>>> DATA
<<< 550-5.7.1 [xxx:xxx:xxx:xxx:xxx:xxx:xxx:xxx] Our system has detected that
<<< 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR
<<< 550-5.7.1 records and authentication. Please review
<<< 550-5.7.1  https://support.google.com/mail/?p=IPv6AuthError for more information
<<< 550 5.7.1 . m6si6838178pfj.586 - gsmtp
554 5.0.0 Service unavailable

设置Reverse DNS需要到VPS提供商那里设置,如: vultr后台 – server – 某一台服务器 – setting – Reverse DNS
添加IPv4/IPv6 2条Reverse DNS记录

IP Address  Reverse DNS
xx.xx.xx.xx mail.xxx.com
xxx:xxx:xxx:xxx mail.xxx.com

3. 设置hostname

设置服务器的hostname和DNS需要解析的域名一致如mail.xxx.com

> vi /etc/hostname
#立即生效
> hostname -F /etc/hostname

4. 安装sendmail

sendmail是一种邮件传送代理(MTA,Mail Transport Agent)服务器,也可以用其他的代替。

> apt-get install sendmail

安装过程中有重要提示:
To enable sendmail to use STARTTLS, you need to:
1) Add this line to /etc/mail/sendmail.mc and optionally
to /etc/mail/submit.mc:
include(`/etc/mail/tls/starttls.m4')dnl
2) Run sendmailconfig
3) Restart sendmail
根据提示,需要
1) /etc/mail/sendmail.mc和/etc/mail/submit.mc,添加下面include的那一行
include(`/etc/mail/tls/starttls.m4')dnl
并且/etc/mail/sendmail.mc在DAEMON_OPTIONS改成
DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=0.0.0.0')dnl
2)执行 > sendmailconfig
3)执行 > service sendmail restart
查询是否正常运行服务
> service sendmail status

5. 安装MAILUTLS

mail 是用户使用客户端(类似foxmail)负责向MTA 撰写 发送邮件,要使用mail来发送邮件,需要安装mailutils。

> apt-get install mailutils

简单的命令来测试发送邮件

> echo "Hello, Water" | mail -s "Water's Greeting" [email protected]

意思是将内容为Hello,Water,主题为Water’s Greeting的email发送到指定的邮箱。
tips:这里测试了几次,刚开始QQ邮箱成功,但是到了垃圾箱,Gmail失败(原因是DNS反向解析没有配置),配置DNS反向解析后,QQ邮箱顺利收件,Gmail收件至垃圾箱,估计是因为内容太简陋被扔到了 垃圾箱。

6. 让PHP支持mail()函数

需要修改php.ini里面的sendmail_path,如何找到php.ini,可以使用 phpinfo.php查看,或者探针,这类应用一般在一键脚本都会携带,如没有可以上传到web目录即可。

Configuration File (php.ini) Path   /usr/local/php/etc
Loaded Configuration File   /usr/local/php/etc/php.ini

php.ini里面的sendmail_path修改为:

sendmail_path = /usr/sbin/sendmail -t -i

重启生效

> service php-fpm restart

如不确定是否修改成功,可继续到phpinfo.php中查看

sendmail_path   /usr/sbin/sendmail -t -i

7. 安装wordpress wp-mail-smtp 插件

这个插件可以配置第三方邮件比如使用QQ邮箱账号密码代发,这里使用原生mail()发送,毕竟搭建了邮件服务器

1.设置邮件地址如:[email protected]
2.设置用户名如:water
3.勾选使用php mail()函数
4.点击测试发邮件。

注意只能测试发送的过程,如果没开25端口,会提示端口连接失败,如果是mail()函数不支持也会提示。如果邮件被拒绝(或其他原因没收到,垃圾箱也没有),是不会提示的,需要到服务器 /var/mail/www 来查看日志 ,www是用户名。

8. 其他

  • 其他并不需要做什么设置,插件已经自动配置好了用户名和邮箱,目前是有评论待审和管理员登录时(由于安装了安全管理插件Wordfence)就有邮件通知啦。其他邮件功能还有待研究。
  • 这里只是配置了发邮件的服务和功能,收件的还没有弄,小域名邮箱,应该没什么用处吧,其他的联系就由Gmail来解决。
  • 邮件服务域名建议不要使用cdn之类的使用DNS服务商的IP来隐藏IP,否则会导致DNS和DNS反向解析的IP对应不上。

Docker安装配置WordPress

本站使用WordPress搭建,之前一直使用Linode $10美刀一个月的服务,机房选择在JP,但是感觉速度不行,在国内链接的响应速度基本都在200-300ms之间,前段时间发现搬瓦工的速度还可以,而且按年付费价格比Linode便宜,所以用了好一段时间来折腾网站迁移的工作。

之前在Linode,网站直接搭建在主机上,上面搭建的服务还很多,迁移非常的困难,于是在新站点服务全面使用基于Docker配置,方便以后迁移。

本站迁移中,使用了两个Docker镜像,官方的WordPress和MariaDB镜像。

安装MariaDB

下载安装最新版的MariaDB镜像

docker pull mariadb

创建一个外部目录/docker/mariadb/var/lib/mysql来存放MariaDB数据文件

mkdir -p /docker/mariadb/var/lib/mysql/

创建并运行MariaDB容器,把本地数据目录映射到容器中的/var/lib/mysql目录,并把3306端口映射到主机地址的3306端口,要注意使用-e MYSQL_ROOT_PASSWORD来指定MariaDB root用户初始密码

docker run --name mariadb -p 3306:3306 -v /docker/mariadb/var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=XXXXXXXXXX -d mariadb

登入MariaDB容器环境

docker exec -it mariadb bash
mysql -u root -p

创建数据库和数据库维护用户

create database wordpress character set utf8 collate utf8_general_ci;
create user wordpress_user identified by 'XXXXXXXXX';
grant all privileges on wordpress.* to wordpress_user;
flush privileges;

安装WordPress

下载最新版的WordPress镜像安装

docker pull wordpress

创建并运行Docker容器环境,官方的WordPress镜像是基于Ubuntu+Apache+MySQL的,镜像里面使用的是80端口,因为主机上安装了nginx,代理很多服务,所以把容器里面的80端口映射到主机的8081端口,使用–link mariadb:mysql指定使用的MySQL为已安装的MariaDB容器

docker run --name wordpress -p 8081:80 --link mariadb:mysql -d wordpress

这时候通过浏览器打开地址ip:8081即可按照提示安装WordPress了。

使用nginx反向代理

本机上安装了nginx,配置了https给很多服务使用,所以这里也把WordPress的地址通过用nginx反向代理实现https访问。

在/etc/nginx/conf.d/目录下创建一个新的配置文件

server {
    listen 80;
    server_name liangxiaorui.com www.liangxiaorui.com;
    return 301  https://$server_name$request_uri;
}

server {
  listen       443 ssl;
  server_name liangxiaorui.com www.liangxiaorui.com;
  ssl_certificate /path/to/cert.pem;
  ssl_certificate_key /path/to/key.pem;
  keepalive_timeout 70; 

  error_log /var/log/nginx/liangxiaorui.com.log error; 

  location  / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8081; 
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

这里使用proxy_pass反向代理到容器的8081端口实现https访问。这里需要注意的是,一定要加上

proxy_set_header X-Forwarded-Proto $scheme;

因为外部nginx使用的是https,容器里面的Apache使用的是http,添加这句话就是为了识别用户实际发出的是https协议还是http协议,之前没加,导致一直出现127.0.0.1重定向错误。这也是迁移过程中遇到的一个小问题之一。

配置完成之后,就可以通过https访问站点了

未分类

wordpress IP验证不当漏洞修复

wordpress /wp-includes/http.php文件中的wp_http_validate_url函数对输入IP验证不当,导致黑客可构造类似于012.10.10.10这样的畸形IP绕过验证,进行SSRF。

解决方案:

在网站目录中找到这个wp-includes/http.php文件,编辑http.php

查找

$same_host = strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] );

替换成

if ( isset( $parsed_home['host'] ) ) { $same_host = ( strtolower( $parsed_home['host'] ) === strtolower( $parsed_url['host'] ) || 'localhost' === strtolower( $parsed_url['host'] ) ); } else { $same_host = false; };

查找

if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0]

改成

if ( 127 === $parts[0] || 10 === $parts[0] || 0 === $parts[0] || 0 === $parts[0]

最后保存退出即可修复

Wireshark抓包软件简单用法(协议分析/数据分析)

目前抓包软件比较多,目前我们用的最多的是wireshart和linux下的tcpdump,其中tcpdump不直观,但可以抓包保存为文件以后使用wireshark进行分析。这里简单记录下wireshark的使用。

说明:
1,抓包需要对TCP/IP协议栈有一定的了解,如果不清楚这块,还是需要先梳理网络知识以及TCP/IP协议栈。
2,wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。
如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wireshark.

一、软件界面介绍

首先了解下界面:

未分类

上图简单说明

(1),主菜单

用于控制整个软件使用,捕获动作、搜索、视图如何显示、过滤规则、拆分、统计等等。

(2),常用按钮

常用按钮从左到右的功能依次是(注意不同版本不一样,大同小异):

1、新捕获抓包。
2,停止捕获抓包。
3,重新开始当前捕获。
4,设置捕获接口,以及捕获文件格式、日志文件自动生成。
5,打开抓包文件。可以打开之前抓包保存后的文件。不仅可以打开wireshark软件保存的文件,也可以打开tcpdump使用-w参数保存的文件。
6、保存文件。把本次抓包或者分析的结果进行保存。
7,关闭打开的文件。文件被关闭后,就会切换到初始界面。
8、重载抓包文件。

(3)小技巧:

软件最后一个抓取的单个数据包没有被格式化的,我们一般不将其显示;时间显示一般会根据实际需要进行显示,到视图那里设置。

二、如何使用wireshark抓包分析

1、设置数据抓取选项。 通过捕获接口指定哪个网卡,开始抓包,这里会抓取所有的包。

期间过滤器那里可以指定要抓取指定协议的数据包,比如我们可以填写http、https、tcp、arp等

2、通过捕获接口指定哪个网卡,设置过滤规则,比如这里指定本地网卡,抓取80端口的包

未分类

抓取效果如下:

未分类

3、使用显示过滤器

很多时候抓的包都不是需要的,我们可以使用过滤器捕获自己需要的包。显示过滤器应用于捕获文件,用来告诉wireshark只显示那些符合过滤条件的数据包。他可以用来过滤不想看到的数据包,但是不会把数据删除。如果想恢复原状,只要把过滤条件删除即可。比如我们这里只抓baidu.com的包:

点击表达式,生成规则,进行过滤。条件选取完以后会声场需要的过滤器指令,可以通过显示过滤器那里直接使用。

未分类

表达式对话框分左中右三部分。左边为可以使用的所有协议域。右边为和协议域相关的条件值。中间为协议域与条件值之间的关系。过滤器表达式对于初学者很有用。如上图,我们创建的表达式的作用是,只显示http协议包中包含关键词“baidu.com”的所有数据包。

字段说明:
这个列表中展示了所有支持的协议。点击前面的三角标志后,可以列出本协议的可过滤字段。当选中“Field name”列表中的任何一项,只需要输入你想要的协议域,就会自动定位到相应的协议域选项。

关系说明:
is present 如果选择的协议域存在,则显示相关数据包。
contains 判断一个协议,字段或者分片包含一个值
matches 判断一个协议或者字符串匹配一个给定的Perl表达式。

值说明:
此处输入合适的值。如果选择的协议域和这个值满足Relation中指定的关系,则显示相关数据包。

预定义值说明:
有些协议域包含了预先定义的值,有点类似于c语言中的枚举类型。如果你选择的协议域包含这样的值,你可以在这个列表中选择。

如果你熟悉了这个规则之后你就会发现手动输入表达式更有效率。当时手动在filter文本框中输入表达时,如果输入的语法有问题,文本框的背景色会变成红色。这时候,你可以继续输入或者修改,知道文本框中的表达式正确后,文本框的背景色又会变成绿色

参考资料:

wireshark怎么抓包、wireshark抓包详细图文教程: https://blog.csdn.net/holandstone/article/details/47026213
网络抓包工具 wireshark 入门教程:https://www.cnblogs.com/52php/p/6262956.html