sed awk 用戶管理

sed
替換文件內容
找誰 幹啥
-n 取消默認輸出
查找
sed -n '3p' /etc/passwd 查找第三行
sed -n '3,10p' /etc/passwd 查找文件的第三行到第十行
sed -n '2,$p' /etc/passwd查找文件從第二行到尾行

grep和sed awk模糊匹配查找的區別
grep grep 'root' file
awk awk '/root/' file
sed sed -n '/root/p' file
sed -n '/root/,/halt/p' /etc/passwd (貪婪匹配結尾匹配不到就全部打印出來,root-halt,第二個root繼續匹配halt,沒有第二個halt就全部打印出來。底下以此類推)
替換
sed -n 's#root#oldboy#p' passwd 替換匹配到行的第一個root爲oldboy
sed -n 's#root#oldboy#gp' passwd 替換所有的root爲oldboy
sed -n '1s#root#oldboy#gp' passwd 替換第一行所有的root爲oldboy
sed -n '/root/s#root#oldboy#gp' passwd 把匹配到的root行進行替換
刪除是s##d
sed 後向引用
sed -r 's#(.)#\1 alex#g' 1.txt
例子: 批量創建用戶
echo oldboy{1..10}|xargs -n1|sed -r 's#(.
)#userdel -r \1#g'|bash

echo oldboy{1..10}|xargs -n1|sed -r 's#(.*)#useradd \1;echo echo $RANDOM|md5sum|cut -c1-8|passwd --stdin \1#g'
useradd oldboy1;echo $RANDOM|md5sum|cut -c1-8|passwd --stdin oldboy1
echo echo $RANDOM|md5sum|cut -c1-8|passwd --stdin oldboy1
echo b78bbdca|passwd --stdin oldboy1

useradd oldboy1;ran=echo $RANDOM|md5sum|cut -c1-8;echo $ran|passwd --stdin oldboy1
useradd oldboy1;ran=cfc891e6;echo $ran|passwd --stdin oldboy1

echo oldboy{1..10}|xargs -n1|sed -r 's#(.*)#useradd \1;ran=echo $RANDOM|md5sum|cut -c1-8;echo $ran|passwd --stdin \1;echo $ran \1>> pass.txt#g'|bash
seq
生成序列
-s 指定分隔符 默認\n(回車)
\t tab
\n 回車
bc
計算 安裝bc
面試題
seq -s + 100|bc
awk
查找 統計 (擅長取列) //找誰 {}awk的動作
awk '/root/' psswd
awk '{動作}' file
取出第五列 awk 列數 從第一列開始$1 awk默認分隔符 空格 tab
awk '{print $1}' /etc/hosts

指定分隔符
head -1 /etc/passwd|awk -F: '{print $1}'
head -1 /etc/passwd|awk -F ":" '{print $1}'
如果列數空格隔開 使用. 或者使用" " 雙引號裏面想寫什麼就什麼
head -1 /etc/passwd|awk -F: '{print $1,$3}'
head -1 /etc/passwd|awk -F: '{print $1"---"$3}'
擴展
在awk中輸出的自定義字符串 默認都當做變量 只有加雙引號才被識別爲字符
1.echo oldboy{1..10}|xargs -n1|awk '{print "useradd " $1}'
2.[root@oldboy ~]# echo oldboy{1..3}|xargs -n1|awk '{print "useradd " $1";echo 123456|passwd --stdin " $1}'
useradd oldboy1;echo 123456|passwd --stdin oldboy1
useradd oldboy2;echo 123456|passwd --stdin oldboy2
useradd oldboy3;echo 123456|passwd --stdin oldboy3

[root@oldboy ~]# ps axu|awk '{print $5}'|grep -v VSZ|tr "\n" "+"|sed -r 's#(.)#\10\n#g'
43648+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+37124+44836+0+0+0+0+0+0+0+0+0+0+0+55508+99656+298712+21672+223560+221236+538436+26376+58064+126280+573816+112796+220764+110088+89620+89792+0+157188+116456+157188+116360+0+0+89724+0+0+155324+113540+112704+107972+116932+0
[root@oldboy ~]# ps axu|awk '{print $5}'|grep -v VSZ|tr "\n" "+"|sed -r 's#(.
)#\10\n#g'|bc
4248600
在awk中輸出的自定義字符串 默認都是變量 只有加雙引號才被認識爲字符

awk 變量 0($0輸出所有) 1 2 3
awk NF 把最後一列的列號賦值給NF,NF是一個變量(輸出文件的最後一列)

[root@oldboy ~]# cat 1.txt
inet 10.0.0.200/24
qqq aaa ccc bbb
aaa ccc
111 222 3333
666
[root@oldboy ~]# awk '{print NF}' 1.txt
2
4
2
3
1
[root@oldboy ~]# awk '{print $NF}' 1.txt
10.0.0.200/24
bbb
ccc
3333
666

[root@oldboy ~]# cat 1.txt
inet 10.0.0.200/24
qqq aaa ccc bbb
aaa ccc
111 222 3333
666
[root@oldboy ~]# awk '{print NF-2}' 1.txt
0
2
0
1
-1
[root@oldboy ~]# awk '{print $(NF-2)}' 1.txt
inet 10.0.0.200/24
aaa
aaa ccc
111

sed awk 取行
sed -n '3p' file
sed -n '1,10p' file
awk 'NR==3' file
awk 'NR==1' /etc/passwd
awk 'NR<2' /etc/passwd
awk 'NR>2' /etc/passwd
&& 並且 || 或者
awk 'NR>2&&NR<6' /etc/passwd 行號大於2 並且小於6 3-5行
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

awk 'NR==1||NR==6' /etc/passwd 取第1行或者第六行
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync

chown
修改文件的所有者
[root@oldboy ~]# chown oldboy.oldboy 1.txt
[root@oldboy ~]# ll
total 16
-rw-r--r-- 1 oldboy oldboy 60 Aug 15 10:47 1.txt

面試題坑:
[root@oldboy ~]# useradd -u 1500 -g1500 oldboy1
useradd: group '1500' does not exist
首先創建組
[root@oldboy ~]# groupadd -g 1500 test
[root@oldboy ~]# useradd -u 1500 -g1500 oldboy1
[root@oldboy ~]# id oldboy1
uid=1500(oldboy1) gid=1500(test) groups=1500(test)
htop iotop iftop

sudo 臨時讓用戶擁有root的權限
sudo 尚方大寶劍
寶劍--只能看一看皇宮-----------ls

sudo -l 查看可執行命令
輸入密碼三次 自動臨時保存 下次登錄還會提示輸入密碼
sudo -k 清空臨時密碼

開發人員的使用權限 避免使用*
第一個里程碑
如何查看自己的大寶劍
sudo -l
第二個里程碑 授權大寶劍 授權命令使用全路徑
visudo -------------vim /etc/sudoers
visudo 語法檢測
alex ALL=(ALL) /usr/bin/ls

[alex@oldboy ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
使用sudo大寶劍執行命令
[alex@oldboy ~]$ sudo ls /root
1.txt  2.txt  pass.txt  passwd  test

第三個里程碑
授權所有的命令
alex ALL=(ALL) /usr/bin/
代授權的用戶或組 機器=(授權角色) 可以執行的命令
user MACHINE= COMMANDS
tom ALL=(ALL) /usr/sbin/useradd
第四個里程碑
如何取反 某一個命令不能使用
alex ALL=(ALL) /usr/bin/
,!/usr/bin/su
alex ALL=(ALL) /usr/bin/ls,/usr/bin/less

運維用戶授權
alex ALL=(ALL) NOPASSWD: ALL

jumpserver 跳板機-堡壘機

小結:
sed
取行 替換
awk 取列 統計
chown 更改文件所有者
-R 遞歸修改目錄下所有的文件的所有者
和用戶相關的命令
sudo 授權
堡壘機

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章