第十周練習-腳本部分

1、寫一個腳本

(1) 能接受四個參數:start, stop, restart, status

start: 輸出“starting 腳本名 finished.”

(2) 其它任意參數,均報錯退出;

#!/bin/bash
#
case $1 in
start)
    echo "starting $0 finished"
    ;;
stop)
    echo "stopping $0 finished"
    ;;
restart)
    echo "restarting $0 finished"
    ;;
status)
    echo "status $0 finished"
    ;;
*)
    echo "Usage:$(basename $0){start|stop|restart|status}"
    exit 1
    ;;
esac

2、寫一個腳本,判斷給定的用戶是否登錄了當前系統;

(1) 如果登錄了,則顯示用戶登錄,腳本終止;

(2) 每3秒鐘,查看一次用戶是否登錄;

#!/bin/bash
#
method() {
    status=$(who | grep $1)
    if [[ -n "$status" ]];then
        touch /tmp/online
    fi
}
while true;do
    method $1 && sleep 3
    if [ -f /tmp/online ];then
        echo "$1 is online"
    else
        echo "$1 isn't online"
    fi
    rm -f /tmp/online
done

3、寫一個腳本,顯示用戶選定要查看的信息;  cpu) display cpu info  mem) display memory info  disk) display disk info  quit) quit  非此四項選擇,則提示錯誤,并要求用戶重新選擇,只到其給出正確的選擇為止;

#!/bin/bash
#
cat <<EOF
    輸入mem>display memory info
    輸入disk>display disk info
    按Q>退出
EOF
read -p ‘請按對應的字母鍵,否則五秒后自動退出’ -t 5 name
if [[ "$name" == "Q" ]];then
    echo "您選擇退出";
    exit 1
elif [[ "$name" == "cpu" ]];then
    cat /proc/cpuinfo
elif [[ "$name" == "mem" ]];then
    df -lh
elif [[ "$name" == "disk" ]];then
    fdisk -l
else
    echo "您輸入有誤,請重新選擇"
    bash $0
fi

4、寫一個腳本

(1) 用函數實現返回一個用戶的UID和SHELL;用戶名通過參數傳遞而來;

(2) 提示用戶輸入一個用戶名或輸入“quit”退出;

當輸入的是用戶名,則調用函數顯示用戶信息;

當用戶輸入quit,則退出腳本;進一步地:顯示鍵入的用戶相關信息后,再次提醒輸出用戶名或quit:

#!/bin/bash
#
doing() {
    read -p "請輸入用戶名或quit退出" name
    if [[ "$name" == "quit" ]];then
        exit 0
    else
        userinfo $name
    fi
}
userinfo() {
    id $1 &> /dev/null
    if [ $? -eq 0 ];then
        grep -E ^$1 /etc/passwd | awk -F: '{print $3,$NF}'
        doing
    else
        echo "user not exist"
        exit
    fi
}
doing

5、寫一個腳本,完成如下功能(使用函數)

(1) 提示用戶輸入一個可執行命令的名字;獲取此命令依賴的所有庫文件;

(2) 復制命令文件至/mnt/sysroot目錄下的對應的rootfs的路徑上,例如,如果復制的文件原路徑是/usr/bin/useradd,則復制到/mnt/sysroot/usr/bin/目錄中;

(3) 復制此命令依賴的各庫文件至/mnt/sysroot目錄下的對應的rootfs的路徑上;規則同上面命令相關的要求;

#!/bin/bash
#
doing() {
    mkdir -p /mnt/sysroot
    read -p "請輸入一個可執行命令" name
    which $name &> /dev/null
    if [ $? -eq 0 ];then
        path=$(which $name)
        ldd $path
        echo "==========開始復制命令文件=========="
        new_command_path=$(echo ${path%/*})/
        cp -r $path /mnt/sysroot/$new_command_path &> /dev/null
        echo "==========復制命令文件完畢=========="
        echo "==========開始復制命令依賴的庫文件=========="
        mkdir -p /mnt/sysroot/$new_command_path/$name-lib
    for i in $(ldd $path);do
        cp $i /mnt/sysroot/$new_command_path/$name-lib &> /dev/null
    done
        echo "==========復制命令依賴的庫文件完畢=========="
    else
        echo "the command not found"
        exit 1
    fi
}
doing

原創文章,作者:N24_澀味,如若轉載,請注明出處:http://www.www58058.com/65454

(0)
N24_澀味N24_澀味
上一篇 2016-12-31
下一篇 2016-12-31

相關推薦

  • Linux三劍客之sed

    sed:全稱stream EDit 行文本編輯器 作用:是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在模式空間,接著用 sed命令處理緩沖區中的內容,處理完成后,把模式空間的內容輸出到標準輸出。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。 Sed主要用來自動編輯一個或多個文件,簡化對文件的反復操…

    Linux干貨 2016-08-12
  • N26 第四周博客作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 演示:     [root@47d523181d25 /]# cp -r /etc/skel/ /home/tuser1     [root@47d523…

    Linux干貨 2017-02-25
  • MongoDB-index

    索引:特殊的數據結構,存儲表的數據的一小部分以實現快速查詢 優點:     1、大大減少了服務器需要掃描的數據量     2、索引可以幫助服務器避免排序或使用臨時表     3、索引可以將隨機io轉換為順序io 索引評估:三星(非常好) 一…

    Linux干貨 2016-11-27
  • 馬哥教育網絡班N22期+第2周課程練習

    馬哥教育網絡班N22期+第2周課程練習 1 linux上的常用文件管理類命令 1.1 常用文件查看命令 MORE命令 作用:分屏顯示查看文件內容 用法:more file 查看翻頁方式: B鍵向上 一頁 空格向下一頁 enter鍵一行一行翻閱 翻到最后一行自動退出 LESS命令 作用:分屏顯示查看文件內容 用法:less file 查看方式:less命令與查…

    Linux干貨 2016-08-29
  • N25-第11周博客作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 第一步:他們需要實現協商好對稱加密算法,單向加密算法,公鑰加密算法,交換公鑰等。 第二步:B用戶想要將數據傳給A,首先需要使用單向加密算法取出數據的特征碼,并用自己的私鑰對這段特征碼進行加密(數字簽名),B用戶生成臨時對稱密鑰,并用對稱密鑰加密整段數據,B用戶使用 A用戶的公鑰加密一次性對稱密鑰,附加在整段數據…

    Linux干貨 2017-05-21
  • grub應用 (Blog 10)

    grub1.x 、grub2.x詳解

    2017-11-27

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-01-04 16:20

    寫的很好,下次可以把一次作業寫在一個里面

欧美性久久久久