腳本練習

腳本練習:

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

#!/bin/bash
#功能:編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小
Zhujixinxi=`hostname`
Ipv4=`ifconfig | sed -n '2p'|sed -r 's@.*addr:(.*) .*B.*@\1@'`
Banben=`cat /etc/redhat-release`
Neihe=`uname -r`
Cpu=`lscpu | sed -n '/^Model name.*/p'|sed -r 's@.*[[:space:]]{3}+(.*$)@\1@'`
Neicun=`free -h |tr -s " "|cut -d " " -f2 | sed -n '2p'`
Yingpan=`fdisk -l |sed -n '2p'| sed -r 's@.* (.*) GB.*@\1@'`
echo 'hostname :' $Zhujixinxi
echo 'IPv4:' $Ipv4
echo 'OS version :' $Banben
echo 'Kernel version :' $Neihe
echo 'CPU :' $Cpu
echo 'memory:' $Neicun
echo "harddisk: $Yingpan"
[root@qzx bin]# vim systeminfo.sh
[root@qzx bin]# ./systeminfo.sh
hostname : qzx.centos6.8
IPv4: 10.1.253.75
OS version : CentOS release 6.8 (Final)
Kernel version : 2.6.32-642.el6.x86_64
CPU : Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz
memory: 1.8G

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

#!/bin/bash
#實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中
echo '開始備份/etc。。。。。。。'
cp -a /etc /root/${date +%F}
echo '備份結束'
[root@qzx bin]# bash backup.sh
開始備份/etc。。。。。。。
備份結束
[root@qzx bin]# ls /root/
2016-08-11       Desktop    hehe                Pictures   user.txt

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

#!/bin/bash
#顯示當前硬盤分區中空間利用率最大的值
max=`df |tr -s ' ' '%'|cut -d '%' -f5|sort -n |tail -1`
echo "當前硬盤分區中空間利用率最大的值為:$max"
[root@qzx bin]# ./disk.sh 
當前硬盤分區中空間利用率最大的值為:52
#!/bin/bash
#顯示正連接本主機的每個遠程主機的IPv4地址和連接數,并按連接數從大到小排序
links=`netstat -nt |tr -s ' ' |tail -n +3 | cut -d " " -f5 | sed -r 's@(.*):.*@\1@'|sort |uniq -c`
echo "$links"
[root@qzx bin]# bash link.sh
      2 10.1.250.28

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

#!/bin/bash
#/etc/passwd文件中的第10個用戶和第20用戶的ID之和
sumid=`sed -n '10p;20p' /etc/passwd|cut -d : -f 3 |tr '\n' '+' | sed -r 's@(.*)\+@\1\n@'| bc`
echo "/etc/passwd文件中的第10個用戶和第20用戶的ID之和:$sumid"
[root@qzx bin]# bash sumid.sh
/etc/passwd文件中的第10個用戶和第20用戶的ID之和:80

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

##!/bin/bash
#傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和
space1=`grep '^$' $1 | wc -l`
space2=`grep '^$' $2 | wc -l`
let Sumspace=$space1+$space2
echo "兩個文件中所有空白行之和: $Sumspace"
[root@qzx bin]# bash  sumspace.sh /etc/rc.d/init.d/functions ../.bash_profile 
兩個文件中所有空白行之和: 109

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

#!/bin/bash
#統計/etc, /var, /usr目錄中共有多少個一級子目錄和文件
etcnum=`ls -A -1 /etc/ |wc -l`
varnum=`ls -A -1 /var/ |wc -l`
usernum=`ls -A -1 /usr/ |wc -l`
let sum=$etcnum+$varnum+$usernum
echo "/etc, /var, /usr目錄中共有多少個一級子目錄和文件:$sum"
[root@qzx bin]# bash sumfile.sh
/etc, /var, /usr目錄中共有多少個一級子目錄和文件:299

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

#!/bin/bash
#接受一個文件路徑作為參數;如果參數個數小于1,則提示用戶“至少應該給一個參數”,并立即退出;如果參數個數不小>于1,則顯示第一個參數所指向的文件中的空白行數
[[ $# -lt 1 ]] && echo "至少應該輸入一個參數" || (grep '^$' $1 | wc -l)
[root@qzx bin]# bash argsnum.sh /etc/rc.d/init.d/functions 
105
[root@qzx bin]# bash argsnum.sh 
至少應該輸入一個參數

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

#!/bin/bash
#接受一個主機的IPv4地址做為參數,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,
則提示用戶“該IP地址不可訪問”
ping -w1 -c1 "$1" &>/dev/null
Pingchenggong=`echo $?`
[[ $Pingchenggong -eq  0 ]] && (echo "該IP地址可訪問") || (echo "該IP地址不可訪問")
 [root@qzx bin]# bash hostping.sh 10.1.253.1
 該IP地址可訪問
 [root@qzx bin]# bash hostping.sh 10.1.253.155
 該IP地址不可訪問

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

#!/bin/bash
#判斷當前用戶對/tmp/fiile1文件是否不可讀且不可寫
(([ ! -r /tmp/flie1 ])  && ([ ! -w /tmp/file1 ])) && (echo "此用戶對/tmp/file1文件不可讀寫" )
 [qzx@qzx bin]$ /tmp/per.sh 
 此用戶對/tmp/file1文件不可讀寫
 [qzx@qzx bin]$ ll /tmp/file1 
 -rw-rw----. 1 root root 5 Aug 12 10:57 /tmp/file1

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

#!/bin/bash
#實現禁止和允許普通用戶登錄系統。
[ -f /etc/nologin ] && (echo "普通用戶已不能登錄")|| (touch /etc/nologin)

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

#!/bin/bash
#接受一個主機的IPv4地址做為參數,先判斷是否合格IP,否,提示IP格式不合法并退出,是,測試是否可連通。如果能ping通,則提示>用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問”
echo $1 | egrep -o '([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.([0-9]|([1-9][0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\>'&>/dev/null
[ $? -ne  0 ] && echo "這是個不合格的IP" && exit 213
ping -w1 -c1 "$1" &>/dev/null &&  (echo "該IP地址可訪問") || (echo "該IP無法訪問")
 [root@qzx bin]# bash  pinghost.sh 10.1.0.755
 這是個不合格的IP
 [root@qzx bin]# bash  pinghost.sh 10.1.0.255
 該IP無法訪問
 [root@qzx bin]# bash  pinghost.sh 10.1.0.2
 該IP無法訪問
 [root@qzx bin]# bash  pinghost.sh 10.1.0.1
 該IP地址可訪問

12、計算1+2+3+…+100的值

[root@qzx ~]# seq 1 100 |tr '\n' '+' | egrep -o '.*[^+]' |bc
5050

13、計算從腳本第一參數A開始,到第二個參數B的所有數字的總和,判斷B是否大于A,否提示錯誤并退出,是則計算之

#!/bin/bash
#計算從腳本第一參數A開始,到第二個參數B的所有數字的總和,判斷B是否大于A,否提示錯誤并退出,是則計算之
[ $2 -gt $1 ] && (seq $1 $2 |tr '\n' '+' | egrep -o '.*[^+]' |bc) || (echo "輸入的數字不正確")
 [root@qzx bin]# bash  numA_B.sh  100 1
 輸入的數字不正確
 [root@qzx bin]# bash  numA_B.sh 1  100
 5050

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

(1)
qzxqzx
上一篇 2016-08-12
下一篇 2016-08-12

相關推薦

  • 計算機的組成和其功能

    圖:計算機組成架構 計算機由硬件和軟件組成 硬件部分: CPU:又稱中央處理器,整個系統最高執行單元,執行各種運算,控制電腦自動協調地完成各種操作。 主板:它把計算機的各個部件緊密的連接在一起,各個部件通過主板進行數據傳輸,計算機重要的“交通樞紐”都在主板上,他的工作穩定性影響整機的工作穩定性。因同CPU的插腳和性能不同,所以針對不同的CPU也有不同的主板?!?/p>

    Linux干貨 2016-08-08
  • 字符串處理

      一.字符串處理 v bash 的字符串處理工具: (一)字符串切片: ${#var}: 返回字符串變量var 的長度 例: [root@lxc ~]# a="     " [root@lxc ~]# echo ${#a} 5 [root@lxc ~]# ${var:offse…

    Linux干貨 2016-11-24
  • 加油吧!少年!—至我和我M25期的伙伴

    引用 衣帶漸寬終不悔,為伊消得人憔悴。—王國維《人間詞話》 轉眼已到了27歲的年紀,不知道自己是否還稱得上少年。公交上讓座被小朋友成為叔叔也都是很多年的事了。哪怕再有一顆少年心現在也要肩負起整個家庭的責任。 從畢業已工作了將近六個年頭,無聊的工作平凡的薪水已經使我厭倦。閉上眼睛以后需要贍養四個老人,還要照顧孩子以后這些難題映入腦海。曾經以為遙遠的…

    Linux干貨 2017-07-11
  • 分析命令中含有e2fs

    分析命令中含有e2fs 目  錄 1、mke2fs  2、tune2fs 3、dump2fs 4、e2fsck 這周學到了幾條命令,超級納悶為什么這些命令都帶有e2fs ,看不懂。畢竟在我的認知中linux的命名大部分都是見名知義,例如history(查看歷史命令),fdisk (分區),反觀這些命令很長而且還是奇怪的…

    Linux干貨 2017-08-20
  • ?Linux進程管理與性能分析

    Linux進程管理與性能分析 概述 系統維護的一個重要工作就是監控Linux系統的運行狀態是否正常,分析系統資源的使用情況,進而對系統進行優化,提高其性能。在實際環境中,系統穩定性尤為重要,可以說系統的穩定性關系到企業的存亡。因此,第一時間掌握CPU、Memory、IO、Network的等系統資源的狀態則可以在系統出現問題時及時解決,把損失降到最低。&nbs…

    Linux干貨 2016-09-11
  • 中秋干貨之系統啟動修復

    在使用CentOS系統時,難免會有誤操作而導致機器不能正常啟動,這里介紹了多種啟動失敗的原因和修復的方法。 grub損壞類 grub 1stage 被破壞使用dd擦寫MBR前446字節,即抹去stage1階段–[root@_2_ ~]# reboot #重啟–啟動失敗,找不到系統,這時只能借助光盤進入修復模式,重新安裝grub&#82…

    Linux干貨 2016-09-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-15 16:52

    作業完成的很好,但是總結沒寫,這是需要改進的地方

欧美性久久久久