N59030-第六周作業

  1. 编写脚本实现登陆远程主机

    • 使用 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个随机数保存于数组中,并找出其最大值和最小值

    #!/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 "總數: ${nums[*]}"
    echo "最大值: $max"
    echo "最小值: $min"
    
  3. 输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序

    #!/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 "總數: ${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 "新排列的總數:${nums[*]}"
    
  4. 总结查看系统负载的几种命令,总结top命令的指标大概什么含义


    • 上半部資訊

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

      欄位 說明
      PID 行程id(Process ID)
      USER 該行程使用者
      PR 行程優先順序
      NI nice值(值越小優先權優高)
      VIRT 該行程使用的虛擬記憶體總量,單位kb(VIRT=SWAP+RES)
      RES 該行程程使用的、未被使用的實體記憶體大小,單位kb(RES=CODE+DATA)
      SHR 共用記憶體大小(單位kb)
      S 行程狀態:
      D=不可中斷的睡眠狀態
      R=運行
      S=睡眠
      T=跟蹤/停止
      Z=僵屍進程
      %CPU 上次更新到現在的CPU時間佔用百分比
      %MEM 行程使用的實體記憶體百分比
      TIME+ 行程使用的CPU時間總計,單位1/100秒
      COMMAND 行程名稱
  5. 编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够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”,其中日期是前一天的时间

    • 寫一個備份腳本(/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
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容