馬哥教育網絡班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.www58058.com/63630

(0)
N22_上海_長清N22_上海_長清
上一篇 2016-12-14
下一篇 2016-12-14

相關推薦

  • 作業–權限管理

    1、當用戶wangcai對/testdir目錄無寫權限時,該目錄下的只讀文件file1是否可修改和刪除? [root@liang testdir]# su wangcai [wangcai@liang testdir]$ ll -a 總用量 8 drwxr-xr-x. &nbsp…

    Linux干貨 2016-08-05
  • Linux用戶、組和權限管理

    知識框架圖 學習筆記 用戶和組 UID root:0 系統用戶:1-499、1-999 普通用戶:500+、1000+ GID 管理員組:0 系統組:1-499、1-999 普通組:500+、1000+ 安全上下文 進程:運行中的程序 進程所能訪問資源的權限取決于進程運行用戶本身 組的類別 主要組 用戶有且只能有一個主要組 組名=用戶名,組中只能有一個用戶 …

    2018-03-17
  • 馬哥教育網絡班28期—第1、2天知識點概略

    沒做隨堂筆記,根據記憶手打,看看自己能記住多少。

    Linux干貨 2017-12-03
  • 10分鐘學會理解和解決MySQL亂碼問題

    本文將詳細介紹MySQL亂碼的成因和具體的解決方案。在閱讀本文之前,強烈建議對字符集編碼概念還比較模糊的同學 閱讀下博主之前對相關概念的一篇科普:十分鐘搞清字符集和字符編碼 MySQL出現亂碼的原因 要了解為什么會出現亂碼,我們就先要理解:從客戶端發起請求,到MySQL存儲數據,再到下次從表取回客戶端的過程中,哪些環節會有編碼/解碼的行為。為了更好的解釋這個…

    2015-03-17
  • python快速入門之數據類型

        Python 是 90 年代初由 Guido Van Rossum 為了打發圣誕節而創建的語言。如今它已是當前最流行的程序語言之一.     Python的關鍵要素有以下幾點:1.基本數據類型;2.對象引用;3.組合數據類型;4.邏輯操作符;5.控制流語句;6.算數操作符…

    Python干貨 2015-12-10
  • AWK基礎用法

    AWK: print 例子:給沒個/etc/passwd下的用戶都打招呼hello 答案: awk ‘{print “hello:”$1}’ /etc/passwd 內建變量 FS : 輸入分隔符 OFS: 輸出分隔符 RS : 行輸入分隔符 ORS: 行輸出分割符 NF : 字段數 NR : 行號數 FNR: 每個文件的行號數 ARGC: 參數個數 ARG…

    Linux干貨 2017-05-22

評論列表(1條)

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

    贊,第7題可以用格式化的方式來做,而不是敲很多空格~

欧美性久久久久