N59030-第六周作業(yè)

  1. 編寫腳本實(shí)現(xiàn)登陸遠(yuǎn)程主機(jī)

    • 使用 expect
    #!/usr/bin/expect -f
    set ip [lindex $argv 0]
    set user [lindex $argv 1]
    set passwd [lindex $argv 2]
    set timeout 30
    set force_conservative 1
    if {$force_conservative} {
       set send_slow {128 .1}
    }
    spawn ssh -p 2121 $user@$ip;
    expect {
        "*continue connecting (yes/no)?" { send -s "yes\r"; exp_continue }
        "*assword:" {
            send -s "$passwd\r";
        }
    }
    interact
    
  2. 生成10個(gè)隨機(jī)數(shù)保存于數(shù)組中,并找出其最大值和最小值

    #!/bin/bash
    
    for ((i=0;i<10;i++))
    do
        nums[$i]=`echo $[$RANDOM%100]`
    
        [ "$i" -eq 0 ] && max="${nums[$i]}"  && min="${nums[$i]}"  && continue
        [ "${nums[$i]}" -gt "$max" ] && max=${nums[$i]} && continue
        [ "${nums[$i]}" -lt "$min" ] && min=${nums[$i]}
    done
    
    echo "總數(shù): ${nums[*]}"
    echo "最大值: $max"
    echo "最小值: $min"
    
  3. 輸入若干個(gè)數(shù)值存入數(shù)組中,采用冒泡算法進(jìn)行升序或降序排序

    #!/bin/bash
    declare -a nums
    for ((i=0;i<10;i++))
    do
        nums[$i]=`echo $[$RANDOM%100]`
    
        [ "$i" -eq 0 ] && max="${nums[$i]}"  && min="${nums[$i]}"  && continue
        [ "${nums[$i]}" -gt "$max" ] && max=${nums[$i]} && continue
        [ "${nums[$i]}" -lt "$min" ] && min=${nums[$i]}
    done
    
    echo "總數(shù): ${nums[*]}"
    echo "最大值: $max"
    echo "最小值: $min"
    
    count="${#nums[*]}"
    declare -i n=$count
    for ((x=0;x<"$count-1";x++))
    do
        for ((y=0;y<"$count-1-x";y++))
        do
                let z=$y+1
                if [ "${nums[$y]}" -lt "${nums[$z]}" ]; then
    
                tmp=${nums[$z]}
                nums[$z]=${nums[$y]}
                nums[$y]=$tmp
                fi
        done
    done
    echo "新排列的總數(shù):${nums[*]}"
    
  4. 總結(jié)查看系統(tǒng)負(fù)載的幾種命令,總結(jié)top命令的指標(biāo)大概什么含義


    • 上半部資訊

      欄位 說(shuō)明
      top 目前時(shí)間
      up 主機(jī)到目前的開機(jī)時(shí)間
      user 目前登入系統(tǒng)使用者數(shù)
      load average 有三筆資訊,分別是系統(tǒng)每1分鐘、5分鐘、15分鐘的負(fù)載情況
      Tasks 有五筆系統(tǒng)行程相關(guān)資訊,分別是所有行程(total),正在執(zhí)行(running),休眠狀態(tài)(sleeping),已停止(stopped),僵屍狀態(tài)(zombie)
      %Cpu(s) 有八筆資訊:
      us:用戶空間佔(zhàn)用CPU的百分比
      sy:內(nèi)核空間佔(zhàn)用CPU的百分比
      ni:改變過優(yōu)先順序的進(jìn)程佔(zhàn)用CPU的百分比
      id:
      wa:IO等待佔(zhàn)用CPU的百分比
      hi:硬中斷(Hardware IRQ)佔(zhàn)用CPU的百分比
      si:軟中斷(Software Interrupts)佔(zhàn)用CPU的百分比
      st:
      KiB Mem 記憶體使用狀況:
      total:實(shí)體記憶體容量
      free:剩餘記憶體容量
      used:已使用的記憶體容量
      buff/cach:暫存記憶體容量
      KiB Swap swap使用狀況
      total:swap總?cè)萘?br>free:剩餘的swap容量
      used:已使用的swap容量
      avail Mem 暫存記憶體容量
    • 下半部資訊

      欄位 說(shuō)明
      PID 行程id(Process ID)
      USER 該行程使用者
      PR 行程優(yōu)先順序
      NI nice值(值越小優(yōu)先權(quán)優(yōu)高)
      VIRT 該行程使用的虛擬記憶體總量,單位kb(VIRT=SWAP+RES)
      RES 該行程程使用的、未被使用的實(shí)體記憶體大小,單位kb(RES=CODE+DATA)
      SHR 共用記憶體大?。▎挝籯b)
      S 行程狀態(tài):
      D=不可中斷的睡眠狀態(tài)
      R=運(yùn)行
      S=睡眠
      T=跟蹤/停止
      Z=僵屍進(jìn)程
      %CPU 上次更新到現(xiàn)在的CPU時(shí)間佔(zhàn)用百分比
      %MEM 行程使用的實(shí)體記憶體百分比
      TIME+ 行程使用的CPU時(shí)間總計(jì),單位1/100秒
      COMMAND 行程名稱
  5. 編寫腳本,使用for和while分別實(shí)現(xiàn)192.168.0.0/24網(wǎng)段內(nèi),地址是否能夠ping通,若ping通則輸出"success!",若ping不通則輸出"fail!"

    • 使用 for 迴圈
    #!/bin/bash
    
    ip='192.168.0.'
    for ips in $(seq 254)
    do
        /bin/ping -c 2 -W 1 $ip$ips > /dev/null
        if [ "$?" -le "0" ]; then
                echo " $ip$ips Success!"
        else
                echo " $ip$ips Fail!"
        fi
    done
    
    • 使用 while 迴圈
    #!/bin/bash
    
    ip='192.168.0.'
    declare -i num=1
    while (( "$num" <= "254" ));
    do
        /bin/ping -c 2 -W 1 $ip$num > /dev/null
        if [ "$?" -le "0" ]; then
                echo " $ip$num Success!"
        else
                echo " $ip$num Fail!"
        fi
    
        let num++
        echo $num
    done
    
    exit
    
  6. 每周的工作日1:30,將/etc備份至/backup目錄中,保存的文件名稱格式 為“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的時(shí)間

    • 寫一個(gè)備份腳本(/root/crontab.sh),再放入 cronjob
    #!/bin/bash
    
    dir='/backup'
    file="etcbak-`date -d -1day +%F-%H`"
    if [ ! -e $dir ]; then
        echo '建立'$dir
        mkdir  $dir
    fi
    
    /usr/bin/tar zcvf  $dir/$file.tar.gz /etc/  > /dev/null
    
    $ sudo crontab  -e
    30 01 * * 1-5 sh /root/crontab.sh  > /dev/null
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容