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 授权
堡垒机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值