马哥2016全新Linux+Python高端运维班-Linux grep命令及基本正则表示

本周作业内容:

1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。

    第一种方式:
        [[email protected] /]#chmod -R go=--- /home/tuser1
        [[email protected] tuser1]# ls -l /home/tuser1/
        总用量 4
        -rw-------. 1 root root 47 8月  25 00:01 issue
    第二种方式:
        [[email protected] /]# rm -rf /home/tuser1/
        [[email protected] /]# cp -r /etc/skel/ /home/tuser1
        [[email protected] /]# chmod -R g-rwx /home/tuser1/
        [[email protected] /]# chmod -R o-rwx /home/tuser1/
        [[email protected] /]# ls -l /home/tuser1/
        总用量 4
        -rw-------. 1 root root 47 8月  25 00:12 issue
        [[email protected] /]# ls -ld /home/tuser1/
        drwx------. 4 root root 4096 8月  25 00:12 /home/tuser1/

2、编辑/etc/group文件,添加组hadoop。

    第一种方式:
        [[email protected] /]# echo "hadoop:x:3008:" >> /etc/group
    第二种方式:
        vim /etc/group
        在最下面添加一行:
        hadoop:x:3009:
        保存退出。

3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。

vim /etc/passwd 
    在最下面添加一行:
    hadoop:x:3008:3008::/home/hadoop:/bin/bash
    保存退出。
    [[email protected] /]# id hadoop
    uid=3008(hadoop) gid=3008(hadoop) 组=3008(hadoop)

4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。

 [[email protected] /]# cp -r /etc/skel/ /home/hadoop
    [[email protected] /]# chmod -R go=--- /home/hadoop
    [[email protected] /]# ls -la /home/hadoop
    总用量 32
    drwx------.  4 root root 4096 8月  25 00:33 .
    drwxr-xr-x. 19 root root 4096 8月  25 00:33 ..
    -rw-------.  1 root root   18 8月  25 00:33 .bash_logout
    -rw-------.  1 root root  176 8月  25 00:33 .bash_profile
    -rw-------.  1 root root  124 8月  25 00:33 .bashrc
    drwx------.  2 root root 4096 8月  25 00:33 .gnome2
    -rw-------.  1 root root   47 8月  25 00:33 issue
    drwx------.  4 root root 4096 8月  25 00:33 .mozilla

5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。
知识点:
        修改文件的属主:chown
            chown [OPTION]... [OWNER][:[GROUP]] FILE...

用法:
                    OWNER
                    OWNER:GROUP
                    :GROUP

Note: 命令中的冒号可用.替换;

-R: 递归
            chown [OPTION]... --reference=RFILE FILE...

    [[email protected] /]# chown -R hadoop:hadoop /home/hadoop/
    [[email protected] /]# id hadoop
    uid=3008(hadoop) gid=3008(hadoop) 组=3008(hadoop)

6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;

    [[email protected] /]# grep ‘^[Ss]‘ /proc/meminfo
    SwapCached:            0 kB
    SwapTotal:       2097144 kB
    SwapFree:        2097144 kB
    Shmem:              3296 kB
    Slab:              46576 kB
    SReclaimable:      13148 kB
    SUnreclaim:        33428 kB
    [[email protected] /]# grep -i "^s" /proc/meminfo
    SwapCached:            0 kB
    SwapTotal:       2097144 kB
    SwapFree:        2097144 kB
    Shmem:              3296 kB
    Slab:              46584 kB
    SReclaimable:      13160 kB
    SUnreclaim:        33424 kB

7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
知识点:
        grep [OPTIONS] PATTERN [FILE...]

选项:
                --color=auto: 对匹配到的文本着色显示;
                -v: 显示不能够被pattern匹配到的行;
                -i: 忽略字符大小写;
                -o: 仅显示匹配到的字符串;
                -q: 静默模式,不输出任何信息;
                -A #:after, 后#行
                -B #: before, 前#行
                -C #:context, 前后各#行

-E:使用ERE;

    [[email protected] /]# grep -v "/sbin/nologin" /etc/passwd | cut -d: -f1
    root
    sync
    shutdown
    halt
    liu
    bash
    basher
    testbash
    centos
    useradd1
    mageia
    slackware
    openstacks
    user1
    user2
    user3
    hadoop

8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;

    [[email protected] /]# grep  "/bin/bash" /etc/passwd | cut -d: -f1
    root
    liu
    bash
    basher
    testbash
    centos
    useradd1
    mageia
    openstacks
    user1
    user2
    user3
    hadoop

9、找出/etc/passwd文件中的一位数或两位数;
知识点:
        基本正则表达式元字符:
            字符匹配:
                .:  匹配任意单个字符;
                []: 匹配指定范围内的任意单个字符
                [^]:匹配指定范围外的任意单个字符
                    [:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、[:punct:]、[:space:]
            
            匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数;
                *:匹配前面的字符任意次;
                    例如: grep "x*y"
                        abxy
                        xay
                        xxxxxxy

贪婪模式
                .*:任意长度的任意字符;
                \?:匹配其前面的字符0或1次;即前面的可有可无;
                \+:匹配其前面的字符至少1次;
                \{m\}:匹配前面的字符m次;
                \{m,n\}:匹配前面的字符至少m次,至多n次;
                    \{0,n\}:匹配前面的字符至多n次;
                    \{m,\}:匹配前面的字符至少m次;

位置锚定:
                ^:行首锚定;用于模式的最左侧;
                $:行尾锚定;用于模式的最右侧;
                ^PATTERN$: 用于模式匹配整行;
                    ^$: 空行;
                    ^[[:space:]]*$

\< 或 \b:词首锚定;用于单词模式的左侧;
                \> 或 \b:词尾锚定;用于单词模式的右侧;
                \<PATTERN\>:匹配整个单词;

分组:
                \(\):将一个或多个字符捆绑在一起,当作一个整体进行处理;
                    \(xy\)*ab

    [[email protected] /]# grep -E -o "\<[0-9]{1,2}\>" /etc/passwd

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

    [[email protected] /]# grep "^[[:space:]]\+" /boot/grub/grub.conf
            root (hd0,0)
  
          kernel /vmlinuz-2.6.32-431.el6.i686 ro 
root=UUID=3fcabd0f-e9fb-4618-918d-c9e004fe6a59 rd_NO_LUKS  
KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 
rd_NO_LVM rd_NO_DM rhgb quiet
            initrd /initramfs-2.6.32-431.el6.i686.img

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

    [[email protected] /]# grep "^#[[:space:]]\+[^[:space:]]\+" /etc/rc.d/rc.sysinit
    # /etc/rc.d/rc.sysinit - run once at boot time
    # Taken in part from Miquel van Smoorenburg‘s bcheckrc.
    # Check SELinux status
    # Print a text banner.
    # Only read this once.
    # Initialize hardware
    # Set default affinity
    # Load other user-defined modules
    # Load modules (for backward compatibility with VARs)
    # Configure kernel parameters
    # Set the hostname.
    ...

12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;

    [[email protected] /]# netstat -tan | grep "LISTEN[[:space:]]\+$"
    tcp        0      0 0.0.0.0:111                 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:25                0.0.0.0:*                   LISTEN
    tcp        0      0 0.0.0.0:33661               0.0.0.0:*                   LISTEN
    tcp        0      0 :::36996                    :::*                        LISTEN
    tcp        0      0 :::111                      :::*                        LISTEN
    tcp        0      0 :::22                       :::*                        LISTEN
    tcp        0      0 ::1:631                     :::*                        LISTEN
    tcp        0      0 ::1:25                      :::*                        LISTEN
    或者使用egrep命令
    netstat -tan |egrep "LISTEN[[:space:]]+$"

13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

    [[email protected] /]# useradd bash
    [[email protected] /]# useradd testbash
    [[email protected] /]# useradd basher
    [[email protected] /]# useradd nologin -s /sbin/nologin
    [[email protected] /]# grep "^\(\<[[: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:501:501::/home/bash:/bin/bash
    nologin:x:504:504::/home/nologin:/sbin/nologin
时间: 2024-08-25 10:34:38

马哥2016全新Linux+Python高端运维班-Linux grep命令及基本正则表示的相关文章

马哥2016全新Linux+Python高端运维班-Linux服务 DNS,httpd,加密通讯,vsftp,NFS,samba服务练习

本周作业内容: 1.详细描述一次加密通讯的过程,结合图示最佳. 一次加密通讯的过程: 首先Bob用单向加密的方法提取数据的特征码,用自己的私钥加密这段特征码,并附加到数据的后面. Bob用对称加密算法把数据及特征码整个进行加密. Bob用接收方的公钥加密对称密钥并附加到数据后面. Alice用私钥解密对称密钥. Alice用对称密钥解密出数据及加密的特征码. Alice用发送方的公钥解密特征码,并用相同的算法算出数据的特征码,比较两个特征码是否一致,若一致即可获得Bob的数据. 如图所示: 单向

马哥2016全新Linux+Python高端运维班-Linux用户创建及权限管理

第三周作业内容:1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | cut -d' ' -f1 | sort -u      centos     liu     root 2.取出最后登录到当前系统的用户的相关信息.     第一种方式:         [[email protected] ~]# last | head -n1         liu      tty8        

马哥2016全新Linux+Python高端运维班-Linux 网络基础管理,包管理,bash脚本练习

本周作业内容: 1.请描述网桥.集线器.二层交换机.三层交换机.路由器的功能.使用场景与区别.     集线器:又称"HUB"主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上.它工作于OSI(开放系统互联参考模型)参考模型第一层,即"物理层".     二层交换机:工作于OSI模块的第2层(数据链路层),故称为二层交换机.可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录

马哥2016全新Linux+Python高端运维班-Linux vim 末行模式,sed命令,基本bash脚本

本周作业内容: 1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#:%[email protected]^[[:space:]]\[email protected]#&@g384 substitutions on 384 lines#vim末行模式下%:表示全文相当于1,$s: 在末行模式下完成查找替换操作    s/要查找的内容/替换为的内容/修饰符    要查找的内容:可使用模式        替换

马哥2016全新Linux+Python高端运维班-Linux基础命令文件管理类及目录创建

周二作业内容: 1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 文件管理类命令:cp(复制),mv(移动),rm(删除) 1) cp:   cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE... cp SRC DEST 如果目标不存在,新建DEST,并将SRC中的内容填充至DEST 如果目录存在 如果DEST是文件

马哥2016全新Linux+Python高端运维班-Linux grep正则表达式练习,及find命令

本周作业内容: 1.显示当前系统上root.fedora或user1用户的默认shell:     [[email protected] home]# grep -E  "^(root|fedora|user1)\>" /etc/passwd |cut -d: -f1,7       root:/bin/bash                 user1:/bin/bash     fedora:/bin/bash     #本题使用扩展的正则表达式     #^:首行 |:或

马哥2016全新Linux+Python高端运维班第三周作业作答

                    马哥2016全新Linux+Python高端运维班第三周作业                                           1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | awk '{print $1 $NF}'| uniq -d     [[email protected] ~]# who     yicx     :0  

Linux+Python高端运维班第二次作业

Linux+Python高端运维班第二次作业 1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. [[email protected] ~]# who |cut -d" " -f1|uniq (unknown) root test1 [[email protected] ~]# who |cut -d" " -f1|sort -u root (unknown) wangyanglin 2.取出当前系统上被用户当作其默认shel

马哥2016全新Linux+Python高端运维班第四期-第五次作业

1.写一个脚本,完成如下功能 (1) 传递一个磁盘设备文件路径给脚本,判断此设备是否存在: (2) 如果存在,则显示此设备上的所有分区信息: [[email protected] ~]# vi week5-01.sh[[email protected]moban ~]# cat week5-01.sh#!/bin/bash#author:Wangyafei#read -p "Please enter a disk device path:" path while [ -z"$