awk,systemctl,破解7root口令

awk

-F 指明輸入時用到的字段分隔符

默認空格為分隔符

-v 自定義變量

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

$1,$2..$n稱為域標識,$0為所有域。

文件的每一行稱為記錄

awk '{print}' /etc/passwd

默認 print $0 顯示全段

 blob.png

awk 'BEGIN{print "hello,awd"}'

awk '{print "hello,awd"}' 支持輸入

df |awk '{print $5}'

df |awk '{print $1,$5}' ,默認以空格隔開

df |awk '{print $1"\t"$5}'

awk -F: 'print $1,$3' /etc/passwd

-F: 用:號作為分隔符

awk變量

輸入字段分隔符

awk -v FS=":" '{print $1}' /etc/passwd

blob.png

blob.png-v FS=":"  等于-F:

awk -v FS="bash" '{print $1}' /etc/passwd

blob.png

awk -v FS=":" -v OFS="+++"' '{print $1,$3,$4,$5}' /etc/passwd   定義輸出時候的分隔符

blob.png 冒號分隔之后用+++替代分隔

awk -v FS=":" -v OFS="\t" '{print $1,$3,$4,$5}' /etc/passwd 

blob.png

awk -v RS=" " '{print $1,$2}' f1  輸出將空格成為獨立的行 記錄的分隔符

blob.png

awk -v RS=" " -v OFS="—" -v ORS="***" '{print $1,$2}' f1        -v ORS="***" 這個替換的是回車換行

blob.png

NF  統計字段

awk -F: '{print NF}' /etc/passwd

blob.png

NF統計字段

awk -v FS=":" '{print $NF}' /etc/passwd  等于顯示$7

blob.png

awk -v FS=":" '{print $(NF-1)}' /etc/passwd   等于顯示$6

blob.png

NR 顯示行號

awk -v FS=":" '{print NR,$0}' /etc/passwd 

blob.png

awk -v FS=":" '{print NR,$0}' /etc/passwd /etc/issue

blob.png

FNR 分開文件計算

awk -v FS=":" '{print FNR,$0}' /etc/passwd /etc/issue

blob.png

FILENAME 每一行打印出文件名

awk -v FS=":" '{print FILENAME,$0}' /etc/passwd /etc/issue

blob.png將文件名字和路徑寫在前面

ARGC 顯示命令的參數

awk -v FS=":" '{print ARGC,$0}' /etc/passwd /etc/issue

blob.png

ARGV 查看那幾個參數

awk -v FS=":" '{print ARGV[0]}' /etc/passwd /etc/issue  查看第一個參數 [0-2] 3個

blob.png

變量:內置和自定義變量

?FS:輸入字段分隔符,默認為空白字符

awk-v FS=':' '{print $1,$3,$7}’ /etc/passwd

awk–F: '{print $1,$3,$7}’ /etc/passwd

blob.png

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

awk -v FS=‘:’ -v OFS=‘:’ '{print $1,$3,$7}’ /etc/passwd

blob.png

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

awk -v RS=' ' ‘{print }’ /etc/passwd

blob.png

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

awk -v RS=' ' -v ORS='###'‘{print }’ /etc/passwd

blob.png

    NF:字段數量

awk -F:‘{print NF}’ /etc/fstab,引用內置變量不用$

awk -F: '{print $(NF-1)}' /etc/passwd

blob.png

blob.png顯示的是倒數第二位等于顯示$6

    NR:行號

awk '{print NR}' /etc/fstab; awk END'{print NR}' /etc/fstab

blob.png1-12是etc/fstab的行數,54是/etc/passwd的行數

awk自定義變量

awk -F: -v name="supername" '{print name,$1}' /etc/passwd

里面定義的name="supername"

blob.png

awk -F: -v name="supername" -f bin/awk.sh /etc/passwd   -f可以調用

blob.png

blob.png

awk -F: '{name="superman";print name,$1}' /etc/passwd  定義多個變量

blob.png

printf 命令

格式符:與item一一對應

%c: 顯示字符的ASCII碼

%d, %i: 顯示十進制整數

%e, %E:顯示科學計數法數值

%f:顯示為浮點數

%g, %G:以科學計數法或浮點形式顯示數值

%s:顯示字符串  

%u:無符號整數

%%: 顯示%自身

awk -F: '{printf "%s %d\n ",$1,$3}' /etc/passwd

blob.png

awk -F: '{printf "%20s %10.2fd\n ",$1,$3}' /etc/passwd  %20字符寬度,默認右對齊,左對齊%-20  

%10.2f 寬度為10,顯示后兩位小數

blob.png

操作符號,+ – * / 都支持

awk 'BEGIN{print 10*10}'

blob.png

blob.png

awk -v i=1 'BEGIN{print i++,i}' 

顯示1 2  i在前就顯示i,++i就加完再打印

blob.png

$0~"$root" 默認包含root

awk -F: '$3==0' /etc/passwd

        '$3=="root"'  數字可以不加""

blob.png

blob.png

三目表達式

awk -F: '{$3>=1000?username="commonuser":username="sysuser";printf "%s %s %d",username,$1,$3}' /etc/passwd

blob.png

模式過濾

沒寫模式默認全部處理

正則表達式

awk '/^UUID/' /etc/fstab

blob.png將UUID開頭的句子顯示出來

awk '/bash$/' /etc/passwd

blob.png將bash結尾的行顯示出來

relational expression: 關系表達式;結果有“真”有“假”;結果為“真”才會被處理;

真:結果為非0值,非空字符串

假:結果為空字符串

awk -F: '/^root\>/,/^ftp\>/' /etc/passwd

/root/開頭到 /ftp/開頭

blob.png

awk -F:'BEGIN{print "username uid"}/^root\>/,/^ftp/{print $1,$3}END{print "end file"}' /etc/passwd

blob.pngprint與printf的區別在前者負責的數據會自動換行

判定語句

seq 10|awk 'i=!i'

第一行i開始=0 !i=1 第二行i=1 !i=0 第三行重復第一行,所以只會顯示單數行。

所以顯示奇數值

blob.png

seq 10|awk '!(i=!i)'

blob.png加非判斷結果顯示偶數行

seq 10|awk -v i=1 'i=!i'

偶數值

blob.png一開始賦值就是1,非1等于0假不輸出。

seq 10|awk '{i=!i;print i}'  可以查看到i的值變化

blob.png

組合語句

if-else

if(條件){組合}else if(條件){組合}else(條件){組合}

awk -F: '{if($3>=1000)print $1,$3}' /etc/passwd

blob.png

將ID大于1000的用戶名字和ID打印出來,-F:用:號來做分隔符。

多條件判定

awk 'BEGIN{ test=100;if(test>90){ print "very good";}else if(test>60){ print "good";}else{ print "no pass";}}'

blob.png根據數據判定

while循環

條件真進入循環,條件假退出循環

awk

do-while循環

?語法:do statement while(condition)

?意義:無論真假,至少執行一次循環體

awk在處理數值較大的時候速度比較有優勢

QQ圖片20160920111817.png

break和continue

break 直接退出循環

continue 直接跳過當次循環

awk 'BEGIN{sum=0;for(i=1;i<=100;i++){if(i%2==0){continue}sum+=i}print sum}'

blob.png執行循環,當偶數的時候就跳出,等于奇數雙加

 awk 'BEGIN{sum=0;for(i=1;i<=100;i++){if(i==11){break}sum+=i}print sum}'

blob.png等于執行了10次的雙加,第11次完全跳出循環

next

?提前結束對本行處理而直接進入下一行處理(awk自身循環)

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

打印UUID為偶數的行

blob.png

awk數組

關聯數組:array[index-expression]

?index-expression:

(1) 可使用任意字符串;字符串要使用雙引號括起來

(2) 如果某數組元素事先不存在,在引用時,awk會自動創建此元素,并將其值初始化為“空串”

若要判斷數組中是否存在某元素,要使用“index in array”格式進行遍歷

awk 'BEGIN{week[0]="sun";week[1]="mon"; print week[0]}'

blob.png數組[0]的數值

awk 'BEGIN{week["frist"]="sum";week["two"]="mon";print week["frist"]}'

blob.png字符串要用“”引入,純數字可以不加。

awk '!arr[0]++' f1  去重復

awk '{!arr[$0]++;print $0,arr[$0]}' f1

第一次![$0]=1 再++所以第一次是真 輸出

第二次出現重復的時候[$0]=2取反就是假。所以不輸出

blob.png

blob.png第二次出現的數值+1之后判定條件就為正數,!正數等于0,就不輸出重復的行數了。

遍歷數組

awk 'BEGIN{weekdays["mon"]="Monday";weekdays["tue"]

="Tuesday";for(i in weekdays) {print weekdays[i]}}‘

顯示所有的組成員

blob.png

netstat -tan | awk'/^tcp\>/{state[$NF]++}END

{for(i in state) { print i,state[i]}}'

最后的參數遇到相同的后面+1

blob.png

awk '{state[$1]++}END{for(i in state){ print i,state[i]}}'

blob.png

awk函數

awk 'BEGIN{srand();print rand()}'

生成隨機數

blob.png

awk 'BEGIN{srand();print int(rand()*100)}'

生成整數隨機數

blob.png

awk 'BEGIN{srand(); for (i=1;i<=10;i++)print int(rand()*100) }'

blob.png顯示10個隨機整數

sub/gsub  (替換單個/替換整行)

echo "2008:08:08 08:08:08" | awk'sub(/:/,"",$1)'

blob.png第一個冒號分隔符替換

echo "2008:08:08 08:08:08" | awk‘gsub(/:/,"",$1)'   gsub整個替換

blob.png因為我輸出的是$1,awk格式是默認空格為分隔號,所以替換$1的整行冒號。(這里$1=2008:08:08)

split($5,ip,":") ip這個組從[1]開始

netstat -tan | awk '/^tcp\>/{split($5,ip,":");count[ip[1]]++}END{for (i in count) {print i,count[i]}}'  得出IP地址和IP地址出現的次數

blob.png統計IP鏈接的次數

function函數調用

awk -f fun.awk 調用awk函數

使用就fun.awk

function max(v1,v2) {

v1>v2?var=v1:var=v2

return var

}

END{a=3;b=2;print max(a,b);}

blob.png

blob.png要加執行權限使用

腳本調用開頭寫

!/bin/awk -f  加上執行權限就能直接運行

awk中使用操作系統的指令

awk 'BEGIN{system("hostname")}'

awk 'BEGIN{system("echo xxx")}'

awk 'BEGIN{name="zczx";system("echo " name)}'

blob.png

awk腳本

#cat f1.awk

{if($3>=1000)print $1,$3}

#awk -F: -f f1.awk /etc/passwd

blob.png

#cat f2.awk

#!/bin/awk –f

#this is a awk script

{if($3>=1000)print $1,$3}

#chmod +x f2.awk

#f1.awk –F: /etc/passwd

傳遞參數

#cat f2.awk

#!/bin/awk –f

{if($3 >=min && $3<=max)print $1,$3}

#f2.awk -F: min=100 max=200 /etc/passwd

指定 -F: 為分隔符號

1、統計/etc/fstab文件中每個文件系統類型出現的次數# awk'/^UUID/{fs[$3]++}END{for(i in fs) {print i,fs[i]}}' /etc/fstab

blob.png

2、統計/etc/fstab文件中每個單詞出現的次數;

# awk'{for(i=1;i<=NF;i++){count[$i]++}}END{for(i in count) {print i,count[i]}}' /etc/fstab

blob.png

systemd 7版本之后使用的管理系統的工具

紅帽開發的守護進程

CentOS 5: SysVinit

CentOS 6: Upstart

CentOS 7: Systemd

Systemd:系統啟動和服務器守護進程管理器,負責在系統啟動或運行時,激活系統資源,服務器進程和其它進程

最大特點:系統引導實現服務并行啟動

在6版本以前版本都是串行啟動,所以啟動較慢

unit表示不同類型的systemd對象,通過配置文件進行標識和配置;文件中主要包含了系統服務、監聽socket、保存的系統快照以及其它與init相關的信息

?配置文件:

/usr/lib/systemd/system:每個服務最主要的啟動腳本設置,類似于之前的/etc/init.d/

/run/systemd/system:系統執行過程中所產生的服務腳本,比上面目錄優先運行

/etc/systemd/system:管理員建立的執行腳本,類似于/etc/rc.d/rcN.d/Sxx類的功能,比上面目錄優先運行

cd /etc/systemd/system 如果要存放服務的時候,放在這個路徑下比較安全

blob.png

systemclt

systemclt -t 可以查看unit類型

blob.png

automount 文件系統自動掛載

blob.png

系統服務的管理

systemctl 支持保全

命令:systemctlCOMMAND name.service

啟動:service name start ==> systemctlstart name.service

停止:service name stop ==> systemctlstop name.service

重啟:service name restart ==> systemctlrestart name.service

狀態:service name status ==> systemctlstatus name.service

禁止自動和手動啟動:

systemctl mask name.service

取消禁止:

systemctl unmask name.service

用于不常用的服務可以通過禁止啟動。

可以通過手動更改服務路徑可以跳過mask 啟動,mask 的原理就是將啟動的軟連接改成指向/dev/null。

systemctl list-units -t service 查看所有活動的服務

blob.png

systemctl list-units -t service -all 查看所有的服務

blob.png

systemctl is-enabled httpd  查詢是否開機啟動

blob.png

systemctl enabled httpd  改成開機啟動

blob.png

systemctl disabled httpd 改成開機不啟動  

blob.png

systemctl list-dependencies httpd.service  查看服務的依賴性

blob.png

systemctl kill 進程 殺進程

顯示所有單元狀態

systemctl

只顯示服務單元的狀態

systemctl –type=service

blob.png

顯示sshd服務單元

systemctlstatus sshd.service–l

驗證sshd服務當前是否活動

systemctl is-active sshd

blob.png

啟動,停止和重啟sshd服務

systemctl start sshd.service

systemctl stop sshd.service

systemctl restart sshd.service

blob.png

blob.png

重新加載配置

systemctl reload sshd.service

blob.png

列出活動狀態的所有服務單元

systemctl list-units –type=service

blob.png

列出所有服務單元

systemctl list-units –type=service –all

blob.png

查看服務單元的啟用和禁用狀態。

systemctl list-unit-files –type=service

blob.png

列出失敗的服務

systemctl –failed –type=service

blob.png

target 

systemctl list-dependencies .target  查看target的依賴性

blob.png

systemctl get-default 查看現在是神馬狀態

blob.png

systemctl get-default multi-usr.target 切換默認開機成字符界面

graphical.target  圖形界面

通過更改軟鏈接路徑修改

systemctl isolate multi-usr.target 切換成字符界面

systemctl isolate graphical.target  切換成圖形界面

軟連接指向誰就運行誰

systemctl rescue 切換成救援模式

systemctlemergency 切換至emergency模式

CentOS7引導順序

UEFi或BIOS初始化,運行POST開機自檢

選擇啟動設備

引導裝載程序, centos7是grub2

加載裝載程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg

加載initramfs驅動模塊

加載內核選項

內核初始化,centos7使用systemd代替init

執行initrd.target所有單元,包括掛載/etc/fstab

從initramfs根文件系統切換到磁盤根目錄

systemd執行默認target配置,配置文件/etc/systemd/default.target/etc/systemd/system/

服務格式

cat httpd.service

分3部分

[unit]

Description描述

After:unit的啟動次序  想當與依賴關系

Before:與after 相反

Requires: 強依賴,依賴的units無法激活,當前unit也無法激活

Wants:弱依賴

Conflicts:沖突項目

[Service]

Type

EnvironmentFile 文件路徑

ExecStart 絕對路徑

ExecReload 絕對路徑

[Install]

Alias:別名

RequiredBy:強依賴

WantsdBy:強依賴

/etc/systemd/system :系統管理員和用戶使用

/usr/lib/systemd/system 開發者使用

blob.png

blob.png

破解7root口令

啟動時任意鍵暫停啟動

按e鍵進入編輯模式

將光標移動linux16開始的行,添加內核參數rd.break

按ctrl-x啟動   類似單一用戶

mount –o remount,rw /sysroot

chroot /sysroot

passwd root

touch /.autorelabel  自動打標簽,因為修改了標簽會可能破壞了

原創文章,作者:swzczx,如若轉載,請注明出處:http://www.www58058.com/48050

(0)
swzczxswzczx
上一篇 2016-10-05
下一篇 2016-10-06

相關推薦

  • 網絡管理實戰(子網劃分、單網卡多IP、多網卡單IP、Linux路由實現)

        1、某公司申請到一個C 類IP 地址,但要連接6 個的子公司,最大的一個子 公司有26 臺計算機,每個子公司在一個網段中,則子網掩碼應設為?          分析過程:C類地址標準的掩碼為24位,因為有6個子公…

    Linux干貨 2016-09-05
  • 基于rsyslog的iptables.log配置

                                                      …

    Linux干貨 2016-01-15
  • 文件系統管理&raid&腳本編程之參數、算數運算練習

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; (1) ~]# fdisk /dev/sdb Welcome to…

    Linux干貨 2016-11-08
  • linux系統初識

          在完成centos7安裝后,使用root登陸,查看了解當前根目錄。由于root權限高,建議新增用戶。執行useradd name命令。登陸后查看是否當前用戶用whoami命令。     使用df命令了解系統分區情況以及顯示內存free命令。   &…

    2017-07-16
  • 跟我一起學man page、history的使用,剖析FHS(文件系統目錄標準)

    跟我一起學man page、history的使用,剖析FHS(文件系統目錄標準) 描述 從Linux小白鼠成長為高(lao)高(hei)手(shu)的過程中,無論如何都要學會自個兒施法解決問題,法力的高深體現了解決問題的能力,這里的法力指的是在沒有互聯網的環境下如何使用man page或相關文檔找到命令的使用方法和配置文件的修改方法。本文第一部分總結了在Li…

    Linux干貨 2016-07-29
  • 2、基本命令介紹

    http://note.youdao.com/yws/public/redirect/share?id=dbbed5e1e3ecce8712076f11e70fc038&type=false

    Linux干貨 2016-08-08
欧美性久久久久