使用awk命令批量删除指定范围的账号

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

大家都知道,Linux系统中的账户信息都存放在/etc/passwd这个文件中,通过查看这个文件我们就可以了解到系统内每个账号的详细信息。今天做实验,建立了很多账号,手工挨个删除真的很慢,于是就用前段时间学习的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值就可以了。这两行命令应该还可以拓展到其他地方使用,欢迎有想法的小伙伴提出来。当然,我这个命令语句写得也很次,在各位大大们面前班门弄斧了,欢迎指正。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏艾斯博客www.vpsss.net

修改 wordpress 后台登陆地址和登陆用户名

7754
来自专栏MYSQL轻松学

MySQL Innodb MTR源码解析

最近看了下Mysql innodb源码MTR模块,了解源码能帮助DBA更熟悉数据库运行原理、更容易定位排查问题。那么什么是Mtr?Mtr究竟是用来做什么的?围绕...

5616
来自专栏决胜机器学习

PHP网络技术(二)——模拟网络灌水攻防

PHP网络技术(二)——模拟网络灌水攻防 (原创内容,转载请注明来源,谢谢) 一、概念 网络上如留言板、论坛等,可以提交评论的地方,或者其他可以给用户提交内容...

2714
来自专栏Hadoop和Spark

用AWS部署一个无服务架构的个人网站

在这篇文章里我想介绍下怎样利用AWS(hjlouyoujuqi360com)部署一个无服务架构的个人网站。这个个人网站将具备以下特点:

3024
来自专栏24K纯开源

QT程序在发布的时候应注意的地方

---恢复内容开始---     我们用QT开发好的应用程序,如果要发布到其他计算机上运行怎么办呢?我们在用VC编程时,单独运行编译好的可执行文件时,经常会发现...

2695
来自专栏技术博文

关于微信二次分享,描述变链接的解决方法(一)----文档说明

声明: 本篇博文只是个人工作中的分享总结,仅代表个人观点,虽然解决了不少网友的问题,但同时也引来了一些网友的不满,所以特此声明,当您遇到本博文解决不了的问题,可...

1.2K7
来自专栏Android 研究

Android启动流程——1序言、bootloader引导与Linux启动

前面讲解的很多内容都很抽象,所以本次系列决定"接点地气",准备开始讲解大家熟悉的Activity了,为了让我以及大家更好的理解Activity,我决定本系列...

2641
来自专栏即时通讯技术

SSE技术详解:一种全新的HTML5服务器推送事件技术

一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询、Comet技术、We...

1524
来自专栏魏艾斯博客www.vpsss.net

网站目录/绝对路径/相对路径-零基础搭建wordpress教程

网站基本知识包括很多方面,网站结构、网页路径、域名、服务器、建站等等,我们已经写过域名和新手如何选择服务器了,正好最近遇到群友对网站基本知识有些疑问,魏艾斯博客...

3791
来自专栏余生开发

VS Code—插件的开发

说再多也不如做一遍,这里我们一起来一步步做一个插件。就做官网的那个demo,wordCounter,用于统计当前页单词量。 官网是TypeScript,我不会....

8381

扫码关注云+社区

领取腾讯云代金券