LVS的持久连接和awk/sed/grep的学习笔记

一、LVS持久连接的模式

1、PPC(persistent port connection)

ipvsadm -A|E 192.168.10.1:80 -p 600

定义VIP为192.168.10.1director的80端口为持久连接,也就是只把web服务加入集群服务,可以通过改变端口实现不同服务的持久连接且把不同服务加入集群服务

2、PCC(persistent client connection)

ipvsadm -A|E 192.168.10.1:0 -p 600

定义VIP为192.168.10.1 director的所有端口为持久连接,也就是把该VIP上的所有服务加入集群服务

3、PNMPP

# iptables -t mangle -A PREROUTING -d $VIP -p tcp --dport $ClusterPORT -i $INCARD -j MARK --set-mark 10

ipvsadm -A --f 10 -s rr

通过iptables给不同服务做MARK标记,把不同服务定义为同一组,这样再通过ipvsadm的-f选项来实现对同一组服务的持久连接,且把它们加入集群服务

二、AWK的学习笔记

awk是通过对目标文件进行处理,处理完了之后输出报告。对文件的处理过程是以行为单位的,即逐行处理,然后对每行的字段进行分割,通过模式匹配后进行处理最后形成报告。

1、AWK命令格式

awk [options] ‘script‘ file1 file2, ...

awk [options] ‘pattern { action }‘ file1 file2, ...

2、[options]

-F : 用来指定分隔符,awk默认是以空格为字段分割符的,cut默认是以tab为字段分割符的

cut -d‘‘ -f1 -d 指定分隔符 -f选择分割后的字段

-v : 用来自定义变量

awk -v a="hai lang" ‘BEGIN{printf a}

注:变量引用不需要$

也可以通过BEGIN{}语句实现自定义变量

awk ‘BEGIN{a="hai lang" ; printf a}‘

注:语句之间需要用";"隔开

3、awk中的内置变量

FS(filed separator)    它是用来对读取文本,所使用的字段分隔符

RS(record separator)    它是用来对读取文本,所使用的行分隔符

OFS(outfile filed separator)   它是用来对,进过处理后的文本,输出字段分隔符

ORS(outfile row separator)   它是用来对,进行处理后的文本,输出行分隔符

NR(number of record) awk会对多个文件进行处理,而NR显示目前处理的行号(统计所有文

件的行号,该行号即是相对于所有文件的行号)

NF(number of filed)    通过NF可以显示当前行的总字段数,$NF显示最后一个字段

FNR     awk会对多个文件处理,但是FNR只显示,当前正在处理的文件的行号

4、print和printf

它们都是输出函数,都要匹配一定的格式,print默认换行的

%s 以字符串格式输出

%d 以整形格式输出

%f 以浮点型格式输出

N  确定输出字符的长度

-  左对齐输出

‘{printf  "%-15s %d\n",$1,$3}‘

$1以字符串的格式输出,共输出15个字符串,且是左对齐,不足的字符以空代替,多的不显示

$3以整型输出

$1和$3以enter作为分行符

5、[pattern]

pattern用来匹配在文本中的内容,也就是进行过滤合适的文本

1、Regexp: 正则表达式,格式为/regular expression/

2、expresssion: 表达式,其值非0或为非空字符时满足条件

x < y  | x <= y  | x > y  |  x >= y |   x == y  |  x != y | x ~ y |   x !~ y

3、Ranges: 指定的匹配范围,格式为pat1,pat2

4、BEGIN/END:特殊模式,仅在awk命令执行前运行一次或结束前运行一次

通过正则表达式,字符运算符,数字运算符,布尔运算符等,进行模式匹配达到过滤的效果,最后对匹配到的结果进行处理。

6、[action]

对匹配到的文本,进一步采取的操作

------------------

if-else

-----------------

语法:if (condition) {then-body} else {[ else-body ]}

awk -F: ‘{if ($1=="root") print $1, "Admin"; else print $1, "Common User"}‘ /etc/passwd

先判断每行的第一个字段是不是root,如果是root则打印该行第一个字段,并且标记为admin

如果不是root也打印该行第一个字段,并且标记为common user

awk -F: ‘{if ($1=="root") printf "%-15s: %s\n", $1,"Admin"; else printf "%-15s: %s\n", $1, "Common User"}‘ /etc/passwd

和上面一样只是改变了输出格式,如果只有一个if else可以不加{}

awk -F: -v sum=0 ‘{if ($3>=500) sum++}END{print sum}‘ /etc/passwd

判断每一行的第三个字段,如果大于等于500,就把sum变量加一,END是在处理完所有行,要退出之前

执行打印sum的统计值

----------------

while

----------------

语法: while (condition){statement1; statment2; ...}

awk -F: ‘{i=1;while (i<=3) {print $i;i++}}‘ /etc/passwd

while是对每一行的每一个字段进行循环,也就是输出每一行的前3个字段

awk -F: ‘{i=1;while (i<=NF) { if (length($i)>=4) {print $i}; i++ }}‘ /etc/passwd

while (i<=NF) 其中NF是字段总数,也就是对每一行的所有字段进行循环

length是一个内置函数,它可以判断出每一行每一个字段的长度

if就是判断字段长度大于等于4的字段,然后把它们输出

总结就是:找出每一行大于等于4的字段

----------

do-while

----------

语法: do {statement1, statement2, ...} while (condition)

awk -F: ‘{i=1;do {print $i;i++}while(i<=3)}‘ /etc/passwd

和while区别就是,在执行循环之前先执行一次动作

-------

for

--------

语法: for ( variable assignment; condition; iteration process) { statement1, statement2, ...}

awk -F: ‘{for(i=1;i<=3;i++) print $i}‘ /etc/passwd

输出每一行的前3个字段

awk -F: ‘{for(i=1;i<=NF;i++) { if (length($i)>=4) {print $i}}}‘ /etc/passwd

输出每一行大于4个长度的字段

for循环还可以用来遍历数组元素:

语法: for (i in array) {statement1, statement2, ...}

awk -F: ‘$NF!~/^$/{BASH[$NF]++}END{for(A in BASH){printf "%15s:%i\n",A,BASH[A]}}‘ /etc/passwd

-------

case

-------

语法:switch (expression) { case VALUE or /REGEXP/: statement1, statement2,... default: statement1, ...}

-------------------------

break 和 continue

------------------------

常用于循环或case语句中

--------

next

--------

提前结束对本行文本的处理,并接着处理下一行;例如,下面的命令将显示其ID号为奇数的用户:

awk -F: ‘{if($3%2==0) next;print $1,$3}‘ /etc/passwd

awk ‘{counts[$1]++}; END {for(url in counts) print counts[url], url}‘ /var/log/httpd/access_log

counts[$1]++

获取access_log日志中的第一个字段的值,把它作为counts数组的下标,++的意思是如果在对access_log文档中再次出现相同的字段,就对counts[$1]自动加1

END 用for遍历counts数组,最后通过print函数把相同字段的值和它在access_log文本中出现的次数输出

7、可以使用 awk -f 调用调用awk脚本

也可以直接在文本中加入#!/bin/awk -f 做声明

给该脚本执行权限,通过awk scripts file 来执行

系统连接状态篇:

1.查看TCP连接状态

netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn

netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}’ 或

netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}’

netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"t",arr[k]}’

netstat -n |awk ‘/^tcp/ {print $NF}’|sort|uniq -c|sort -rn

netstat -ant | awk ‘{print $NF}’ | grep -v ‘[a-z]‘ | sort | uniq -c

2.查找请求数请20个IP(常用于查找攻来源):

netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20

netstat -ant |awk ‘/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}’ |sort -rn|head -n20

3.用tcpdump嗅探80端口的访问看看谁最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." ‘{print $1"."$2"."$3"."$4}’ | sort | uniq -c | sort -nr |head -20

4.查找较多time_wait连接

netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20

5.找查较多的SYN连接

netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more

6.根据端口列进程

netstat -ntlp | grep 80 | awk ‘{print $7}’ | cut -d/ -f1

网站日志分析篇1(Apache):

1.获得访问前10位的ip地址

cat access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -10

cat access.log|awk ‘{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}’

2.访问次数最多的文件或页面,取前20

cat access.log|awk ‘{print $11}’|sort|uniq -c|sort -nr|head -20

3.列出传输最大的几个exe文件(分析下载站的时候常用)

cat access.log |awk ‘($7~/.exe/){print $10 " " $1 " " $4 " " $7}’|sort -nr|head -20

4.列出输出大于200000byte(约200kb)的exe文件以及对应文件发生次数

cat access.log |awk ‘($10 > 200000 && $7~/.exe/){print $7}’|sort -n|uniq -c|sort -nr|head -100

5.如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面

cat access.log |awk ‘($7~/.php/){print $NF " " $1 " " $4 " " $7}’|sort -nr|head -100

6.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数

cat access.log |awk ‘($NF > 60 && $7~/.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100

7.列出传输时间超过 30 秒的文件

cat access.log |awk ‘($NF > 30){print $7}’|sort -n|uniq -c|sort -nr|head -20

8.统计网站流量(G)

cat access.log |awk ‘{sum+=$10} END {print sum/1024/1024/1024}’

9.统计404的连接

awk ‘($9 ~/404/)’ access.log | awk ‘{print $9,$7}’ | sort

10. 统计http status

cat access.log |awk ‘{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}‘

cat access.log |awk ‘{print $9}‘|sort|uniq -c|sort -rn

10.蜘蛛分析,查看是哪些蜘蛛在抓取内容。

/usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E ‘bot|crawler|slurp|spider‘

网站日分析2(Squid篇)按域统计流量

zcat squid_access.log.tar.gz| awk ‘{print $10,$7}‘ |awk ‘BEGIN{FS="[ /]"}{trfc[$4]+=$1}END{for(domain in trfc){printf "%st%dn",domain,trfc[domain]}}‘

数据库篇

1.查看数据库执行的sql

/usr/sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | egrep -i ‘SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL‘

系统Debug分析篇

1.调试命令

strace -p pid

2.跟踪指定进程的PID

gdb -p pid

三、SED(Stream EDitor)

sed默认是模式空间,sed读入file中的文本,交给sed的模式空间(内存中),进行模式过滤并对过滤后的结果进行处理,最终输出到桌面。

1、格式

sed [options] ‘[模式过滤][命令]’文本

[options]

-n 静默模式,不再是默认的模式空间内容

-i 直接修改原文件,保存修改后的结果

-e 可以同时执行多次,-e ‘[模式过滤][命令]‘ -e ‘[模式过滤][命令]‘

-f 调用sed脚本对某个file进行处理 sed -f script file

-r 使用扩展正则表达式

模式过滤类型

1,10或者$ 就是过滤出第n行到第n行的内容,$为最后一行,$-1位倒数第二行

/reg/ /^root/使用正则过滤需要的内容

/patter1/,/patter2/过滤出匹配第一个模式到匹配第二个模式的文本

n 精确匹配某一行

n,+n过滤出n行开始后的n行文本

命令

d 对匹配到的行执行删除操作

p 对匹配到的行执行输出操作

a\对匹配到的行后面添加\后的string

i\对匹配到的行前面添加\后的string

r file 将指定的文件的文本添加到符合条件的行处

w file 将符合条件的文本另存到指定的文件中

s/pattern/string/修饰符 查找并替换,默认只替换第一次被匹配到的内容

g 为全局替换

i 忽略大小写

like替换为liker

love替换为lover

sed  ‘s#l..e#&r#g‘ 1.txt &引用pattern中的全部内容

sed  ‘s#\(l..e\)#\1r#g‘ 1.txt \1表示引用pattern中括号中的原子符

pattern支持原子符,string不支持原子符

四、grep

basic regexp 基本正则表达式

extended regexp 扩展正则表达式

1、格式

grep [options] PATTERN [FILE...]

-i 忽略大小写

--color 匹配到的标出颜色

-v: 显示没有被模式匹配到的行

-o:只显示被模式匹配到的字符串本身

-E: 使用扩展正则表达式

-A n:当某一行被匹配到时,不仅匹配那一行还匹配它下面的n行

-B n:前面的n行

-C n:前后各n行

2、扩展正则

.任意单个字符

[]指定范围内的任意单个字符

[^] 指定范围之外的任意单个字符

*前面字符0次或任意次匹配

?前面的字符0 或一次匹配      \? 基础正则

{m,n}m到n次                  \{m,n\} 基础正则

+前面字符至少一次匹配

^以什么开头

&以什么结尾

\<锚钉字符头 =\b

\>锚钉字符尾 =\b

()组,里面的内容为一个组对待通过\1,\2来引用分组  \(\)基础正则

a|b  a或者b

C|cat C或者cat

(C|c)at C或者c 即Cat或者cat

egrp -E = egrep

匹配grub.confz中1-255的数字

egrep --color ‘\<([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|2[0-4][0-9]|25[0-5])\>‘ grub.conf

()里面的内容为一个整体

| 为或者1-9 或者10-199或者200-249或者250-255

\< 以|中的某个数字开始

\>以|中的某个数据结束

找出ifconfig 中的ip地址

egrep --color ‘(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>’

找出ifconfig 中的ABC三类地址

\<[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3]\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>

时间: 2024-12-28 21:13:43

LVS的持久连接和awk/sed/grep的学习笔记的相关文章

正则表达式解析 & awk/sed/grep实用实例总结文档

##正则表达式特殊字符解析 "^" 匹配行首 "$" 匹配行尾 "^$" 匹配整行为空,空行 grep -v "^$"    打印非空的行 "."  代表且只能代表任意一个字符 "*" 重复0个或多个前面一个的字符.例如"o*",重复一个或多个o ".*"  匹配所有字符.延伸: "^.*" -->以任意多个字符开头.&q

实现LVS的持久连接以及健康状态监控功能

一.实现LVS的持久连接. 功能:无论ipvs使用何种scheduler,其都能够实现在指定时间范围内始终将来自同一个ip地址的请求发往同一个RS:此功能是通过lvs持久连接模板实现,其与调度方法无关. ①在LVS上设置一个虚拟网卡别名. ②在VIP上用iptables 打上标记,把80和443端口标记为99.  ③设置LVS的虚拟IP(VIP)和真实IP(DIP). ④测试.  [持久连接默认十分钟] 二.实现LVS健康状态监控功能. 实现监控状态监控基于持久连接的基础上进行试验. ①安装包

LVS(五)LVS的持久连接

什么是持久链接 把某个客户端的请求始终定向到同一应用服务器上.对于LVS来说持久连接和算法没有关系.也就是使用任何算法LVS都可以实现同一客户端的请求转发到之前选定的应用服务器,以保持会话.而且还能实现同一客户端的不同请求都可以定向到同一应用服务器,比如集群中2台应用服务器,每个应用服务器都提供WEB服务和TELNET服务,那么只要客户端一样,即使它两次请求不同服务,也可以定向到同一应用服务器上. 所以LVS支持2中模式 PPC:持续端口连接,将来自同一客户端对同一服务定向到同一应用服务器上 P

LVS的持久连接及应用的实例

LVS持久连接的意义: 在固定时间内将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS:在指定时长内不再根据调度算法进行调度,会根据内存的ipvs的连接模版里的记录信息将同一个客户端的请求定向至同一个后端RS: 持久连接的类型: 1.PCC:持久客户端连接,将来自于同一个客户端发往VIP的所有请求统统定向至同一个RS (只是根据Vip,所有服务都是集群服务,不同的服务都会被定向至同一个RS): 2.PPC:持久端口连接,将来自于同一个客户端发往某VIP的某端口的所有请求统统定向至同一个

awk &nbsp; sed &nbsp; grep &nbsp; &nbsp; 正则表达式

做事要有耐心. 虚心接受建议,你确实有很多缺点. 就算进步慢,也不可以停止前进的脚步. AWK awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有三种不同版本: awk   gawk    nawk 1.使用方法 awk '{pattern + action}' {filenames} 其中 pattern 表示 AWK 在数

LVS的持久连接、会话保持和高可用介绍

持续连接 1)持久连接(lvs persistence)模板: 实现无论使用任何调度算法,在一段时间内(默认360s),能够实现将来自同一个地址的请求始终发往同一个RS ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] -p # :定义持久时长 2)持久连接实现方式: 每端口持久(PPC):每个端口对应定义为一个集群服务,每个集群服务单独调度,同一服务持久 每防火墙标记持久(PFWMC ):基于防火墙标记定义集群服

awk.sed.grep三剑客详解

事前准备1.主机node1:172.16.133.112.作为实验的文件/etc/passwd /etc/fstab qinqin cp /etc/passwd . cp /etc/fstab . 一.grep用法详解1.grep是干什么的grep的全名是Galobal research Regular Expression and Pringtiong,即搜索正则表达式,也就是说grep简单来讲就是用来搜索匹配字符的2.grep分类grep有基本正则表达式和扩展正则表达式之分,不过她们的作用域

Linux的文本处理工具浅谈-awk sed grep

Linux的文本处理工具浅谈 awk   老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列的分隔符 RS横着切,行的分隔符 [语法格式] awk [–F] [“[分隔符]”] [’{print$1,$NF}’] [目标文件] awk 'BEGIN{FS="[列分隔符]+";RS="[行分隔符]+";print "-GEGIN-"

Linux 三剑客 -- awk sed grep

顶配awk,中配sed,标配grep 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令效率不高,这就好比一块空地准备搭建房子,请了10个师傅拿着铁锹挖地基,花了一个月的时间才挖完,而另外一块空地则请了个挖土机,三下五除二就搞定了,这就是效率.而在linux中的"挖土机"有三种型号:顶配awk,中配sed,标配grep.使用这些工具,我们能够在达到