2016-08-10作業

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

#!/bin/bash

echo "hostname is `hostname`"

echo "IPv4 is `ifconfig | sed -n '2p'| sed 's/^[[:space:]]\+inet[[:space:]]\+//' | sed 's/[[:space:]]\+net.*//'`"

echo "OS version is `cat /etc/centos-release`"

echo "OS kernel is `uname -r`"

echo "CPU NO is `uname -m`"

echo "`cat /proc/meminfo | sed -n '1p'`"

echo "sda size is `lsblk | sed -n '2p' | tr -s ' ' '%' | cut -d % -f 4`"

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

#!/bin/bash

cp -r /etc/ /root/etc`date +%F`

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

#!/bin/bash

echo "disk used biggest is `df | grep '^\/dev\/sd.*' | tr -s ' ' ':' | cut -d : -f 5 | sort -nr | sed -n '1p'`"

 

4、編寫腳本/root/bin/links.sh,顯示正連接本主機的每個遠程主機的IPv4

#!/bin/bash

netstat -nt | grep '[0-9]\.' | tr -s ' ' ':' | cut -d: -f6 | sort | uniq -c | sort –nr

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

#!/bin/bash

uid_10="`sed -n '10p' /etc/passwd | cut -d: -f3`"

uid_20="`sed -n '20p' /etc/passwd | cut -d: -f3`"

echo "sum is $[uid_10+uid_20]"


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

#!/bin/bash

count1="`grep '^$' $1 | wc -l`"

count2="`grep '^$' $2 | wc -l`"

echo "sum count is $[count1+count2]"

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

#!/bin/bash

etc_count="`ls -d /etc/* | wc -l`"

var_count="`ls -d /var/* | wc -l`"

usr_count="`ls -d /usr/* | wc -l`"

 

echo "/etc count is $etc_count"

echo "/var count is $var_count"

echo "/etc count is $usr_count"

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

參數所指向的文件中的空白行數

#!/bin/bash

[ $# -lt 1 ] && echo "one arg at least" || echo "`grep -c '^$' $1`"

 

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

IP地址不可訪問”

#!/bin/bash

read -p "please input IPv4:" ip

#echo "$ip"

ping -c1 -w1 $ip &> /dev/null && echo "$ip can access" || echo "$ip can not access"


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

#!/bin/bash

 

for i in $(df | grep '\/dev\/sd.*' | tr -s ' ' ':' | cut -d: -f1,5 | sed 's/%//'); do

#  echo "this is $i"

  sd_name=`echo $i | cut -d: -f1`

  sd_use=`echo $i | cut -d: -f2`

  [ $sd_use -gt 70 ] && echo "$sd_name disk space used $sd_use%, mail to system admin" || echo "$sd_name disk space used $sd_use%,ok"

done

 

echo "#####################################################"

 

for i in $(df -i | grep '\/dev\/sd.*' | tr -s ' ' ':' | cut -d: -f1,5 | sed 's/%//'); do

#  echo "this is $i"

  sd_name=`echo $i | cut -d: -f1`

  sd_use=`echo $i | cut -d: -f2`

  [ $sd_use -gt 70 ] && echo "$sd_name disk inode used $sd_use%, mail to system admin" || echo "$sd_name disk inode used $sd_use%,ok"

done

 

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

#!/bin/bash

read -p "please input file name:" file_name

 

if [ ! -e $file_name ]; then

  echo "$file_name is not exist"

  exit

fi

 

if [[ $file_name =~ .sh ]]; then

  echo "suffix is .sh"

  if [ ! -x $file_name ]; then

    echo "$file_name add x"

    chmod +x $file_name

  else

    echo "$file_name have x already"

  fi

else

  echo "suffix is not .sh"

fi

 

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

#!/bin/bash

 

read -p "please input ip:" ip

 

ip=`echo $ip | sed 's/^[[:space:]]\+//' | sed 's/[[:space:]]\+$//'`

#echo $ip

 

echo $ip | egrep -o "(\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>)" &> /dev/null && echo "ip is ok" || echo "ip is not ok"

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

[root@localhost bin]# seq -s '+' 1 100 | bc

5050

 

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

#!/bin/bash

read -p "please input A:" a

if [[ ! $a =~ [1-9][0-9]* ]]; then

  echo "A please input Integer"

  exit

fi

 

read -p "please input B:" b

if [[ ! $b =~ [1-9][0-9]* ]]; then

  echo "B please input Integer"

  exit

fi

 

if [[ $a < $b ]]; then

  echo "`seq -s '+' $a $b | bc`"

else

  echo "sorry, B bigger than A"

fi

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

(0)
songzizhesongzizhe
上一篇 2016-08-15 12:12
下一篇 2016-08-15 14:31

相關推薦

  • Linux 基礎(6)—— 權限

    修改所屬人,所屬組                文件的 r w x 權限            修改文件的權限chmod          umask &nb…

    2017-07-27
  • Liunx課前準備

    ? ? ? ? 經過與家人的溝通終于來到了北京,開始了期待已久的Linux學習之路。 ? ?今天是講課前第一天,和上學時代一樣,各位同學做了自我介紹,仿佛又置身于10年前的課堂,同學們有序的介紹著自己,今天我們坐到了一起就為了同一個夢想。之前還有很大的顧慮:學不會怎么辦?出來找不到工作怎么辦?……但聽了大家的介紹后發現很多同學與我一樣,所有的顧慮瞬間消失,希…

    2018-03-26
  • X86平臺系統啟動流程 (Blog 9)

    POST –> BootSeqence(BIOS) –> Bootloader(MBR) –> Kernel(initrd) –> init(/etc/inittab)

    2017-11-27
  • 運維挖坑埋坑之旅—-413 Request Entity Too Large

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1575160        好久沒寫博文了,天天忙的喘不過來氣。最近是該總結總結前段時間的工作了,順便緩解下這兩天的霉…

    Linux干貨 2016-08-15
  • 數據結構-線性表

    1. 線性表:n個數據元素的有序集合。 線性表是一種常用的數據結構。在實際應用中,線性表都是以棧、隊列、字符串、數組等特殊線性表的形式來使用的。由于這些特殊線性表都具有各自的特性,因此,掌握這些特殊線性表的特性,對于數據運算的可靠性和提高操作效率都是至關重要的?! 【€性表是一個線性結構,它是一個含有n≥0個結點的有限序列,對于其中的結點,有且僅有一個開始結點…

    Linux干貨 2015-04-07
  • Linux如何進行分區和目錄管理

    第七周作業   1、創建一個10G分區,并格式為ext4文件系統: 1、要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包括acl; ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1 2、掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,縣不更新…

    2017-09-18
欧美性久久久久