N25-第八周博客作業

1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;

在線的主機使用綠色顯示;
不在線的主使用紅色顯示;

#!/bin/bash
# ping探測主機在線狀態

for i in `seq 254`;do
        if ping -c 1 172.16.0.$i &> /dev/null;then
                echo -e  "\033[32m172.16.0.$i\033[0m"
        else
                echo -e  "\033[31m172.16.0.$i\033[0m"   
        fi
done

2、如何給網絡接口配置多個地址,有哪些方式?

(1) 使用ifcongig
[root@lab1 ~]# ifconfig eno16777736:0 172.16.0.10/16 up
[root@lab1 ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.146.130  netmask 255.255.255.0  broadcast 192.168.146.255
        ether 00:0c:29:56:c6:51  txqueuelen 1000  (Ethernet)
        RX packets 17488  bytes 4626694 (4.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7106  bytes 1489317 (1.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno16777736:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.0.10  netmask 255.255.0.0  broadcast 172.16.255.255
        ether 00:0c:29:56:c6:51  txqueuelen 1000  (Ethernet)  
(2) 使用ip命令  
[root@lab1 ~]# ip addr add 192.168.140.150 dev  eno16777736
[root@lab1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:56:c6:51 brd ff:ff:ff:ff:ff:ff
    inet 192.168.146.130/24 brd 192.168.146.255 scope global dynamic eno16777736
       valid_lft 982sec preferred_lft 982sec
    inet 172.16.0.10/16 brd 172.16.255.255 scope global eno16777736:0
       valid_lft forever preferred_lft forever
    inet 192.168.140.150/32 scope global eno16777736
       valid_lft forever preferred_lft forever

3、寫一個腳本,完成以下功能

(1) 假設某目錄(/etc/rc.d/rc3.d/)下分別有K開頭的文件和S開頭的文件若干;
(2) 顯示所有以K開頭的文件的文件名,并且給其附加一個stop字符串;
(3) 顯示所有以S開頭的文件的文件名,并且給其附加一個start字符串;
(4) 分別統計S開頭和K開頭的文件各有多少;

#!/bin/bash
# 統計目錄中的文件

#分別定義變量表示K開頭和S開頭的文件數  
declare -i knum
declare -i snum
knum=0
snum=0

for str in $(ls /etc/rc.d/rc3.d);do
        if echo $str | grep "^K" &> /dev/null;then
                echo "$str stop"
                let knum++
        else
                echo "$str start"
                let snum++
        fi
done

echo -e "S開頭的文件數:${snum}\nK開頭的文件數:${knum}"

4、寫一個腳本,完成以下功能

(1) 腳本能接受用戶名作為參數;
(2) 計算此些用戶的ID之和;

#!/bin/bash
# 計算傳入用戶的id之和

if [ $# -lt 1 ];then
        echo "請輸入至少一個用戶名"
        exit 1
fi
declare -i idsum=0

for name in $@;do
        if id -u $name &> /dev/null;then
                let idsum+=$(id -u $name)
        else
                echo "${name}這個用戶不存在,不參與運算"
        fi
done

echo "這些用戶的id之和是:$idsum"

執行結果:
[root@han scripts]# ./user.sh han
這些用戶的id之和是:500
[root@han scripts]# ./user.sh ha han
ha這個用戶不存在,不參與運算
這些用戶的id之和是:500
[root@han scripts]# ./user.sh  han mail
這些用戶的id之和是:508

5、寫一個腳本

(1) 傳遞一些目錄給此腳本;
(2) 逐個顯示每個目錄的所有一級文件或子目錄的內容類型;
(3) 統計一共有多少個目錄;且一共顯示了多少個文件的內容類型;

#!/bin/bash
#統計傳入目錄的文件類型

if [ $# -lt 1 ];then
    echo "請輸入至少一個目錄"
    exit 1
fi

#定義目錄數,文件數
declare -i dnum=0
declare -i fnum=0

# 循環傳入的目錄參數    
for parms in $@;do
    if [ ! -d $parms ];then
        echo "${parms}不是目錄,請重新輸入"
    fi
    # 循環某個目錄下的一級子目錄或文件
    for files in `ls $parms`;do    
        if [ -d ${parms}/$files ];then
                file ${parms}/${files} 
            [ $? -eq 0 ]  && let dnum++
        else
            file ${parms}/$files 
            [ $? -eq 0 ] && let fnum++ 

        fi    
    done
done


echo "全部子目錄個數: $dnum"
echo "顯示文件類型的文件數: $fnum"

執行結果
[root@han scripts]# bash  filetype.sh /root /tmp
/root/anaconda-ks.cfg: ASCII English text
/root/Desktop: directory
/root/Documents: directory
/root/Downloads: directory
/root/install.log: ASCII text
/root/install.log.syslog: ASCII text
/root/Music: directory
/root/Pictures: directory
/root/Public: directory
/root/scripts: directory
/root/Templates: directory
/root/Videos: directory
/tmp/keyring-Sj3EIa: directory
/tmp/pulse-9toHfrLBLivN: directory
/tmp/pulse-uIUgIls6jl24: directory
全部子目錄個數: 12
顯示文件類型的文件數: 3

6、寫一個腳本

通過命令行傳遞一個參數給腳本,參數為用戶名
如果用戶的id號大于等于500,則顯示此用戶為普通用戶;

#!/bin/bash
#description:判斷用戶是否普通用戶
#version : 0.1
#author: han
#date: 2017-2-22

if [ $# -lt 1 ];then
        echo "請輸入至少一個用戶名"
        exit 1
fi

if id $1 &> /dev/null;then
        if [ `id -u $1` -ge 500 ];then
                echo "$1是普通用戶"
        fi
fi

執行結果:
[root@han scripts]# bash commonuser.sh root
[root@han scripts]# bash commonuser.sh han
han是普通用戶

7、寫一腳本,用ping命令測試172.16.250.20-172.16.250.100以內有哪些主機在線,將在線的顯示出來;

#!/bin/bash
# ping測試
# author:han

trap 'echo quit;exit 1' INT

for i in {20..100};do
        if ping -c 1 -W 1 172.16.250.$i &> /dev/null; then
                echo "172.16.250.${i} is up"
        fi
done

執行結果: 
[root@han scripts]# bash ping2.sh 
^Cquit

8、打印九九乘法表;

#!/bin/bash
#description: 九九乘法表
#author: han

for j in {1..9};do
#for i in {1..${j}};do   這種方式有問題,獲取不到$i的值
        for i in `seq $j`;do
                echo -n "$i X $j = $[$i*$j] "
        done
        echo 
done

執行結果:
[root@han scripts]# bash chengfa.sh 
1 X 1 = 1 
1 X 2 = 2 2 X 2 = 4 
1 X 3 = 3 2 X 3 = 6 3 X 3 = 9 
1 X 4 = 4 2 X 4 = 8 3 X 4 = 12 4 X 4 = 16 
1 X 5 = 5 2 X 5 = 10 3 X 5 = 15 4 X 5 = 20 5 X 5 = 25 
1 X 6 = 6 2 X 6 = 12 3 X 6 = 18 4 X 6 = 24 5 X 6 = 30 6 X 6 = 36 
1 X 7 = 7 2 X 7 = 14 3 X 7 = 21 4 X 7 = 28 5 X 7 = 35 6 X 7 = 42 7 X 7 = 49 
1 X 8 = 8 2 X 8 = 16 3 X 8 = 24 4 X 8 = 32 5 X 8 = 40 6 X 8 = 48 7 X 8 = 56 8 X 8 = 64 
1 X 9 = 9 2 X 9 = 18 3 X 9 = 27 4 X 9 = 36 5 X 9 = 45 6 X 9 = 54 7 X 9 = 63 8 X 9 = 72 9 X 9 = 81

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

(0)
hansjhansj
上一篇 2017-02-23
下一篇 2017-02-23

相關推薦

  • bash特性之基礎

    bash shell 命令歷史history 環境變量: HISTSIZE :命令歷史記錄的條數 HISTFILE :~/.bash_history HISTFILESIZE: 顯示環境變量:echo    環境變量的修改:export  history history [-c] [-d&…

    Linux干貨 2016-11-22
  • 數據結構應用詳解-

    概述 最小生成樹——無向連通圖的所有生成樹中有一棵邊的權值總和最小的生成樹 拓撲排序 ——由偏序定義得到拓撲有序的操作便是拓撲排序。建立模型是AOV網 關鍵路徑——在AOE-網中有些活動可以并行地進行,所以完成工程的最短時間是從開始點到完成點的最長路徑的長度,路徑長度最長的路徑叫做關鍵路徑(Critical Path)。 最短路徑——最短路徑問題是…

    Linux干貨 2015-04-07
  • 第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who (unknown) :0           2016-12-15 2…

    Linux干貨 2016-12-20
  • 計算機的組成及其功能

    計算機的組成及其功能 計算機由五部分組成 運算器 實現算術運算和邏輯運算(和控制器組成CPU) 控制器 控制總線的使用權限,完成尋址和控制對內存當中的訪問權限是做讀訪問還是寫訪問 存儲器 內存,RAM(Random Access Memory) 輸入(Input) 下指令,提供數據 輸出(Output) 輸出數據加工的結果

    2018-02-22
  • 20160809作業

    一、如何設置tab縮進為4個字符       臨時設置:set tabstop=4       全局設置vim /etc/vimrc—>添加set tabstop=4       當前用戶生效,手動添加文…

    Linux干貨 2016-08-10
  • wordpress配置安裝

    1、首先進行lamp框架的搭建 服務器環境:Linux Centos 7.2.1511 64位 內存:2G  磁盤空間100GB IP地址:10.55.10.79 進行httpd,php,php-mysql,mariadb-server的安裝,安裝均使用yum安裝 ~]# yum -y install httpd php php-mysql mar…

    Linux干貨 2016-11-04

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-30 14:03

    非常認真的作業,值得其他同學學習。

欧美性久久久久