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

1、总结sed和awk的详细用法;

sed的详细用法

awk的详细用法

2、删除/boot/grub/grub.conf文件中所有行的行首的空白字符;

# sed 's/^[[:space:]]*//' /boot/grub/grub.conf

3、删除/etc/fstab文件中所有以#开头,后跟至少一个空白字符的行的行首的#和空白字符;

# sed 's/^#[[:space:]]\+//' /etc/fstab

4、把/etc/fstab文件的奇数行另存为/tmp/fstab.3;

# sed 'n;d' /etc/fstab > /tmp/fstab.3
# awk '{if (NR%2==0) next; print}' /etc/fstab > /tmp/fstab.3

5、echo一个文件路径给sed命令,取出其基名;进一步的,取出其路径名;

# echo "/tmp/test/fstab" | sed 's/[^/]\+\/\?$//'
# echo "/tmp/test/fstab" | sed 's/\(\/.*\/\)//'

6、统计指定文件中所有行中每个单词出现的次数;

# awk '{for(i=1;i<=NF;i++){count[$i]++}}END{for(j in count) {print j,count[j]}}' /etc/fstab

7、统计当前系统上所有tcp连接的各种状态的个数;

# netstat -tan | awk '/^tcp\>/{test[$NF]++}END{for(j in test) { print j,test[j]}}'

8、统计指定的web访问日志中各ip的资源访问次数;

# awk '{ip[$1]++}END{for(i in ip) {print i,ip[i]}}' /var/log/httpd/access_log

9、写一个脚本:定义一个数组,数组元素为/var/log目录下所有以.log结尾的文件的名字;显示每个文件的行数;

#!/bin/bash
declare -a test
test=$(ls /var/log/*.log)
for i in $(seq 0 $[${#test[*]}-1]); do
    wc -l ${test[$i]}
done

10、写一个脚本,能从所有同学中随机挑选一位同学回答问题;进一步的,可接受一个参数,作为要挑选的同学的个数;

从给定的同学中随机挑选一位回答问题

#!/bin/bash
echo "Please enter some name of students,and the separator is space!!!" 
read -a student
random=$((RANDOM % ${#student[@]}))
echo "Please ${student[$random]} answer the question!"

可接受一个参数,作为要挑选同学的个数

#!/bin/bash
echo "Please enter some name of students,and the separator is space!!!" 
read -a student
read -p "Please enter the number of students to answer question !" num
if [ $num -gt ${#student[@]} ]; then
    echo "The number should be smaller than the total of you enter!"
    exit
fi

echo "The list to answer the question is:"
for ((i=0;i<num;i++)); do
    random=$((RANDOM % ${#student[@]}))
    echo ${student[$random]}
done

11、授权centos用户可以运行fdisk命令完成磁盘管理,以及使用mkfs或mke2fs实现文件系统管理;

# visudo
Cmnd_Alias DISK = /sbin/fdisk, /sbin/mkfs, /sbin/mke2fs
centos  ALL=(root)  DISK

12、授权gentoo用户可以运行逻辑卷管理的相关命令;

# visudo
Cmnd_Alias LVMMANAGE = /sbin/*create, /sbin/*reduce,/sbin/*scan, /sbin/*display, /sbin/fsck, /sbin/mke2fs
gentoo  ALL=(root)  LVMMANAGE

13、基于pam_time.so模块,限制用户通过sshd服务远程登录只能在工作时间进行;

# vim /etc/pam.d/sshd
account required pam_time.so -->//要位于文件的第一行
# vim /etc/security/time.conf 
*;*;*;MoTuWeThFr0900-1800 -->//表示工作时间的9点到下午6点

14、基于pam_listfile.so模块,定义仅某些用户,或某些组内的用户可以登录系统。

# vim /etc/sshd_userlist -->//在此文件中添加一些用户来登录系统
# vim /etc/pam.d/sshd
auth required pam_listfile.so item=user sense=allow file=/etc/sshd_userlist onerr=succeed

原创文章,作者:Jeason,如若转载,请注明出处:http://www.178linux.com/58298

(0)
JeasonJeason
上一篇 2016-11-14
下一篇 2016-11-14

相关推荐

  • keepalived+lvs 实现站点高可用

    lvs实现负载均衡
    keepalived 解决 director单点和realserver监控检测

    2017-12-13
  • First Day

    learning

    2018-03-26
  • 马哥Linux第四周作业

    1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限 ~]# cp -r /etc/skel/ /home/user1 ~]# chmod -R g0-rwx /home/user1/ 2.编辑/etc/group文件,添加组hadoop 编辑/etc/group 写入:hado…

    2018-01-07
  • 课堂练习及课后作业(0805文本处理工具)

    课堂练习: 1、找出ifconfig命令结果中本机的所有IPv4地址 2、查出分区空间使用率的最大百分比值 3、查出用户UID最大值的用户名、UID及shell类型 4、查出/tmp的权限,以数字方式显示 5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序 grep 1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式…

    Linux干货 2016-08-07
  • bash脚本编程

    Linux脚本编程中bash常用的测试类型:                 整数测试:       -gt greater than  大于    …

    Linux干货 2016-08-18
  • Linux基础知识(六)

    本问主要讲述Linux的基础知识,具体包一下内容: 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp sed "s/^[[:space:]]\?/#/g" /tmp/rc.sysini…

    Linux干货 2016-10-30

评论列表(1条)

  • 马哥教育
    马哥教育 2016-11-16 15:47

    写的很好,排版也很棒,希望能够再接再厉