Security-Enhanced Linux 文本處理三劍客之AWK

SELinux介紹
SELinux:Security-Enhanced Linux, 是美國國家安全局(NSA=The
National Security Agency)和SCC(Secure Computing Corporation)開發的
Linux的一個強制訪問控制的安全模塊。2000年以GNU GPL發佈,Linux內核
2.6版本後集成在內核中
DAC:Discretionary Access Control自由訪問控制
MAC:Mandatory Access Control 強制訪問控制
• DAC環境下進程是無束縛的
• MAC環境下策略的規則決定控制的嚴格程度
• MAC環境下進程能夠被限制的
• 策略被用來定義被限制的進程可以使用那些資源(文件和端口)
• 默認狀況下,沒有被明確容許的行爲將被拒絕
 

SELinux策略
對象(object):全部能夠讀取的對象,包括文件、目錄和進程,端口等
主體:進程稱爲主體(subject)
SELinux中對全部的文件都賦予一個type的文件類型標籤,對於全部的進程也賦予各自的一個domain的標籤。domain標籤可以執行的操做由安全策略裏定義
當一個subject試圖訪問一個object,Kernel中的策略執行服務器將檢查AVC (訪問矢量緩存Access Vector Cache), 在AVC中,subject和object的權限被緩存(cached),查找「應用+文件」的安全環境。而後根據查詢結果容許或拒絕訪問
安全策略:定義主體讀取對象的規則數據庫,規則中記錄了哪一個類型的主體使用哪一個方法讀取哪個對象是容許仍是拒絕的,而且定義了哪一種行爲是充許或拒絕linux

SELinux工做過程正則表達式

 

 配置SELinuxshell

getenforce: 獲取selinux當前狀態數據庫

sestatus :查看selinux狀態express

setenforce設定selinux運行狀態,1開啓(Enforce),0關閉(Permissive)數組

 

修改配置文件緩存

/etc/selinux/config               /etc/sysconfig/selinux    selinux=enable安全

SELINUX={disabled|enforcing|permissive}bash

-------------------------------------------------------------------------------服務器

 

 

awk介紹
有多種版本:New awk(nawk),GNU awk( gawk)

gawk:模式掃描和處理語言

基本格式:awk [options] 'program' file…

pattern和action

pattern部分決定動做語句什麼時候觸發及觸發事件
action statements對數據進行處理,放在{}內指明

分割符、域和記錄 

awk執行時,由分隔符分隔的字段(域)標記$1,$2...$n稱爲域標識。$0爲全部域,注意:此時和shell中變量$符含義不一樣
文件的每一行稱爲記錄
省略action,則默認執行 print $0 的操做

第一步:執行BEGIN{action;… }語句塊中的語句
第二步:從文件或標準輸入(stdin)讀取一行,而後執行pattern{ action;… }語句塊,它逐行掃描文件,從第一行到最後一行重複這個過程,直到文件所有被讀取完畢。
第三步:當讀至輸入流末尾時,執行END{action;…}語句塊
BEGIN語句塊在awk開始從輸入流中讀取行以前被執行,這是一個可選的語句塊,好比變量初始化、打印輸出表格的表頭等語句一般能夠寫在BEGIN語句塊中
END語句塊在awk從輸入流中讀取完全部的行以後即被執行,好比打印全部行的分析結果這類信息彙總都是在END語句塊中完成,它也是一個可選語句塊
pattern語句塊中的通用命令是最重要的部分,也是可選的。若是沒有提供pattern語句塊,則默認執行{ print },即打印每個讀取到的行,awk讀取的每一行都會執行該語句塊

print格式:print item1, item2, ...

實例:取出磁盤利用率

指定:冒號爲分隔符,打印每行記錄的第一個字段輸出$1

BEGIN使用

awk的變量⽤法 
 內置變量:

變量:內置和自定義變量
FS:輸入字段分隔符,默認爲空白字符

OFS:輸出字段分隔符,默認爲空白字符

RS:輸入記錄分隔符,指定輸入時的換行符

ORS:輸出記錄分隔符,輸出時用指定符號代替換行符

NF:字段數量

NR:記錄號

FNR:各文件分別計數,記錄號;
FILENAME:當前文件名;
ARGC:命令行參數的個數;
ARGV:數組,保存的是命令行所給定的各參數

輸入字段分隔符FS變量的使用

 輸入出字段分隔符OFS變量的使用

輸入記錄分隔符RS變量的使用

輸出記錄分隔符ORS變量

字段數量NF變量的使⽤

⾏號NR變量的使⽤

各⽂件分別的記錄號FNR變量的使⽤

當前⽂件名FILENAME變量的使⽤

命令⾏參數的個數ARGC變量的使⽤

命令⾏給定的各參數的數組ARGV變量的使⽤

命令⾏給定的各參數的數組ARGV變量的使⽤

awk的格式化輸出

格式輸出:printf "FORMAT", item1, item2,...

必須知道FORMAT;
不會自動換行,須要顯示給出換行控制符,\n;
FORMAT中須要分別爲後面每一個item指定格式符

格式符:與item⼀⼀對應

%c:顯示字符的ASCII碼;
%d,%i:顯示十進制整數;
%e,%E:顯示科學計數法數值;
%f:顯示爲浮點數;
%g,%G:以科學計數法或浮點形式顯示數值;
%s:顯示字符串;
%u:無符號整數;
%%:顯示%自身。

格式化輸出,以冒號爲分隔符,第⼀個字段寬度20個字符串,第⼆個字段寬度10個數⼦,⼀⾏輸出2個字段,而後
換⾏

格式化輸出爲左對齊

 

awk的操做符

x+y:加法;
x-y:減法;
x*y:乘法;
x/y:除法;
x^y:冪運算;
x%y:取模(餘數)

賦值操做符:

=:右邊賦值給左邊;
+=:先加,再賦值;
-=:先減,再賦值;
*=:先乘,再賦值;
/=:先除,再賦值;
%=:先取餘,再賦值;
^=:先冪運算,再賦值;
++:遞增操做;
--:遞減操做。

⽐較操做符:

==:判斷相等;
!=:判斷不等;
\>:判斷大於;
\>=:判斷大於等於;
<:判斷小於;
<=:判斷小於等於

模式匹配符:

~:左邊是否和右邊匹配包含;
!~:是否不匹配。

使⽤awk的算術操做符,計算5*4

使⽤awk的+=賦值操做符

 

使⽤awk的i++賦值操做符

使⽤awk的++i賦值操做符

匹配包含root⾏的記錄

匹配不包含root⾏的記錄

⽤正則表達式匹配包含root⾏的記錄

顯⽰硬盤分區的使⽤率

 

 邏輯操做符:與&&,或||,非!

顯⽰第三字段⼤於等於0,且⼩於等於1000的⾏中的第1字段

顯⽰第三字段等於0,或⼤於等於1000的⾏中的第1字段

 

Awk實現打印奇數⾏和偶數⾏

sed執行

awk PATTERN

PATTERN:根據pattern條件,過濾匹配的行,再作處理

 

BEGIN/END模式
BEGIN{}:僅在開始處理文件中的文本以前執行一次
END{}:僅在文本處理完成以後執行一次

 

 

 BRGIN/END模式

 

awk控制語句if-else

使用場景:對awk取得的整行或某個字段作條件判斷

查找最後⼀個字段是/bin/bash的⾏,打印第⼀個字段

對第3字段判斷⼤於等於500,則顯⽰每⾏的

查找以空格爲分隔符,顯⽰每⾏⼤於5個字段所在的⾏

 

awk的循環

while(condition){statement;...}
條件爲真,進入循環,條件爲假退出循環;

使⽤場景:對⼀⾏內的多個字段逐⼀相似處理時使⽤;對數組中的各元素逐⼀處理時使⽤。

 統計第5⾏內容中每一個單詞分別有多少個字符

計算1+2+3+...+100的和

do-while循環

意義:不管真假,至少執行一次循環體

awk中使⽤for循環

計算100內整數的和

性能比較

continue語句

 計算100內的奇數和

break語句

計算100內的整數和,但遇到整數66就不計算了,退出執⾏

next:
提早結束對本行處理而直接進入下一行處理

awk數組

關聯數組:array[index-expression]
index-expression:
可以使用任意字符串;字符串要使用雙引號括起來
若是某數組元素事先不存在,在引用時,awk會自動建立此元素,並將其值初始化爲空串
若要判斷數組中是否存在某元素,要使用index in array格式進行遍歷
 若要遍歷數組中的每一個元素,要使用for循環

統計各個tcp狀態的個數:

相關文章
相關標籤/搜索