腳本練習

腳本練習:

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 14:45
下一篇 2016-08-12 16:06

相關推薦

  • 用戶、組、權限 等相關命令

    用戶、組、文件權限屬性 1、用戶和組的配置文件 在Linux中用戶和組的配置文件主要為: /etc/passwd :存放用戶及其屬性的信息(名稱、GID、UID) /etc/group :存放組及其屬性信息 /etc/shadow :存放用戶密碼及其相關屬性 /etc/gshadow :存放組密碼及其相關屬性 (1)、/etc/passwd的格式 root:…

    Linux干貨 2017-07-29
  • CentOS 7 忘記root密碼的解決之道

    1、啟動時任意鍵暫停啟動,會出現如下界面: 2、按e鍵進入編輯模式,將光標移動linux16開始的行,添加內核參數 rd.break 3、按 ctrl+x 組合鍵啟動 4、查看各分區和文件系統的掛載情況,需要將 / 的模式改為 rw 5、當前系統上的 / 是在光盤上的,切換至掛載目錄下的 / ,才可以修改密碼 6、在 / 目錄下創建autorela…

    Linux干貨 2016-09-26
  • 高級文件系統管理之mdadm與lvm的創建

    ※配置配額系統 磁盤配額就是管理員可以為用戶所能使用的磁盤空間進行配額限制,每一用戶只能使用最大配額范圍內的磁盤空間,比如一些網盤就是基于這個功能來做的,分配給用戶固定的空間,花錢買,可以將空間設置的更大。 功能作用 磁盤配額可以限制指定賬戶能夠使用的磁盤空間,這樣可以避免因某個用戶的過度的使用磁盤空間造成其它用戶無法運行或工作甚至影響系統運行。這個功能不止…

    Linux干貨 2016-08-27
  • linux中的馬里奧之重定向與管道詳解

    你背單詞時 阿拉斯加的鱈魚正躍出水面 你算數學時 太平洋彼岸的海鷗振翅掠過城市上空 你晚自習時 極圖中的夜空散漫了五彩斑斕 但是少年你別著急 在你為自己未來踏踏實實地努力時 那些你感覺從來不會看到的景色 那些你覺得終身不會遇到的人 正一步步向你走來。          ——網易云熱評《Something Ju…

    2017-07-22
  • 8月3日課堂筆記

    課堂筆記 linux用戶和組管理(非常非常重要)    用戶管理和組管理各種相關的應用程序    簡單的管理命令 安全上下文:   每次對主機操作都是以發起一個進程來完成的,進程代表著人來執行操作,進程以其發起者的身份來運行;所以開機時有很多守護類的進程,我們應該以普通身份來運行,普通用戶通常都是系統用戶;從來不用登陸系統的;進程對文件的訪問權限,取決于發起…

    Linux干貨 2016-08-04
  • Linux程序包管理相關

    前言 首先說說一個軟件的誕生過程: 程序員用編程語言寫文本格式的源代碼,但是計算機只能讀懂二進制文件,那么就需要將源代碼轉換成二進制格式,這個過程稱為編譯。編譯用的工具稱為編譯器,編譯器有很多種,在Linux上常用gcc這個編譯器。利用編譯器,得到二進制格式的文件(二進制程序(Windows上.exe.msi,Linux.elf)、庫文件、配置文件、幫助文件…

    Linux干貨 2018-01-04

評論列表(1條)

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

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

欧美性久久久久