shell腳本編寫-1練習題

1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小

#!/bin/bash

echo “the hostname is:`hostname`”

echo “the ip address is:`ifconfig | sed –n ‘2p’ |sed 's/^.*inet//'|sed 's/net.*//'`”

echo “the op is: `cat /etc/centos-release`”

echo “the kernel version is: `uname -r`”

echo “the cpu type is: `lscpu |sed -n '13p'|sed 's/^.*://'|tr -s ' '`”

echo “the memory size is: `free –m |sed -n '2p'|sed 's/^.*://'|tr -s ' '|cut -d" " -f2`MB”

echo “the disk size is:`fdisk -l|sed -n '2p'|sed 's/^.*://'|sed 's/\,.*//'|tr –d ' '`”

2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中

#!/bin/bash

cp –a /etc /root/etc`date +%F`

3、編寫腳本/root/bin/disk.sh,顯示當前硬盤分區中空間利用率最大的值

#!/bin/bash

echo “the lagerest disk partition is`df| grep 'sda'| tr -s ' ' ':'| cut -d: -f5 |sort |tail -1`”

4、編腳本/root/bin/links.sh,顯示正連接本主機每個遠程主機的IPv4地址和連接數,并按連接數從大到小排序

#!/bin/bash

netstat -nt |tr -s ' '|cut -d' ' -f5 |cut -d: -f1 |grep [0-9]|sort |uniq -c|sort -nr

5、寫一個腳本/root/bin/sumid.sh,計算/etc/passwd文件中的第10個用戶和第20用戶的ID之和

#!/bin/bash

A10=`cat /etc/passwd|sed –n ‘10p’|cut –d: -f3`

A20=`cat /etc/passwd|sed –n ‘20p’|cut –d: -f3`

let sum=A10+A20

echo $sum

6、寫一個腳本/root/bin/sumspace.sh,傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和

#!/bin/bash

A=`grep “^[[:space:]]*$” $1|wc -l`

B=`grep “^[[:space:]]*$” $2|wc -l`

let sum=A+B

echo $sum

7、寫一個腳本/root/bin/sumfile.sh,統計/etc, /var, /usr目錄中共有多少個一級子目錄和文件

#!/bin/bash

A=`ls –d /etc/* |wc -l`

B=`ls –d /var/* |wc -l`

C=`ls –d /usr/*|wc -l`

let sum=A+B+C

echo $sum

8、寫一個腳本/root/bin/argsnum.sh,接受一個文件路徑作為參數;如果參數個數小于1,則提示用戶“至少應該給一個參數”,并立即退出;如果參數個數不小于1,則顯示第一個參數所指向的文件中的空白行數

#!/bin/bash

[[ $# -lt 1 ]] && echo "less one arg"||echo "`grep '^[[:space:]]*$' $1 |wc -l`"

9、寫一個腳本/root/bin/hostping.sh,接受一個主機的IPv4地址做為參數,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問”

#!/bin/bash

ping -c1 -W1 $1 &> /dev/null && echo ping successfull || echo ping failture

10、判斷硬盤的每個分區空間和inode的利用率是否大于80,如果是,發郵件通知root磁盤滿

#!/bin/bash

maxc=`(df;df -i)|grep "sd"|tr -s ' ' |cut -d' ' -f5|grep -o "[[:digit:]]\+"|sort -nr|head -1`

[ $maxc -ge 80 ] && mail -s “diskwarning” root < ~/fi || exit

11、指定文件做為參數,判斷文件是否為.sh后綴,如果是,添加x權限

方法一:

#!/bin/bash

A=`echo $1 | grep -o "\.[^.]\+$"`

[[ "$A" == ".sh" ]] && chmod +x $1 || echo xxf

方法二:

#!/bin/bash

read -p "please input the file:" a

A1=`echo $a | grep -o "\.[^.]\+$"`

[[ "$A1" == ".sh" ]] && chmod +x $a || echo xxf

12、判斷輸入的IP是否為合法IP

#!/bin/bash

read -p "please input ip adress:" a

[[ $a =~

(([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])\> ]] && echo legal || echo ilegal

13、計算1+2+3+…+100

#!/bin/bash

a=`echo {1..100} |tr ' ' '+'`

let sum100=a

echo $sum100

14、輸入起始值A和最后值B,計算從A+(A+1)…+(B-1)+B的總和

#!/bin/bash

echo “the total count is:`seq + $1 $2 |bc`”

15、chmod -rw /tmp/file1,編寫腳本/root/bin/per.sh,判斷當前用戶對/tmp/file1文件是否不可讀且不可寫

#!/bin/bash

[ ! -r /tmp/file1 -a ! -w /tmp/file1 ] && echo “`whoami`can’t rw” || echo “`whoami`can r or w”

[ ! \(-r /tmp/file1 -o -w /tmp/file1\) ] && echo “`whoami`can’t rw” || echo “`whoami`can r or w”

16、編寫腳本/root/bin/nologin.sh 和login.sh,實現禁止和允許普通用戶登錄系統

禁止普通用戶登錄:

#!/bin/bash

[ -e /etc/nologin ] && exit || touch /etc/nologin

echo "disable user login "

允許普通用戶登錄:

#!/bin/bash

[ -e /etc/nologin ] && rm -f /etc/nologin

echo "enable user login "

原創文章,作者:18612763863,如若轉載,請注明出處:http://www.www58058.com/35557

(0)
1861276386318612763863
上一篇 2016-08-15 09:24
下一篇 2016-08-15 09:24

相關推薦

  • keepalived高可用haproxy配合varnish實現wordpress的動靜分離

    haproxy和nginx都可以作為七層和四層反代服務器對外提供服務,此文通過haproxy和keealived配置varnish搭建wordpress的動靜分離站點 一、實驗環境 五臺虛擬機: haproxy-1:搭建haproxy和keepalived服務,ip地址:192.168.11.176 haproxy-2:搭建haproxy和keepalive…

    2017-07-03
  • 博客作業1

    一、linux 常用文件管理命令有哪些?其常用使用方法及相關實例演示 1、文件操作命令 (1).pwd       功能:顯示當前目錄       實例: ?    #pwd (2).cd           功能:改變當前目錄 …

    Linux干貨 2016-06-23
  • 馬哥教育網絡班21期第2周課程練習

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。     復制命令:cp         cp [OPTION]… [-T] SOURCE DEST     &…

    Linux干貨 2016-07-16
  • Linux下inode理解及軟、硬鏈接初探

    1、Inode是什么? 要理解inode,要從文件儲存說起。 文件由元數據和數據構成。 文件儲存在硬盤上,最小的存儲單位叫做“扇區(Sector)”。每個扇區存儲512字節。操作系統讀取硬盤時,不會一個扇區一個扇區地讀取,這樣非常低效;而是一次性連續讀取多個扇區,即一次性讀取一個“塊(block)”。“塊”由多個扇區組成,常見的大小有1K、2K、4K等,其中…

    Linux干貨 2016-07-29
  • 用戶和組的相關配置文件

      用戶,是計算機識別使用者身份的一種唯一使用標識。 而現實生活中為了方便人類記憶使用等,用戶名往往是用便于人類識別的語言來記錄的。但事實上計算機并不對人類語言敏感,所以有必要把人類語言跟機器語言對應上。于是,linux給每一個創建用戶提供了一個UID。當使用用戶名登錄時,系統換自動對應UID來識別該用戶身份。 而用戶名與UID的對應信息就儲存在一…

    Linux干貨 2016-10-23
  • day6作業

    1、創建用戶gentoo,附加組為bin和root,默認shell為 /bin/csh,注釋信息為"Gentoo Distribution"     2、創建下面的用戶、組和組成員關系 名字為admins 的組 用戶natasha,使用admins …

    系統運維 2016-08-08
欧美性久久久久