马哥教育网络班21期+第五周课程练习

马哥教育网络班21期+第5周课程练习

[TOC]

1. 显示/boot/grub/grub.conf中至少以一个空白字符开头的行。

[root@rhel-5 ~]# grep -E '^[[:space:]]+' /boot/grub/grub.conf 
	root (hd0,0)
	kernel /vmlinuz-2.6.18-348.el5 ro root=LABEL=/ rhgb quiet
	initrd /initrd-2.6.18-348.el5.img
[root@rhel-5 ~]# grep '^[[:space:]]\+' /boot/grub/grub.conf

2. 显示/etc/rc.d/rc.sysinit文件中以#开头,后面至少一个空白字符,而后又有至少一个非空白字符的行。

[root@rhel-5 ~]# grep -E '^#[[:space:]]+[^[:space:]]+' /etc/rc.d/rc.sysinit

3. 打出netstat -tan命令执行结果中以LISTEN后跟空白字符结尾的行。

[root@rhel-5 ~]# netstat -tan | grep 'LISTEN[[:space:]]*'
tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:3938                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:6000                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:1521                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:6010              0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:6011              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:734                 0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN

4. 添加用户bashtestbash,basher,nologin(此用户的shell为/sbin/nologin),而后找出当前系统上用户和默认shell相同的用户信息。

[root@rhel-5 tuser1]# useradd bash
[root@rhel-5 tuser1]# useradd testbash
[root@rhel-5 tuser1]# useradd basher
[root@rhel-5 tuser1]# useradd -s /sbin/nologin nologin
[root@rhel-5 tuser1]# grep -E  "(^[[:alpha:]]+):.*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
bash:x:502:504::/home/bash:/bin/bash
nologin:x:505:507::/home/nologin:/sbin/nologin

5. 显示当前系统上rootfedorauser1用户的默认shell

[root@rhel-5 ~]# grep -E '^(root|fedora|user1)' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@rhel-5 ~]# grep -E '^(root|fedora|user1)' /etc/passwd | cut -d: -f7
/bin/bash

6. 找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello ()。

[root@rhel-5 ~]# grep "^\<[a-z]\+\>()" /etc/rc.d/init.d/functions
checkpid() {
daemon() {
killproc() {
pidfileofproc() {
pidofproc() {
status() {
success() {
failure() {
passed() {
warning() {
action() {
strstr() {
confirm() {
[root@rhel-5 ~]# grep -E '^\<[[:alpha:]]+\>\(\)' /etc/rc.d/init.d/functions

7. 使用echo命令输出一个绝对路径,使用grep取出其基名。

grep -oE "[^/]+/?$" | cut -d"/" -f 1

[root@rhel-6 rc.d]# echo /usr/appsoft/software/12.txt/ | grep -oE "[^/]+/?$" | cut -d"/" -f 1
12.txt
[root@rhel-6 rc.d]# echo /usr/appsoft/software/12.txt | grep -oE "[^/]+/?$" | cut -d"/" -f 1
12.txt

7.1 扩展:取出其路径名。

[root@rhel-6 rc.d]# echo /usr/appsoft/software/12.txt | grep -oE ".*/"
/usr/appsoft/software/

8. 找出ifconfig命令结果中的1-255之间的数字。

[root@rhel-5 ~]# ifconfig | grep -wE '([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5])'
[root@rhel-5 ~]# ifconfig | grep -wE '[1-9][0-9]?|1[0-9][0-9]|2[0-5][0-5]'

9. 挑战题:写一个模式,能匹配合理的IP地址

这里认为合理的IP为:[0-255].[0-255].[0-255].[0-255]
grep -wE '(([0-1]?[0-9]?[0-9]|2[0-5]{2})\.){3}([0-1]?[0-9]?[0-9]|2[0-5]{2})'

10. 挑战题:写一个模式,能匹配所有的邮件地址。

grep -E '[[:alnum:]]+.*@[[:alnum:]]+\.[[:alnum:]]+\.?[[:alpha:]]+'

11. 查找/var目录下属主为root且属组为mail的所有文件或目录。

[root@rhel-5 ~]# find /var -user root -group mail
/var/spool/mail
/var/spool/mqueue
[root@rhel-5 var]# find /var -user root -group mail -ls
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue
[root@rhel-5 var]# find /var \( -user root -group mail \) -ls
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue

11.1 关于find命令-ls参数的用法总结

find命令中使用了-a(逻辑与)或-o(逻辑或)时,如果还需要使用-ls参数,则需要注意:

-a: 使用逻辑与时,各条件是否使用()括起来均可,建议使用()括起来;

-O: 使用逻辑或时,各条件必须使用()括起来,否则查找结果显示错误。

-o:若不使用(),一般认为会显示最后一个逻辑条件的查找结果,但是实验发现,最后一个逻辑条件的查找结果显示也是错误的,所以逻辑或查找条件中,必须将各条件用()括起来。

示例:

-a: 可以省略不写

[root@rhel-5 var]# find /var -user oracle -group mail -ls
2763626    0 -rw-r--r--   1 oracle   mail            0 8月  1 14:48 /var/123.sh
3390953    0 -rw-rw----   1 oracle   mail            0 7月 29 15:34 /var/spool/mail/oracle
[root@rhel-5 var]# find /var \( -user oracle -group mail \) -ls
2763626    0 -rw-r--r--   1 oracle   mail            0 8月  1 14:48 /var/123.sh
3390953    0 -rw-rw----   1 oracle   mail            0 7月 29 15:34 /var/spool/mail/oracle

-o:该参数配合-ls使用时,注意以下两点:

  • 第一条命令中,各逻辑条件不用()括起来,一般认为其只会显示最后一个逻辑条件的结果,即 -group mail,但是/var/123.sh的属组为mail,结果却没有显示出来,所以显示最后一个逻辑条件的查找结果的说法也是错误的。

  • find命令使用逻辑或进行条件查找时,各条件必须使用()括起来。

[root@rhel-5 var]# find /var -user oracle -o -group mail -ls
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
3413767    0 -rw-rw----   1 nologin  mail            0 7月 31 19:26 /var/spool/mail/nologin
3413764    0 -rw-rw----   1 bash     mail            0 7月 31 19:26 /var/spool/mail/bash
3390134    4 -rw-rw----   1 rpc      mail            0 7月 29 10:01 /var/spool/mail/rpc
3413766    0 -rw-rw----   1 basher   mail            0 7月 31 19:26 /var/spool/mail/basher
3413765    0 -rw-rw----   1 testbasher mail            0 7月 31 19:26 /var/spool/mail/testbasher
3413768    0 -rw-rw----   1 testbash mail            0 8月  1 13:44 /var/spool/mail/testbash
3413763    0 -rw-rw----   1 hadoop   mail            0 7月 31 19:04 /var/spool/mail/hadoop
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue
[root@rhel-5 var]# find /var \( -user oracle -o -group mail \) -ls
397605    0 srwxrwxrwx   1 oracle   oinstall        0 7月 29 15:59 /var/tmp/.oracle/sEXTPROC1521
397606    0 srwxrwxrwx   1 oracle   oinstall        0 7月 29 15:59 /var/tmp/.oracle/s#27699.2
397604    0 srwxrwxrwx   1 oracle   oinstall        0 7月 29 15:59 /var/tmp/.oracle/s#27699.1
 41919   16 -rw-------   1 oracle   oinstall    15000 7月 29 15:35 /var/cache/coolkey/coolkeypk11sE-Gate\ 0\ 0-500
2763626    0 -rw-r--r--   1 oracle   mail            0 8月  1 14:48 /var/123.sh
3381291    8 drwxrwxr-x   2 root     mail         4096 8月  1 13:44 /var/spool/mail
3413767    0 -rw-rw----   1 nologin  mail            0 7月 31 19:26 /var/spool/mail/nologin
3413764    0 -rw-rw----   1 bash     mail            0 7月 31 19:26 /var/spool/mail/bash
3390134    4 -rw-rw----   1 rpc      mail            0 7月 29 10:01 /var/spool/mail/rpc
3413766    0 -rw-rw----   1 basher   mail            0 7月 31 19:26 /var/spool/mail/basher
3413765    0 -rw-rw----   1 testbasher mail            0 7月 31 19:26 /var/spool/mail/testbasher
3413768    0 -rw-rw----   1 testbash mail            0 8月  1 13:44 /var/spool/mail/testbash
3413763    0 -rw-rw----   1 hadoop   mail            0 7月 31 19:04 /var/spool/mail/hadoop
3390953    0 -rw-rw----   1 oracle   mail            0 7月 29 15:34 /var/spool/mail/oracle
 70581    8 drwx------   2 root     mail         4096 7月 28  2011 /var/spool/mqueue

12. 查找当前系统上没有属主或属组的文件。

[root@rhel-5 var]# useradd ies
[root@rhel-5 ies]# userdel ies
[root@rhel-5 ies]# find / \( -nouser -o -nogroup \) -ls
3413769    0 -rw-rw----   1 507      mail            0 8月  1 15:23 /var/spool/mail/ies
3348827    4 drwx------   4 507      509          4096 8月  1 15:24 /home/ies
2048441    4 -rw-r--r--   1 507      509           176 8月  1 15:23 /home/ies/.bash_profile
2048442    4 -rw-r--r--   1 507      509           515 8月  1 15:23 /home/ies/.emacs
3348828    4 drwxr-xr-x   3 507      509          4096 8月  1 15:23 /home/ies/.kde
3348829    4 drwxr-xr-x   2 507      509          4096 8月  1 15:23 /home/ies/.kde/Autostart
2113337    4 -rw-r--r--   1 507      509           381 8月  1 15:23 /home/ies/.kde/Autostart/.directory
2048443    4 -rw-r--r--   1 507      509            33 8月  1 15:23 /home/ies/.bash_logout
2048444    4 -rw-r--r--   1 507      509           658 8月  1 15:23 /home/ies/.zshrc
2048446    0 -rw-r--r--   1 507      509             0 8月  1 15:24 /home/ies/ies.txt
3348830    4 drwxr-xr-x   4 507      509          4096 8月  1 15:23 /home/ies/.mozilla
3348831    4 drwxr-xr-x   2 507      509          4096 8月  1 15:23 /home/ies/.mozilla/extensions
3348832    4 drwxr-xr-x   2 507      509          4096 8月  1 15:23 /home/ies/.mozilla/plugins
2048445    4 -rw-r--r--   1 507      509           124 8月  1 15:23 /home/ies/.bashrc

12.1 查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录。

[root@rhel-5 ies]# find / -nouser -o -nogroup -a -atime -3
[root@rhel-5 ies]# find / \( -nouser -o -nogroup -a -atime -3 \) -ls

find命令的逻辑条件查找中使用-ls参数,需要用()将各逻辑条件括起来。

13. 查找/etc目录下所有用户都有写权限的文件。

[root@rhel-5 etc]# find /etc/ -perm -222

14. 查找/etc目录下大于1M且类型为普通文件的所有文件。

[root@rhel-6 rc.d]# find /etc/ -size +1M -type f
/etc/gconf/gconf.xml.defaults/%gconf-tree.xml
/etc/selinux/targeted/policy/policy.24
/etc/selinux/targeted/modules/active/policy.kern
[root@rhel-6 rc.d]# find /etc/ \( -size +1M -type f \) -ls
567266 1968 -rw-r--r--   1 root     root      2014902 8月  1 17:39 /etc/gconf/gconf.xml.defaults/%gconf-tree.xml
437789 7124 -rw-r--r--   1 root     root      7292701 8月  2 08:55 /etc/selinux/targeted/policy/policy.24
437514 7124 -rw-r--r--   1 root     root      7292701 8月  2 08:55 /etc/selinux/targeted/modules/active/policy.kern

15. 查找/etc/init.d目录下,所有用户都有执行权限,且其他用户有写权限的文件。

[root@rhel-6 rc.d]# find /etc/init.d/ -perm 113

16. 查找/usr目录下不属于rootbinhadoop的文件。

[root@rhel-6 rc.d]# find /usr ! \( -user root -o -user bin -o -user hadoop \) -ls
[root@rhel-6 rc.d]# find /usr ! -user root -a ! -user bin -a ! -user hadoop

17. 查找/etc目录下至少有一类用户没有写权限的文件。

[root@rhel-6 rc.d]# find /etc ! -perm -222 -ls

18. 查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件。

[root@rhel-6 rc.d]# find /etc -mtime -7 -a ! -user root -a ! -user hadoop

原创文章,作者:N21_未来人,如若转载,请注明出处:http://www.178linux.com/27320

(0)
N21_未来人N21_未来人
上一篇 2016-08-02
下一篇 2016-08-02

相关推荐

  • Linux 的shell脚本编程

    shell脚本编程 程序:指令+数据 程序编辑风格:             过程式:以指令为中心,数据服务于指令             对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 计算机:运行二进制指…

    Linux干货 2016-08-15
  • mysql复制与备份

    备份策略: 完全+差异+binlog 完全+增量+binlog binlog最好能实时备份到另一个节点上。 完全备份,多久一次? 数据变化量:有20%,建议使用完全备份。 可用的备份存储空间: 数据变化量很大,可以每天做一个完全备份,每周做一次增量备份。 数据变化量不大,可以每月做一次完全备份,每天做一次增量或者差异。 数据 备份工具: mysqldump:…

    Linux干货 2016-12-05
  • 马哥教育网络班21期+第6周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@localhost ~]# cp /etc/rc.d/rc.sysinit /tmp/ [root@localho…

    Linux干货 2016-08-15
  • 分区工具fdisk和gdisk、同步分区表(到内存)

    fdisk  创建MBR分区 gdisk  创建GPT分区 parted  高级分区操作(创建、复制、调整大小等)  centos7:手动创建分区20g,30g,40g(易区分) lsblk cat  /proc/partitions ls  -l  /dev/sd* 以上三个命令是查看内…

    2017-06-15
  • Nginx代理MogileFS并实现负载均衡和高可用

    Nginx代理MogileFS并实现负载均衡和高可用 MogileFS nginx 负载均衡 前言 实验拓扑 实验环境 实验步骤 配置MogileFS 配置Nginx 总结 前言 上篇文章我们了解分布式系统和MogileFS的基本使用, 但是那样的架构是有问题的, 本篇文章我们来了解一下如何使用nginx-mogilefs-module-…

    大数据运维 2016-05-05
  • Keepalives+lvs实现高可用httpd的双主模型

    基础环境:Centos 7.3 最小化安装四台 关闭防火墙及selinux 简单原理: keepalived是以VRRP协议为实现基础的,VRRP全称VirtualRouter Redundancy Protocol,即虚拟路由冗余协议。 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个mas…

    2017-05-15

评论列表(1条)

  • Net21-冰冻vs西瓜
    Net21-冰冻vs西瓜 2016-08-03 10:36

    写的不错哈!