shell 腳本基礎作業

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

#!/bin/bash

:<<EOF

顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小

EOF

Host_name=`hostname`

Ip_address=`ifconfig | grep -o '\([[:digit:]]\+\.\)\{3\}[[:digit:]]\+'|sed -n '1p'`

Systeminfo=`cat /etc/redhat-release`

Coreinfo=`uname -r`

Cpuinfo=`lscpu|sed -n '13p' | tr -s ' ' | cut -d: -f2`

Meminfo=`lscpu|sed -n '13p' | tr -s ' ' | cut -d: -f2`

Hdisk=`fdisk -l /dev/sda |sed -n '2p'|tr -d ' '|cut -d , -f1`

echo "主機名:$Host_name"

echo -e "\n操作系統信息: $Systeminfo"

echo -e "\ncpu信息: $Cpuinfo"

echo -e "\n內核信息: $Coreinfo"

echo -e "\n內存信息: $Meminfo"

echo -e "\n本機IP地址: $Ip_address"

echo -e "\n硬盤信息: $Hdisk"

1.jpg

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

cp -a  /etc/.  /root/etc`date/ +%F` && ( echo"backup finished" ; ls -l | grep 'etc[[:digit:]]\+' )

||  echo "backup error"

2.jpg

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

#!/bin/bash

:<<EOF

顯示當前硬盤分區中空間利用率最大的值

EOF

echo "please input the device you want to check:"

read Chk_device

echo -e "\n`df | grep "$Chk_device" | tr -s ' ' | cut -d' ' -f1,5`\n"

3.jpg

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

#!/bin/bash

:<<EOF

顯示正連接本主機的每個遠程主機的IPv4地址和連接數,并按連接數從大到小排序

EOF

netstat -nt | tr -s ' ' | cut -d' ' -f5 | tr -cs '0-9.' '\n' |  grep '\([0-9]\+\.\)\{3\}[0-9]\+' | sort | uniq -c | sort -nr | tr -s ' ' '\t'

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

#!/bin/bash

#計算第N行的用戶的ID的總和

declare -i id=0

for line in {10,20};do

id2=`sed -n "${line}p" /etc/passwd | cut -d: -f3`

id=$[$id+$id2]

done

echo "the sum is $id"

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

#!/bin/bash

#統計目錄中共有多少個一級子目錄和文件

sum1=`ls -a $1 |wc -l`

echo "the sum1 of $1 is $sum1"

sum2=`ls -a $2 |wc -l`

echo "the sum2 of $2 is $sum2"

sum3=`ls -a $3 |wc -l`

echo "the sum3 of $3 is $sum3"

6.jpg

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

#!/bin/bash

:<<\EOF

寫一個腳本/root/bin/argsnum.sh,接受一個文件路徑作

為參數;如果參數個數小于1,則提示用戶“至少應該給一個

參數”,并立即退出;如果參數個數不小于1,則顯示第一個

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

EOF

[ $# -eq 0 ]&& (echo "至少應該給一個參數"; exit 2)

linenum1=`grep '^$' $1 | wc -l`

echo "the linenum of the first parameter is $linenum1"

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

#!/bin/bash

:<<\EOF

寫一個腳本/root/bin/hostping.sh,接受一個主機的

IPv4地址做為參數,測試是否可連通。如果能ping通,則提

示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“

該IP地址不可訪問

EOF

ping -c1 -w1 $1 &> /dev/null && (echo"該IP地址可以訪問";exit 0) || echo " 該IP地址不可以訪問"

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

#!/bin/bash

:<<\EOF

chmod -rw /tmp/file1,編寫腳本/root/bin/per.sh,判

斷當前用戶對/tmp/fiile1文件 是否不可讀且不可寫

EOF

[ ! -r /tmp/test/file1 -a !-w /tmp/test/file1 ] &&  echo" no -r no -w" || echo "has -r or -w"

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

#!/bin/bash

#禁止和充許普通用戶登錄系統。

echo "please input "nologin" or "login" to limit the users to login "

read Login_model

[ "$Login_model" == "nologin" ] && (touch /etc/nologin &>/dev/null ;echo "limit users

to login")

[ "$Login_model" == "login" ] && ( rm -rf /etc/nologin &>/dev/null ;echo "allow users to

login")

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

#!/bin/bash

:<<\EOF

寫一個腳本/root/bin/hostping.sh,接受一個主機的

IPv4地址做為參數,測試是否可連通。如果能ping通,則提

示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“

該IP地址不可訪問

EOF

echo "please input IP address you want to ping:"

read Ping_address

[[ "$ipaddress" =~ "[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+" ]]

ping -c1 -w1 $1 &> /dev/null && (echo"該IP地址可以訪問";exit 0) || echo " 該IP地址不可以訪問"

  

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

declare -i sum=0

for i in {1,100};do

sum=$[$i+$sum]

echo "sum=$sum"

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

#!/bin/bash

#

declare -i sum=0

[ $1 -lt $2 ] && (sum=$[$1+$2];echo "sum=$sum") || echo "error";exit

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

(1)
ldt195175108ldt195175108
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • 馬哥教育網絡班21期+第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 方法1: [root@zabbix ~]# who |awk '{print $1}'|sort -n|uniq monitor root 方法2: [root@zabbix ~]#…

    Linux干貨 2016-07-22
  • DNS基礎知識

    一、DNS介紹:   1、DNS: Domain  Name Service,域名解析服務;      部署方式為分布式部署,如圖所示:        2、查詢類型:     遞歸查詢:僅發出一次請求,要求對方回復最終結果&nbs…

    Linux干貨 2015-05-18
  • N22網絡班第一周作業

    1、 描述計算機的組成及其功能。 運算器、控制器、存儲器、輸入設備、輸出設備 運算器、控制器 :cpu 運算和邏輯計算 存儲器:緩存和保存數據 輸入設備、輸出設備:用戶和計算機交互設備和界面 2、 按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。 Slackware系列: suse   opensuse debian系列: ubun…

    Linux干貨 2016-08-15
  • 優云攜手網易云 助力企業“互聯網+”轉型

    12月16日,網易旗下“網易云”首屆“網易云聚,共創未來”合作伙伴大會在網易杭州園區舉行,優云(uyun.cn)成為首批授牌20家企業之一,并作為核心合作伙伴代表現場簽署了合作伙伴協議。 右二為優云軟件運營經理 柴勇 現場簽署合作伙伴協議 會上,網易杭州研究院執行院長汪源介紹了網易云的戰略生態全境,提出“產品體系+培訓體系+服務體系”的網易云三大核心競爭力,…

    Linux資訊 2017-03-15
  • 06文本工具簡單介紹

    在Linux系統中,一個核心理念就是:一切皆文件。正確的對系統中文本的編輯配置與管理是Linux系統得以穩定運行的一個重要大前提。 因此Linux系統中的文件與管理特別重要,下面簡單說一下在對文件處理過程中經常用到的一些命令工具。 文本查看命令:cat,tac,rev,more,less cat [option]…[file]… -E…

    Linux干貨 2016-10-31
  • 常見的文本處理工具及正則表達式的相關知識

    1.cat命令使用詳解 cat [option]… [file]… -A equivalent=vET -b 非空行編號 -E 行為顯示$ -n 顯示所有行的行號 -s 行號并壓縮連續空行為一行 -T 顯示tab為^M 實例:顯示a文件的行號及所有控制符 2.(1)head使用詳解 head -n x 顯示前x行 head -c x …

    Linux干貨 2016-08-07
欧美性久久久久