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

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

	sed [OPTION]...  'script'  [input-file] ...
			script:
				地址定界编辑命令
				
			常用选项:
				-n:不输出模式空间中的内容至屏幕;
				-e script, --expression=script:多点编辑;
				-f  /PATH/TO/SED_SCRIPT_FILE
					每行一个编辑命令;
				-r, --regexp-extended:支持使用扩展正则表达式;
				-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;
			
				~]# sed  -e  's@^#[[:space:]]*@@'   -e  '/^UUID/d'  /etc/fstab
			
			地址定界:
				(1) 空地址:对全文进行处理;
				(2) 单地址:
					#:指定行;
					/pattern/:被此模式所匹配到的每一行;
				(3) 地址范围
					#,#:
					#,+#:
					#,/pat1/
					/pat1/,/pat2/
					$:最后一行;
				(4) 步进:~
					1~2:所有奇数行
					2~2:所有偶数行
					
			编辑命令:
				d:删除;
				p:显示模式空间中的内容;
				a  \text:在行后面追加文本“text”,支持使用\n实现多行追加; 
				i  \text:在行前面插入文本“text”,支持使用\n实现多行插入; 
				c  \text:把匹配到的行替换为此处指定的文本“text”;
				w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;
				r  /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
				=:为模式匹配到的行打印行号;
				!:条件取反;
					地址定界!编辑命令;
				s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
					替换标记:
						g:全局替换;
						w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
						p:显示替换成功的行;

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

	sed 's/^[[:space:]]//g' /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

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

	echo /etc/fstab/ | sed -r 's@^/.*/([^/]+)/?$@\1@g'
	echo /etc/fstab/ | sed -r 's@[^/]+/?$@@g'

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

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

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

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

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

	filelist=$(ls /var/log/*.log)
	for line in ${filelist[*]};do
	        echo $line
	        wc -l ${line}
	done


	#!/bin/bash

	filelist=$(ls /var/log/*.log)
	for i in $(seq 0 $[${#filelist[*]}-1]);do
	        echo ${filelist[$i]}
	        wc -l ${filelist[$i]}
	done

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

	#!/bin/bash
	#
	echo "student Name     student NO"
	for i in {1..10};do
	stu[$i]=stu_$i
	echo "${stu[$i]}             $i"
	done

	j=$[$RANDOM % 10+1]
	echo "Random picked student No:$j"
	echo "The student name is :${stu[$j]}"
                                

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

	#!/bin/bash
	#
	read -p "Please Input student Numbers:" num
	echo "student Name     student NO"
	for ((i=1;i<=$num;i++))do
	stu[$i]=stu_$i
	echo "${stu[$i]}             $i"
	done

	j=$[$RANDOM % $num+1]
	echo "Random picked student No:$j"
	echo "The student name is :${stu[$j]}"

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

	vim /etc/sudoers
	centos  ALL=(root)      NOPASSWD:/sbin/fdisk,/sbin/mke2fs,/sbin/mkfs

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

	vim /etc/sudoers
	gentoo  ALL=(root)      lvm

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

	vim /etc/ssh/sshd_config 
	UsePAM noUsePAM yes  #开启Pam模块认证
	vim /etc/pam.d/sshd
	/lib64/security/pam_time.so 确保pam_time.so存在 
	vim /etc/pam.d/sshd
	account    required     pam_time.so
	vim /etc/security/time.conf
	*;*;*;MoTuWeThFr0900-1800

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

	[root@localhost ~]# vim /etc/sshd_userlist
	root
	centos
	gentoo

	chmod 600 /etc/sshd_userlist
	chown root /etc/sshd_userlist
	vim /etc/pam.d/sshd 
	#auth       required     pam_listfile.so item=user sense=allow file=/etc/sshd_userlist onerr=succeed

原创文章,作者:N22_上海_长清,如若转载,请注明出处:http://www.178linux.com/63630

(0)
N22_上海_长清N22_上海_长清
上一篇 2016-12-14 18:21
下一篇 2016-12-14 18:22

相关推荐

  • find总结及练习

    文件查找: 在文件系统上查找符合条件的文件; 文件查找:locate, find非实时查找(数据库查找):locate 实时查找:find locate: 依赖于事先构建的索引;索引的构建是在系统较为空闲时自动进行(周期性任务);手动更新数据库(updatedb); 索引构建过程需要遍历整个根文件系统,极消耗资源; 工作特点: 查找速度快; 模糊查…

    Linux干货 2016-07-22
  • rsyslog日志系统

    一、前言  什么是日志?    日志就是历史事件,按时间序列将发生的事件予以记录;日志记录信息记录的是事件的发生时间以及事件内容  Linux下记录日志的系统:    syslog:是CentOS 5.0系统上使用的日志系统,有两类日志,分别是syslogd、klogd;    …

    Linux干货 2015-06-15
  • 每日一练 —8.4 文本处理工具,正则表达式

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

    Linux干货 2016-08-15
  • N26 第二周

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。  [1]mkdir : make directories            mkdir [OPTION]… DIRECTORY… &n…

    Linux干货 2017-02-05
  • shell 脚本 【上】

    shell 脚本编程 【上】 程序就是指令加上数据组合而成 程序编程风格:  过程式:以指令为中心,数据服务于指令  象式:以数据为中心,指令服务于数据  编程语言:  低级:汇编  高级:  编译:高级语言–>编译器–>目标代码 java,C#  解释…

    Linux干货 2016-08-15
  • 谷歌三大核心技术(一)The Google File System中文版

    摘要 我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的、可伸缩的分布式文件系统。GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量客户机提供了高性能的服务。 虽然GFS的设计目标与许多传统的分布式文件系统有很多相同之处,但是,我们的设计还是以我们对自己的应用的负载情况和技术环境的分析为基础的,不管现在还是…

    Linux干货 2015-04-13

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-23 00:34

    赞,第7题可以用格式化的方式来做,而不是敲很多空格~