shell編程作業

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

[root@localhost sh.log]# cat systeminfo.sh 
#!/bin/bash
#author:DYW
#顯示當前主機系統信息,主機名,ipv4,操作系統版本,內核版本,cpu型號,內存大小,硬盤大小。
echo "Host system communication and hostname is `hostname`"
echo "Ip is `ip addr |sed -n "9p"|sed -e "s@.*net[[:space:]]\+@@"  -e "s@/.*@@"`"
echo "Operating system version is `uname -i`"
echo "Kernel version is `uname`"
echo "Model name is `lscpu | sed -n "/Model name/p" |sed "s@Model name:[[:space:]]\+@@"`"
echo "Memory size is `free -h |sed -n '2p'|sed "s@Mem:[[:space:]]\+@@"|sed "s@[[:space:]].*@@"`"
echo "Hard drive size is `fdisk -l| sed -n '2p'|sed "s@.*\:[[:space:]]\+@@"|sed "s@,.*@@"`"
[root@localhost sh.log]# bash systeminfo.sh 
Host system communication and hostname is localhost.localdomain
Ip is 192.168.1.114
Operating system version is x86_64
Kernel version is Linux
Model name is Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz
Memory size is 977M
Hard drive size is 107.4 GB

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

[root@localhost sh.log]# cat backup.sh 
#!/bin/bash
#author:DYW
#實現每日將/etc/目錄備份到/wang中

mubiaodizhi="/wang/etc$(date +%F)"
cp -a /etc/ $mubiaodizhi && echo "Backup $mubiaodizhi finished"
[root@localhost sh.log]# bash backup.sh 
Backup /wang/etc2016-08-11 finished

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

[root@localhost sh.log]# cat disk.sh 
#!/bin/bash
#author:DYW
#顯示當前硬盤分區中空間利用率最大的值

maxzhi=`df |grep "^tmpfs"|tr -s " "|sort -nr -t" " -k5|head -n1|cut -d" " -f5`
echo "硬盤分區使用率最大的值是$maxzhi"
[root@localhost sh.log]# bash disk.sh 
硬盤分區使用率最大的值是2%

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

[root@localhost sh.log]# cat links.sh 
#!/bin/bash
#author
#顯示正連接本主機的每個遠程主機的ipv4地址和連接數,并按連接數從大到小排序

echo  -e "遠程主機連接:\n\t連接次數\t連接ip"
netstat -nt |grep "tcp" |tr -s  " " ":"|cut -d: -f6|uniq -c|sort -nr|tr -s ' ' '\t'
[root@localhost sh.log]# bash links.sh 
遠程主機連接:
	連接次數	連接ip
	3	192.168.1.106

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

[root@localhost sh.log]# cat sumid.sh 
#!/bin/bash
#author:DYW
#計算/etc/passwd文件中的第10個用戶和第20用戶的id之和

yonghu10=`sed -n 10p /etc/passwd|cut -d: -f3`
yonghu20=`sed -n 20p /etc/passwd|cut -d: -f3`
let sum=$yonghu10+$yonghu20
echo -e "user10 uid is $yonghu10\nuser20 uid is $yonghu20\nsum user10 and user20 is $sum"
[root@localhost sh.log]# bash sumid.sh 
user10 uid is 11
user20 uid is 89
sum user10 and user20 is 100

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

[root@localhost sh.log]# cat sumspace.sh 
#!/bin/bash
#author:DYW
#傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和。

file1=`grep "^$" $1|wc -l`
file2=`grep '^$' $2|wc -l`
let sum=$file1+$file2

echo "the sum of $1 and $2 spacelines is $sum"
[root@localhost sh.log]# bash sumspace.sh /wang/file1 /wang/file2
the sum of /wang/file1 and /wang/file2 spacelines is 14

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

[root@localhost sh.log]# cat sumfile.sh 
#!/bin/bash
#author:DYW
#統計/etc,/var,use目錄中共有多少個一級子目錄和文件

dir1=`ls -a $1 | tr -s " " "\n" | wc -l`
dir2=`ls -a $2 | tr -s " " "\n" | wc -l`
dir3=`ls -a $3 | tr -s " " "\n" | wc -l`

let sum=$dir1+$dir2+$dir3

echo "the sum of $! and $2 and $3 dirfile is $sum"

[root@localhost sh.log]# bash sumfile.sh /etc /var /usr
the sum of  and /var and /usr dirfile is 214

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

[root@www sh.log]# cat argsnum.sh 
#!/bin/bash
#author:DYW
#接受一個文件路徑作為參數,如果參數個數小于1,則提示用戶“至少應該給一個參數”,并立即退出,如果參數個數不小于1,則顯示第一個參數所指向的文件中的空白行數。

[ $# -lt 1 ] && (echo "至少應該給一個參數";exit) || echo "`grep "^$" $1 |wc -l`"
[root@www sh.log]# bash  argsnum.sh /wang/file2
7
[root@www sh.log]# bash  argsnum.sh 
至少應該給一個參數

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

[root@localhost sh.log]# cat hostping.sh 
#!/bin/bash
#author:DYW
#接受一個主機ipv4地址作為參數,則是是否可連通,如果能ping通,則提示用戶“該ip地址可訪問”,如果不可ping通,則提示用戶“該ip地址不可訪問”

`ping -c1 -W1 $1 &> /dev/null` && echo "該ip地址可以訪問" ||echo "該ip地址不可訪問"
[root@localhost sh.log]# bash hostping.sh 192.168.1.1
該ip地址可以訪問
[root@localhost sh.log]# bash hostping.sh 192.168.1.256
該ip地址不可訪問

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

[root@localhost sh.log]# bash per.sh 
yes
[root@localhost sh.log]# cat per.sh 
#!/bin/bash
#autor:DYW
#chmod -rw /wang/file1 判斷當前用戶對/wang/file1文件是否不可讀且不可寫
chmod -rw /wang/file1
[ -r /wang/file1 -a -w /wang/file1 ] && echo "yes"||echo "no"
[root@localhost sh.log]# bash per.sh 
yes

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

[root@localhost sh.log]# cat nologin.sh 
#!/bin/bash
#author:DYW
#禁止普通用戶登錄系統

[ -f /etc/nologin ] && echo "普通用戶已經不能登錄" ||(touch /etc/nologin; echo "已經禁止普通用戶登錄")
[root@localhost sh.log]# bash nologin.sh 
普通用戶已經不能登錄
[root@localhost sh.log]# rm -f /etc/nologin 
[root@localhost sh.log]# bash nologin.sh 
已經禁止普通用戶登錄
[root@localhost sh.log]# ls -a /etc |grep "nologin"
nologin
[root@localhost sh.log]# cat login.sh 
#!/bin/bash
#author:DYW
#允許普通用戶登錄系統

[ -f /etc/nologin ] && (rm -f /etc/nologin;echo "已經允許普通用戶登錄") || echo "普通用戶已經可以登錄"
[root@localhost sh.log]# bash login.sh 
普通用戶已經可以登錄
[root@localhost sh.log]# touch /etc/nologin
[root@localhost sh.log]# bash login.sh 
已經允許普通用戶登錄

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

[root@www sh.log]# cat hostping2.sh 
#!/bin/bash
#author:DYW
#接受一個主機ipv4地址作為參數,先判斷是否合格ip,否,提示“ip格式不合法并退出”,是,測試是否可ping通,如果能ping通,則提示用戶“該ip地址可訪問”,如果ping不通,則提示用戶“該ip地址ping不通”

result=`ping -c1 -W1 $1 &> /dev/null && echo "該ip地址可以訪問" ||echo "該ip地址不可訪問"`
echo "$1" |grep  -E  "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9|25{0-5])\>" &> /dev/null && echo "${result}"  || (echo "ip格式不合法" ; exit)
[root@www sh.log]# bash hostping2.sh 192.168.1.1
該ip地址可以訪問
[root@www sh.log]# bash hostping2.sh 192.168.1.256
ip格式不合法
[root@www sh.log]# bash hostping2.sh 192.168.1.106
該ip地址可以訪問
[root@www sh.log]# bash hostping2.sh 192.168.1.113
該ip地址不可訪問

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

[root@localhost sh.log]# cat qiuhe.sh 
#!/bin/bash
#author:DYW
#計算1+2+...100的值

echo {1..100} |tr " " "+"|bc
[root@localhost sh.log]# bash qiuhe.sh 
5050

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

[root@www sh.log]# cat canshuqiuhe.sh 
#!/bin/bash
#計算從腳本第一參數A開始,到第二個參數B的所有數字的總和,判斷B是否大于A,否提示錯誤并退出,是則計算之
jisuan=`seq -s "+" $1 $2 | bc`
[ $2 -gt $1 ] && echo "$jisuan" || (echo "輸入錯誤" ; exit)
[root@www sh.log]# bash  canshuqiuhe.sh 1 10
55
[root@www sh.log]# bash  canshuqiuhe.sh 11 10
輸入錯誤

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

(0)
DYWDYW
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • 初識Linux

    1 硬件:cpu,內存,輸入輸出設備 功能:計算,存放cpu暫時計算的數據,接受輸入和輸出反應 2 Debian Ubuntu => mint knopix Slackware: S.u.S.E => OpenSUSE SLES RedHat: RedHat Enterprise Linux => CentOS FedoraCore 3 1…

    Linux干貨 2017-07-11
  • grep 命令詳解

    grep 命令詳解 概述:本文檔基于 info grep 翻譯,完成度可能 90% 左右。 作者:N10-guli 時間:2016-01-05 版本:v1.0 目錄:     1,grep 命令的選項     2,grep 命令的正則表達式     3,gre…

    Linux干貨 2016-02-14
  • 設計模式 ( 十二 ) 職責鏈模式(Chain of Responsibility)(對象行為

    1.概述        你去政府部門求人辦事過嗎?有時候你會遇到過官員踢球推責,你的問題在我這里能解決就解決,不能解決就推卸給另外個一個部門(對象)。至于到底誰來解決這個問題呢?政府部門就是為了可以避免屁民的請求與官員之間耦合在一起,讓多個(部門)對象都有可能接收請求,將這些(部門)對象連接成一條鏈,并且沿著這條鏈傳遞…

    Linux干貨 2015-07-15
  • 文件權限

    首先簡單介紹一下文件的屬性: 使用ls -l 長列出-rw-r–r–. 1 root root 1302 Jul 25 10:23 group文件類型|owner權限group權限other權限|硬鏈接數|owner|group|文件大小(bytes)|mtime|文件名 文件類型:     &…

    2017-07-29
  • 鏈接分析算法之:HITS算法

     HITS(HITS(Hyperlink – Induced Topic Search) ) 算法是由康奈爾大學( Cornell University ) 的Jon Kleinberg 博士于1997 年首先提出的,為IBM 公司阿爾馬登研究中心( IBM Almaden Research Center) 的名為“CLEVER”的研究…

    開發運維 2015-07-20
  • BT雷人的程序語言

    這個世界從來都不會缺少另類的東西,人類自然世界如此,計算機世界也一樣。編程語言方面,看過本站《6個變態的C語言Hello World程序》的朋友們一定對BT和另類不會陌生,但那都是些小兒科,真正的BT和另類要是從語言級上來完成。讓我們來看看其中一個比較另類的語言BrainFuck。看到這個程序語言的名字,請不要以為這是一個搞笑的語言,這是一個“嚴肅事情”,請…

    Linux干貨 2015-04-03

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-16 16:54

    總結沒寫,標題不要用日期,

欧美性久久久久