龙空技术网

雕虫小技:使用awk批量删除指定范围的账号

晨曦蜗牛 151

前言:

当前各位老铁们对“oracle spool 去空格”大概比较看重,大家都想要知道一些“oracle spool 去空格”的相关内容。那么小编同时在网上搜集了一些有关“oracle spool 去空格””的相关文章,希望同学们能喜欢,各位老铁们一起来了解一下吧!

大家都知道,Linux系统中的账户信息都存放在/etc/passwd这个文件中,通过查看这个文件我们就可以了解到系统内每个账号的详细信息。今天做实验,建立了很多账号,手工挨个删除真的很慢,于是就用前段时间学习的awk命令删除了指定范围的账号,方便快捷。

awk

命令我是这样写的:

[root@DCGH ~]# awk -F ":" 'NR>=22&&NR<=28{cmd="userdel -r";user=$1;system(cmd" "user)}' /etc/passwd

这行命令中,我删除了/etc/passwd中第22至28行的账号,连带用户目录一起删除。看着效率还行,于是我就拓展了一下,删除指定行的账号,命令如下:

[root@DCGH ssh]# awk -F ":" '{if(NR==11){print NR ":" $1}else if(NR==12){print NR ":" $1}}' /etc/passwd

11:games

12:ftp

[root@DCGH ssh]# awk -F ":" 'BEGIN{cmd="userdel -r"}{if(NR==11){user=$1;system(cmd" "user)}else if(NR==12){user=$1;system(cmd" "user)}}' /etc/passwd

userdel:组"games"没有移除,因为它不是用户 games 的主组

userdel: games 邮件池 (/var/spool/mail/games) 未找到

userdel:/usr/games 并不属于 games,所以不会删除

userdel: ftp 邮件池 (/var/spool/mail/ftp) 未找到

userdel:未找到 ftp 的主目录"/var/ftp"

[root@DCGH ssh]# nl /etc/passwd

1 root:x:0:0:root:/root:/bin/bash

2 bin:x:1:1:bin:/bin:/sbin/nologin

3 daemon:x:2:2:daemon:/sbin:/sbin/nologin

4 adm:x:3:4:adm:/var/adm:/sbin/nologin

5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

6 sync:x:5:0:sync:/sbin:/bin/sync

7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

8 halt:x:7:0:halt:/sbin:/sbin/halt

9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

10 operator:x:11:0:operator:/root:/sbin/nologin

11 nobody:x:99:99:Nobody:/:/sbin/nologin

12 avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin

13 systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin

14 systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin

15 dbus:x:81:81:System message bus:/:/sbin/nologin

16 polkitd:x:997:995:User for polkitd:/:/sbin/nologin

17 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

18 postfix:x:89:89::/var/spool/postfix:/sbin/nologin

19 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

20 tcpdump:x:72:72::/:/sbin/nologin

awk -F ":" '{if(NR==11){print NR ":" $1}else if(NR==12){print NR ":" $1}}' /etc/passwd

这一行命令中,我们打印出了需要删除账号名称。接着使用system函数拓展了一下,把账号名称的值赋给变量user。账号删除(选项r:删除主目录和邮件池)命令为:userdel -r,值赋给变量cmd。注意:system()函数括号内的双引号中间是一个空格。于是命令就被拓展成这样了:

awk -F ":" 'BEGIN{cmd="userdel -r"}{if(NR==11){user=$1;system(cmd" "user)}else if(NR==12){user=$1;system(cmd" "user)}}' /etc/passwd

如果还需要删除其他指定行的账号,再添加else if语句修改一下NR值就可以了。这两行命令应该还可以拓展到其他地方使用,欢迎有想法的小伙伴提出来。当然,我这个命令语句写得也很次,在各位大大们面前班门弄斧了,欢迎指正。

标签: #oracle spool 去空格