sed 文件編輯器(vim) 非交互html
sed 選項 ‘定位指令’ 文件 【定位指令必定要結合用】python
-i 直接修改原文件
-n sed默認輸出
-r 支持擴展正則表達式linux
定位
1.行號 1 2,3 2~2 3~8
2.正則/正則/正則表達式
a 追加append
i 插入insert
d 刪除 delete
c 行修改
s 關鍵詞修改vim
sed ‘s/x/y/’ 文件
sed 's/x/y/2' 文件
sed 's/x/y/g' 文件
sed 's# /root # /tmp #' 文件
()保留【至關於複製】
(abc) \1
(ttt) \2安全
vim a.txt
abc
test abc
world abc
sed -r 's/(abc)/<\1>/'
a{2,3} 優化
a{2,3} bash
(abc)保留:擴展正則
{abc}保留:基本正則 服務器
p 查看printsession
[root@sanpao1 ~]# head -1 /etc/passwd
root:x【必須有密碼才能登錄計算機,自己不是密碼】:0【uid號】:0:root【無心義,描述信息】:/root【本身的家目錄】:/bin/bash【登錄sheel】app
[root@sanpao1 ~]# head -1 /etc/shadow
root【用戶名】:$6$4sHlnhht$5mmSrgKy04oDd/msB/GFrijuc63eSOI42sPbEdvtwa7/3ws3VZSGxy/WEo3mtjYenHG39i843zcIZhTYtgznX.:【密碼】17171:0:99999【密碼有效時間。大約237年 】:7:::
從passwd裏面把能登錄的用戶名提取
bash
只要用戶名
大數據--》數據分析,數據挖掘
[root@sanpao1 ~]# grep "bash" /etc/passwd
root:x:0:0:root:/root:/bin/bash
usetr:x:1000:1000:usetr:/home/usetr:/bin/bash
zhansan:x:1001:1001::/home/zhansan:/bin/bash
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash
jerry:x:1003:1003::/home/jerry:/bin/bash
[root@sanpao1 ~]# A=grep "bash" /etc/passwd
[root@sanpao1 ~]# echo $A
root:x:0:0:root:/root:/bin/bash usetr:x:1000:1000:usetr:/home/usetr:/bin/bash zhansan:x:1001:1001::/home/zhansan:/bin/bash zhangsan:x:1002:1002::/home/zhangsan:/bin/bash jerry:x:1003:1003::/home/jerry:/bin/bash
[root@sanpao1 ~]#
for i in $A 【for循環是以空格爲分隔點】 do done
[root@sanpao1 ~]# sed -n '/bash/s/:.//p' /etc/passwd
root
usetr
zhansan
zhangsan
jerry
[root@sanpao1 ~]# sed -n '/bash/s/:.//p' /etc/passwd | wc -l
5
[root@sanpao1 ~]#
[root@sanpao1 ~]# head -1 /etc/shadow //提取密碼
root:$6$4sHlnhht$5mmSrgKy04oDd/msB/GFrijuc63eSOI42sPbEdvtwa7/3ws3VZSGxy/WEo3mtjYenHG39i843zcIZhTYtgznX.:17171:0:99999:7:::
[root@sanpao1 ~]# A=sed '/bash/s/.*//' /etc/passwd
for i in $A
do
grep 「$A」 /etc/shadow
grep/sed
echo ${變量#:} 掐頭
echo ${變量%%:} 去尾
done
echo ${變量#*:} 掐頭 echo ${變量%%:*} 去尾
取一個用戶名一個密碼
#!/bin/bash
A=sed -n '/bash/s/:.*//p' /etc/passwd
for i in $A
do
B=grep "$A" /etc/shadow
C=${B#:}
D=${C%%:}
echo $i $D
done
~
[root@sanpao1 ~]# sh bash.sh
root $6$4sHlnhht$5mmSrgKy04oDd/msB/GFrijuc63eSOI42sPbEdvtwa7/3ws3VZSGxy/WEo3mtjYenHG39i843zcIZhTYtgznX.
usetr $6$4sHlnhht$5mmSrgKy04oDd/msB/GFrijuc63eSOI42sPbEdvtwa7/3ws3VZSGxy/WEo3mtjYenHG39i843zcIZhTYtgznX.
zhansan $6$4sHlnhht$5mmSrgKy04oDd/msB/GFrijuc63eSOI42sPbEdvtwa7/3ws3VZSGxy/WEo3mtjYenHG39i843zcIZhTYtgznX.
zhangsan $6$4sHlnhht$5mmSrgKy04oDd/msB/GFrijuc63eSOI42sPbEdvtwa7/3ws3VZSGxy/WEo3mtjYenHG39i843zcIZhTYtgznX.
jerry $6$4sHlnhht$5mmSrgKy04oDd/msB/GFrijuc63eSOI42sPbEdvtwa7/3ws3VZSGxy/WEo3mtjYenHG39i843zcIZhTYtgznX.
【若是用戶名後面式!!說明沒有設置密碼】
awk數據過濾工具 功能相似於grep
流處理器【逐行處理工具】
awk 選項 ‘條件{指令}’ 文件
[root@sanpao1 ~]# awk '{print}' /etc/passwd //全文打印===cat【沒有條件】
awk ‘/正則/’ /etc/passwd 【沒有指令】
[root@sanpao1 ~]# awk '/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
awk 有列的概念,內置變量 //不能用「」,‘’中的$1,$2,awk能夠看懂
$0【打印全部】$1【第一列】$2【第二列】
[root@sanpao1 ~]# tailf /var/log/secure //安全登錄日誌
Apr 16 20:03:56 sanpao1 polkitd[1059]: Finished loading, compiling and executing 6 rules
Apr 16 20:03:56 sanpao1 polkitd[1059]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
Apr 16 20:04:28 sanpao1 sshd[1480]: Server listening on 0.0.0.0 port 22.
Apr 16 20:04:28 sanpao1 sshd[1480]: Server listening on :: port 22.
Apr 16 20:05:45 sanpao1 login: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
Apr 16 20:05:45 sanpao1 login: ROOT LOGIN ON tty1
Apr 16 20:06:01 sanpao1 sshd[2962]: Accepted publickey for root from 192.168.4.254 port 52415 ssh2: RSA 78:93:f8:74:7d:15:59:55:41:01:b5:06:45:91:0c:62
Apr 16 20:06:01 sanpao1 sshd[2962]: pam_unix(sshd:session): session opened for user root by (uid=0)
Apr 16 21:41:39 sanpao1 sshd[7983]: Accepted publickey for root from 192.168.4.254 port 52436 ssh2: RSA 78:93:f8:74:7d:15:59:55:41:01:b5:06:45:91:0c:62
Apr 16 21:41:39 sanpao1 sshd[7983]: pam_unix(sshd:session): session opened for user root by (uid=0)
RAR RAR破解
字典【passwd password 123456
暴力破解00 01 02 03 0a 0b
[root@sanpao1 ~]# cat /usr/share/dict/linux.words //linux中的字典
awk '/Failed/{print $11}' /var/log/secure
i=awk '/Failed/{print $11}' /var/log/secure
x=192.168.4.5 192.168.4.58 192.168.4.3
for i in $x
do
firew<tab>
done
NR 當前行
NF 當前行的列數
hello the world
ni hao
sanpo
1
2
3
1
3
2
1
3
hello
hao
world
hao
sanpo
##注意事項:awk默認以空格或tab爲分割,理解列
-F 選項能夠制定分隔符
hello the,world
ni hao:BJ
sanpo;ip
BJ
world
awk: fatal: Unmatched [ or [^: /[,/
the
hao
the
hao
ip
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root 50G 2.9G 48G 6% /
可用
49365884
49365884
cipan=df / | awk '/root/{print $4}'
[ $cipan -le 5000 ] && mail 163
帳戶:root uid:0
帳戶:bin uid:1
帳戶:daemon uid:2
帳戶:adm uid:3
帳戶:root
UID:0
帳戶:bin
UID:1
帳戶:daemon
UID:2
帳戶:adm
UID:3
uid:0root
uid:1bin
uid:2daemon
uid:3adm
1
2
3
4
5
awk '' 文件
awk 'BEGIN{} 條件{} END{}' 文件
BEGIN後面的命令,在讀取文件以前執行
條件{}後面的命令,在讀取文件的過程當中執行
END{}後面的命令,在讀取文件後執行
#awk -F: 'BEGIN{print "帳戶:\tUID"}'
帳戶 UID
root 0
bin 1
daemon 2
adm 3
總共有:47
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
FS 保存或設置字段分隔符,例如FS=「:」
$n 指定分隔的第n個字段,如$1,$3分別表示第一、第3列
$0 當前讀入的整行文本內容
NF 記錄當前處理行的字段個數(列數)
NR 記錄當前已讀入行的數量(行數)
FNR 保存當前處理行在原文本內的序號( 行號)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
awk 'BEGIN{x=1;y=1;print x*y;print x+y;print x++}' //計算器
4.2
4.1
2.1
4.2
4.1
3.1
統計一下,能登錄的用戶有多少個
總共有:5
總共有:5
awk條件:
1.正則(模糊查找)
/正則/ 全行匹配
~/正則/ 某一列匹配
!~/正則/ 某一列不匹配
awk有列的概念因此 awk -F: '$1~/正則/{指令} 文件'
awk -F: '/正則/{指令}'
/root/ 包含root便可(模糊查找)
2.字符數字(精準查找)
awk -F: '$1=="root"' /etc/passwd //=賦值,==判斷
awk -F: '$1!="root"' /etc/passwd
|
awk 中判斷用<、>、=
把全部uid大於500用戶名提取出來
systemd-bus-proxy 999
systemd-network 998
polkitd 997
unbound 996
colord 995
3.邏輯判斷
把全部uid大於100,而且小於500用戶名提取出來
&& 而且
|| 或者
#awk -F: '$3>100&&$3<500{print $1,$3}' /etc/passwd
300之內(包含300),被3能整除和包含3的值
seq 300 | awk '條件' || '條件'
#!/bin/bash
echo "Content-type:text/html"
echo ""
ifconfig eth0 | awk '$1=="inet"{print $2}'
183 yum -y install httpd
184 systemctl start httpd
185 systemctl status httpd
vim /var/www/cgi-bin/
/var/www/html/a.html 靜態頁面:裏面的數據是不變的
test.py 動態頁面:每訪問一次,運行一下,每次結果不同
#!/bin/bash
echo "Contect-type:text/html" //無論是sheel仍是python都固定不變的格式
echo "" //無論是sheel仍是python都固定不變的格式
腳本
free 內核
##chmod +x /var/www/cgi-bin/test.sh
firefox http://192.168.4.254/cgi-bin/test.sh
awk 內存
awk 根分區
#!/bin/bash
echo "Content-type:text/html"
echo ""
IP=ifconfig private1 | awk '$1=="inet"{print $2}'
echo "本服務器的IP是$IP"
echo "</br>"
Mem=free |sed -n "2p" | awk '{print $4}'
echo "本服務器內存是$Mem"
echo "</br>"
user=who | wc -l
echo -n "當前有$user用戶登錄這臺計算機"
echo "</br>"
#!/bin/bash
echo "Content-type:text/html"
echo ""
IP=ifconfig private1 | awk '$1=="inet"{print $2}'
echo "本服務器的IP是$IP"
echo "</br>" //換行!!
df -h / |awk '{print "您的根分區剩餘:"$4}'
echo "</br>"
free | awk '/Mem/{print "內存剩餘:"$4}'
echo "</br>"
user=who | wc -l
echo -n "當前有$user用戶登錄這臺計算機"
本服務器的IP是192.168.4.254
您的根分區剩餘:347G
內存剩餘:13140136
當前有4用戶登錄這臺計算機
awk if語句
if [];then
a
b
fi
c
if(3>1){}
if(3>x){a}else{b}
if(3>8){a} else if(3>5){b} else{c}
if(3>1){a;b} ; c //c確定會執行
或
if(3>1){a;b}
c
awk 'BEGIN{} 條件{} END{}' 文件 //if是個命令,不能打在條件中
awk '{if(){}else{}}'
awk '{if($3>500){x++}else{y++}} END{print x,y}' /etc/passwd或者sheel的思惟模式以下:x=0,y=0if [$3>500] ;thenlet x++elselet y++fi