shell 腳本之基礎篇作業

shell

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:?顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小
echo?"The?hosname?is:?$(hostname)"
echo?"The?kernel?version?is:?$(uname?-r)"
echo?"The?server_ip?is:?$(?ifconfig?|grep?‘inet\b‘?|grep?-v?‘127.0.0.1‘?|sed?‘s/.*addr:\b//‘?|sed?‘s/Bcast.*//‘)"
echo?"The?CPU?is:?$(lscpu?|grep?-i?‘model?name‘?|tr?-s?‘?‘?|sed?‘s/.*://‘)"
echo?"The?OS?version?is:?$(cat?/etc/redhat-release)"
echo?"The?memorysize?is:?$(free?|sed?-n?‘2p‘?|tr?:?‘?‘?|tr?-s?‘?‘?|cut?-d‘?‘?-f2)"
echo?"The?disksize?is:?$(fdisk?-l?|sed?-n?‘2p‘)"
[root@localhost?bin]#?bash?-n?systeminfometion.sh?
[root@localhost?bin]#?bash?systeminfometion.sh?
The?hosname?is:?localhost.localdomain
The?kernel?version?is:?2.6.32-642.el6.x86_64
The?server_ip?is:?10.1.253.35??
The?CPU?is:??Intel(R)?Core(TM)?i3-2350M?CPU?@?2.30GHz
The?OS?version?is:?CentOS?release?6.8?(Final)
The?memorysize?is:?1004108
The?disksize?is:?Disk?/dev/sda:?128.8?GB,?128849018880?bytes
[root@localhost?bin]#?bash?-n?systeminfometion.sh?
[root@localhost?bin]#?vim?systeminfometion.sh
You?have?new?mail?in?/var/spool/mail/root

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:???實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中
backdir="/root/etc$(date?+%F)"
echo?$backdir
cp?-a?/etc/.?$backdir?&&?echo?"backup?finished"
unset?backdir
[root@localhost?~]#?ll
drwxr-xr-x.?75?root?root?4096?Aug?12?05:11?etc2016-08-11

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:??顯示當前硬盤分區中空間利用率最大的值
disk_max=$(df?|tr?-s?‘?‘?%?|cut?-d%?-f5?|grep?‘[0-9]‘?|sort?-nr?|head?-1)
echo?"The?diskused_max?is?$disk_max"
unset?disk_max
[root@localhost?bin]#?bash?disk.sh?
The?diskused_max?is?53

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:??顯示正連接本主機的每個遠程主機的IPv4地址和連接數,并按連接數???從大到小排序
netstat?-nt?|tr?-s?‘?‘?|cut?-d‘?‘?-f5?|grep?‘[0-9]‘?|sed?‘s/:.*//‘?|sort?|uniq?-c?|sort
[root@localhost?bin]#?bash?link.sh
?1?10.10.10.1
?1?10.1.250.69
?3?10.1.50.10

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:??計算/etc/passwd文件中的第10個用戶和第20用戶的ID之和
user10_id=$(sed?-n?‘10p‘?/etc/passwd?|cut?-d:?-f3)
user20_id=$(sed?-n?‘20p‘?/etc/passwd?|cut?-d:?-f3)
sumid=$[$user10_id+$user20_id]
echo?"The?sum_id?is:?$sumid"
unset?user10_id
unset?user20_id
unset?sumid

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:??傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和
file1=$(grep?‘^$‘?$1?|wc?-l)
file2=$(grep?‘^$‘?$2?|wc?-l)
sumspace=$[$file1+$file2]
echo?"The?total?spacelines?is?$sumspace"
unset?file1
unset?file2
[root@localhost?bin]#?bash?sumspace.sh??/etc/fstab?/etc/profile
The?total?spacelines?is?12

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:???統計/etc,?/var,?/usr目錄中共有多少個一級子目錄和文件
etc_sum=$(ls?-A?/etc?|wc?-l)
var_sum=$(ls?-A?/var?|wc?-l)
usr_sum=$(ls?-A?/usr?|wc?-l)
sumfile=$[$etc_sum+$var_sum+$usr_sum]
echo?"The?total?file?is?$sumfile"
unset?etc_sum
unset?var_sum
unset?usr_sum
[root@localhost?bin]#?bash?sumfile.sh?
The?total?file?is?208

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:???接受一個文件路徑作為參數;如果參數個數小于1,則提示用戶“至少應該給一個參數”,并立即退出;如果參數個數不小于1,則顯示第一個參數所指向的文件中的空白行數
[?$#?-lt?1?]?&&?echo?"please?give?a?argument"?||?grep?‘^$‘?$1?|wc?-l
[root@localhost?bin]#?bash?argsnum.sh?/etc/fstab
1

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:??接受一個主機的IPv4地址做為參數,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問”
[?$#?-ge?1?]?&&?echo?"$1"?|egrep?-o?‘(\<([1-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])\.){2}\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))‘?&>?/dev/null?&&?(ping?-c?3?$1?&>/dev/null?&&?echo?-e?"\e[31m?this?ip?is?accessed\e[0m"?||?echo?-e?"\e[31m?this?ip?is?not?accessed?\e[0m")
[root@localhost?bin]#?bash?hostping.sh?10.1.1.1
this?ip?is?not?accessed?
[root@localhost?bin]#?bash?hostping.sh?10.1.253.35
this?ip?is?accessed

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

[root@localhost?tmp]#?chmod?-rw?file1
[root@localhost?tmp]#?ll?file1
----------.?1?user1?user1?0?Aug?12?08:10?file1
#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:????判斷當前用戶對/tmp/fiile1文件是否不可讀且不可寫
[?-r?/tmp/file1?-a?-w?/tmp/file1?]?&&?echo?"Yous?can?not?to?read?and?writ?file1"
[root@localhost?bin]#?bash?per.sh?
Yous?can?not?to?read?and?writ?file1

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:???實現禁止和充許普通用戶登錄系統
[?-f?/etc/nologin?]?&&?(rm?-f?/etc/nologin;echo?user?enable?login)?||?echo?user?disable?login?already
[root@localhost?bin]#?bash?login.sh?
user?disable?login?already

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:?接受一個主機的IPv4地址做為參數,先判斷是否合格IP,否,提示IP格式不合法并退出,是,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;???如果不可ping通,則提示用戶“該IP地址不可訪問
#!/bin/bash
[?$#?-ge?1?]?&&?echo?"$1"?|egrep?-o?‘(\<([1-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])\.){2}\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))‘?&>?/dev/null?&&?(ping?-c?3?$1?&>/dev/null?&&?echo?-e?"\e[31m?this?ip?is?accessed\e[0m"?||?echo?-e?"\e[31m?this?ip?is?not?accessed?\e[0m")
[root@localhost?bin]#?bash?hostping.sh?10.1.1.1
?this?ip?is?not?accessed?
[root@localhost?bin]#?bash?hostping.sh?10.1.253.35
?this?ip?is?accessed

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:???計算1+2+3+...+100的值
echo?{1..10}?|tr?‘?‘?+?|bc
[root@localhost?bin]#?bash?sum1.sh?
5050

i=1
sum=0
for?i?in?{1..100};do
????sum=$[$sum+$i]
????i=$i+1
done
echo?"the?sum?is?$sum"
unset?i
unset?sum
[root@localhost?bin]#?bash?sum.sh?
the?sum?is?5050

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

#!/bin/bash
#?author:huiping
#?version:1.0.1
#?date:2016-08-11
#?describe:??計算從腳本第一參數A開始,到第二個參數B的所有數字的總和,判斷B是否大于A,否提示錯誤并退出,是則計算之
#!/bin/bash
[[?$1?-lt?$2?]]?&&?(echo?$(seq?$1?$2)?|tr?‘?‘?+?|bc)?||?echo?"error,please?input?effective?number"
[root@localhost?bin]#?bash?f1.sh?10?30
420
[root@localhost?bin]#?bash?f1.sh?100?30
error,please?input?effective?number

轉載自?http://www.mamicode.com/info-detail-1484727.html

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96781

(0)
小孜然小孜然
上一篇 2018-04-22 15:33
下一篇 2018-04-22 15:55

相關推薦

  • shell進階函數及數組

    ①函數
    ②數組
    ③字符串切片
    ④變量高級進階
    ⑤expect工具

    Linux筆記 2018-05-12
  • 構建WordPress

    所需要安裝包: centos7,httpd,php,php-mysql,mariadb-server centos6,httpd,php(http的php模塊包),php-mysql,mysql-server 包解釋: php-common:php解釋器安裝包; php:httpd的模塊安裝包; php-mysql:php模塊連接數據庫的功能擴展包; php…

    Linux筆記 2018-03-31
  • 正則表達式

      文本處理三劍客 grep:文本過濾 grep,egrep(支持擴展正則表達式),fgrep(不支持正則表達式) grep ?需要查找的字符串 查找的目標文件 -v #取反 -i #忽略大小寫 -n #顯示目標字符串的行號 -c #顯示匹配到的次數 -p #靜默模式 -o #僅顯示匹配到的字符串 -A# #顯示包含關鍵字的后續幾行 -B# #顯示…

    2018-04-06
  • 進程任務計劃管理

    筆記

    2018-05-06
  • linux的程序包管理

    隨便寫寫,大佬勿噴

    Linux筆記 2018-04-20
欧美性久久久久