马哥教育网络班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

评论列表(1条)

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

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