第六周作業(yè)

1粉楚、編寫腳本實(shí)現(xiàn)登陸遠(yuǎn)程主機(jī)。(使用expect和shell腳本兩種形式)

腳本形式:

#!/bin/bash
#****************************************************************************************#
#Author:                        
#QQ:                            
#Date:                          2021-10-14
#FileName:                      ssh.sh
#URL:                           
#Description:                   non-interactive SSH script
#Copyright (C):                 2021 All rights reserved
#*******************************定義顏色*************************************************#
RED="\e[1;31m"
GREEN="\e[1;32m"
SKYBLUE="\e[1;36m"
YELLOW="\e[1;43m"
BLUE="\e[1;44m"
END="\e[0m"
RandomColor="\e[1;34m"
#****************************************************************************************#
declare -A hosts
Move="echo -en \E[8G"

#如果位置參數(shù)是一個包含username:password:ip格式的文件,則將文件內(nèi)容存儲為數(shù)組
function arr_user {
#好像j的值是會變成最后一次循環(huán)后的值模软,沒具體確認(rèn)
   j=1
   for i in `grep -oE "^\w+" $1`;do
        hosts[user$j]=$i
        #echo $j is ${hosts[user$j]}
        ((j = ++j))
   done
   j=1
   for l in `sed -nr 's/\w+\:(\w+)\:(.*)/\1/p' $1`;do
        hosts[passwd$j]=$l
        #echo $j is ${hosts[passwd$j]}
        ((j = ++j))
   done
   j=1
   for k in `sed -nr 's/\w+\:(\w+)\:(.*)/\2/p' $1`;do
        hosts[ip$j]=$k
       #echo $j is ${hosts[ip$j]}
        ((j = ++j))
   done
}

#ssh非交互式登錄函數(shù)
function expect_ssh {
expect <<haha
        set timeout 20
        spawn ssh $1@$3
        expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "$2\n";exp_continue }
        -re "#|Ubuntu" { send "exit\n" } -re "refused|No\\\sroute" { send "Connection failed!\n" }
        }
        expect eof
haha
}

#arr_user $1
#echo ${hosts[*]}
#for ((e=1;e<=3;e++));do
#   echo ${hosts[user$e]}
#   echo ${hosts[passwd$e]}
3   echo ${hosts[ip$e]}
#done

[ $# -eq 0 ] && { echo -n "Usage: " && $Move; echo "`basename $0` /PATH/TO/FILENAME";$Move; echo "`basename $0` USERNAME PASSWD IP";exit; }
if [ -f $1 ];then 
    arr_user $1
    number=`cat $1 | wc -l`
    for (( n=1;n<=$number;n++ ));do
        expect_ssh ${hosts[user$n]} ${hosts[passwd$n]} ${hosts[ip$n]}
    done
    exit
else
    expect_ssh $1 $2 $3
    exit
fi

expect形式

#!/usr/bin/expect
set user [lindex $argv 0]
set passwd [lindex $argv 1]
set ip [lindex $argv 2]
spawn ssh $user@$ip
expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "$passwd\n";exp_continue }
        -re "#|Ubuntu" { send "exit\n" } -re "refused|No\\\sroute" { send "Connection failed!\n" }
       }
expect eof

2伟骨、生成10個隨機(jī)數(shù)保存于數(shù)組中,并找出其最大值和最小值

#!/bin/bash
declare -A number
function Random_number {
    for ((i=0;i<=9;i++));do
        number[digit[$i]]=$RANDOM
    done
    echo "Random Number Range: ${number[*]}"
}

Random_number
max=0
min=0

for j in `seq 0 9`;do
    [ ${number[digit[$j]]} -gt $max  ] && max=${number[digit[$j]]}
    #cmd1和cmd2任意一個執(zhí)行成功都執(zhí)行cmd3
    [ $min -eq 0 ] || [ ${number[digit[$j]]} -lt $min ] && min=${number[digit[$j]]}
done

echo "Max number is: $max"
echo "Min number is: $min"

3燃异、輸入若干個數(shù)值存入數(shù)組中携狭,采用冒泡算法進(jìn)行升序或降序排序

#!/bin/bash
#****************************************************************************************#
#Author:                        Yb11
#QQ:                            394960885
#Date:                          2021-10-15
#FileName:                      bubble_sort.sh
#URL:                           https://github.com/yabao11
#Description:                   Bubble_sort
#Copyright (C):                 2021 All rights reserved
#*******************************定義顏色*************************************************#
RED="\e[1;31m"
GREEN="\e[1;32m"
SKYBLUE="\e[1;36m"
YELLOW="\e[1;43m"
BLUE="\e[1;44m"
END="\e[0m"
RandomColor="\e[1;34m"
#****************************************************************************************#
function Random_number {
  if [[ $1 =~ [[:digit:]]+ ]];then
    for ((i=0;i<$1;i++));do
        number[$i]=$RANDOM
    done
    echo "Random Number range: ${number[@]}"
    echo
  elif [[ $1 =~ \-h ]];then
    echo "[help info]"
  else
    echo "Wrong Number!"
    echo "[help info]"
  fi
}

function bubble_sort {
    for ((j=0;j<$1;j++));do
            for ((k=0;k<$1;k++));do
                l=$[$k + 1]
                if [[ $2 =~ \-i ]];then
                    if [ $l -eq $1 ];then
                        break
                    elif [ ${number[$k]} -gt ${number[$l]} ];then
                        { temp=${number[$l]};number[$l]=${number[$k]};number[$k]=$temp; }
                    else
                        continue
                    fi
                elif [[ $2 =~ \-d ]];then
                    if [ $l -eq $1 ];then
                        break
                    elif [ ${number[$k]} -lt ${number[$l]} ];then
                        { temp=${number[$l]};number[$l]=${number[$k]};number[$k]=$temp; }
                    else 
                        continue
                    fi
                else
                    echo "Wrong option!"
                    echo
                fi   
            done
    done
}


Random_number $1
if [[ $1 =~ [[:digit:]]+ ]];then
    for ((j=0;j<$1;j++));do
        bubble_sort $1 $2
    done
else
    echo "Usage: "
    echo "       `basename $0` NUMBER [-i|-d] "
    echo "       `basename $0` -h"
    echo
    echo "[options]"
    echo "-i     increasing"
    echo "-d     decreasing"
    exit
fi

#echo  ${number[*]} | sort -n
for m in `seq 0 $1`;do
    echo  ${number[$m]}
done

4、總結(jié)查看系統(tǒng)負(fù)載的幾種命令回俐,總結(jié)top命令的指標(biāo)大概什么含義(不要求全部寫出來)

uptime:查看系統(tǒng)平均負(fù)載

mpstat:百分比顯示CPU利用率的各項(xiàng)指標(biāo)

top和htop:查看進(jìn)程的實(shí)時狀態(tài)

free:查看內(nèi)存空間的使用狀態(tài)

pmap:查看進(jìn)程對應(yīng)的內(nèi)存映射逛腿,可以看到進(jìn)程依賴的子模塊占用的內(nèi)存數(shù)量,可以以此判斷OOM

vmstat:查看虛擬內(nèi)存的信息仅颇,可以以用戶定義的間隔不斷刷新狀態(tài)单默,能夠看到內(nèi)存與SWAP、磁盤之間的IO情況忘瓦;

iostat:能夠看到更豐富的IO性能狀態(tài)雕凹,可以自定義刷新間隔判斷哪塊硬盤的IO比較繁忙;-x參數(shù)可以看到磁盤基于扇區(qū)的IO政冻,隊(duì)列長度枚抵,處理時間等

iotop:以top方式監(jiān)控磁盤的I/O,實(shí)時監(jiān)控明场,而且可以只顯示正在執(zhí)行讀寫的進(jìn)程汽摹,提供很多非交互式參數(shù);

iftop:顯示網(wǎng)絡(luò)帶寬的使用情況苦锨,查看訪問當(dāng)前主機(jī)的流量的實(shí)時信息逼泣,實(shí)時連接等;

nload:只能以接口為單位查看實(shí)時吞吐量舟舒,看不到連接信息拉庶,只有速率信息;

top命令的指標(biāo)

top - 17:21:28 up  8:49,  2 users,  load average: 0.00, 0.02, 0.07
Tasks: 148 total,   1 running, 145 sleeping,   2 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.2 hi,  0.2 si,  0.0 st
MiB Mem :   1790.4 total,   1274.4 free,    225.1 used,    290.9 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1387.5 avail Mem 

    PID  %MEM    VIRT    RES   CODE    DATA    SHR nMaj nDRT  %CPU COMMAND                                                          
    879   2.2  229132  40800    288    1356  39140   10    0   0.0 sssd_nss                                                         
    809   1.5  416616  28400      8   37804  15136   53    0   0.0 tuned                                                            
    775   1.3 1628184  23316    104   54744  17040   75    0   0.0 polkitd                                                          
    777   1.0  391668  18464   3344   26896  16056   60    0   0.0 NetworkManager                                                   
    851   0.8  227520  15356    224    2132  12804    9    0   0.0 sssd_be                                                          
    646   0.8  128924  14548    304    5972   8348    9    0   0.0 systemd-udevd                                                    
    773   0.8  218960  14500     80    1640  12452   26    0   0.0 sssd                                                             
      1   0.8  185928  14060   1288   20808   9252   75    0   0.0 systemd                                                          
    897   0.7  217660  12404    664   22136   3508   10    0   0.0 rsyslogd                                                         
top - 17:21:28 up  8:49,  2 users,  load average: 0.00, 0.02, 0.07
   `當(dāng)前時間` `開機(jī)時間`  `當(dāng)前登錄用戶數(shù)` `平均負(fù)載秃励,5分鐘氏仗、10分鐘、15分鐘`
Tasks: 148 total,   1 running,       145 sleeping,      2 stopped,        0 zombie
      `總?cè)蝿?wù)數(shù)` `當(dāng)前正在運(yùn)行的任務(wù)數(shù)` `處于休眠的任務(wù)數(shù)`  `停止?fàn)顟B(tài)的任務(wù)數(shù)`  `僵尸態(tài)的進(jìn)程數(shù)`
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.2 hi,  0.2 si,  0.0 st

上一次刷新后間隔內(nèi)CPU狀態(tài)的百分比情況夺鲜;是多核CPU的平均值皆尔,可以按1切換顯示為獨(dú)立的CPU統(tǒng)計(jì);
us:用戶空間內(nèi)沒有nice調(diào)整過優(yōu)先級的進(jìn)程運(yùn)行的時間
sy:內(nèi)核空間進(jìn)程運(yùn)行的時間
ni:調(diào)整過nice的用戶空間進(jìn)程運(yùn)行時間
id:空閑時間
wa:等待IO的時間
hi币励,硬中斷時間
si慷蠕,軟中斷(模式切換)
st,虛擬機(jī)偷走的時間(虛擬機(jī)內(nèi)進(jìn)程執(zhí)行的時間)

MiB Mem :   1790.4 total,   1274.4 free,    225.1 used,    290.9 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1387.5 avail Mem 

內(nèi)存和交換分區(qū)的使用情況:
total:總大小
free:空閑大小食呻,加上buff/cache后是真正可以使用的總空閑空間
used:已使用的大小
buff/cache:數(shù)據(jù)緩存占用的大小
    PID  %MEM    VIRT    RES   CODE    DATA    SHR nMaj nDRT  %CPU COMMAND
    
PID:進(jìn)程ID
%MEM:內(nèi)存使用百分比
VIRT:使用的虛擬內(nèi)存大小流炕,包括已經(jīng)被映射但還未被使用的頁表
RES:使用的物理內(nèi)存大小
CODE:可用于執(zhí)行代碼的物理內(nèi)存數(shù)量
DATA:進(jìn)程保留的私有內(nèi)存空間澎现,可能還未被映射到物理內(nèi)存,但已經(jīng)被算到虛擬內(nèi)存空間中
SHR:共享內(nèi)存空間每辟,可以被其他進(jìn)程共享
PR:top命令顯示的優(yōu)先級0-39之間昔头,越小
NI:nice優(yōu)先級
%CPU:CPU利用率
TIME+:進(jìn)程啟動之后占用的CPU時間,是時間片的累計(jì)
COMMAND:進(jìn)程關(guān)聯(lián)程序的名稱影兽,或啟動進(jìn)程的命令

5揭斧、編寫腳本,使用for和while分別實(shí)現(xiàn)192.168.0.0/24網(wǎng)段內(nèi)峻堰,地址是否能夠ping通讹开,若ping通則輸出"success!",若ping不通則輸出"fail!"

for實(shí)現(xiàn)

#!/bin/bash
for ip in `seq 254`;do
    echo -n "ping 192.168.0.$ip ...."
    ping 192.168.0.$ip -c 1 -w 1 &> /dev/null
    if [ $? == 0 ]; then
        echo "success!"
    else
        echo "fail!"
    fi
done

while實(shí)現(xiàn)

#!/bin/bash
ip=1       
while ((ip<=254));do
    echo -n "ping 192.168.0.$ip ...."
    ping 192.168.0.$ip -c 1 -w 1 &> /dev/null
    if [ $? == 0 ]; then
        echo "success!"
    else   
        echo "fail!"
    fi     
    let ip++
done

6捐名、每周的工作日1:30旦万,將/etc備份至/backup目錄中,保存的文件名稱格式 為“etcbak-yyyy-mm-dd-HH.tar.xz”镶蹋,其中日期是前一天的時間

想不到這道題坑這么多

[root@centos8mini ~]# crontab -l
PATH=/root:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
30 1 * * * backup.sh
[root@centos8mini ~]# cat backup.sh 
#!/bin/bash
[[ `date +%w` =~ [1-5] ]] && tar -cJPf /backup/etcbak-`date -d -1day +%F-%H`.tar.xz /etc || exit
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末成艘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贺归,更是在濱河造成了極大的恐慌淆两,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拂酣,死亡現(xiàn)場離奇詭異秋冰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)婶熬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門剑勾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赵颅,你說我怎么就攤上這事虽另。” “怎么了饺谬?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵捂刺,是天一觀的道長。 經(jīng)常有香客問我商蕴,道長叠萍,這世上最難降的妖魔是什么芝发? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任绪商,我火速辦了婚禮,結(jié)果婚禮上辅鲸,老公的妹妹穿的比我還像新娘格郁。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布例书。 她就那樣靜靜地躺著锣尉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪决采。 梳的紋絲不亂的頭發(fā)上自沧,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機(jī)與錄音树瞭,去河邊找鬼拇厢。 笑死,一個胖子當(dāng)著我的面吹牛晒喷,可吹牛的內(nèi)容都是我干的孝偎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼凉敲,長吁一口氣:“原來是場噩夢啊……” “哼衣盾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起爷抓,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤势决,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蓝撇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徽龟,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年唉地,在試婚紗的時候發(fā)現(xiàn)自己被綠了据悔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡耘沼,死狀恐怖极颓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情群嗤,我是刑警寧澤菠隆,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站狂秘,受9級特大地震影響骇径,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜者春,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一破衔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钱烟,春花似錦晰筛、人聲如沸嫡丙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽曙博。三九已至,卻和暖如春怜瞒,著一層夾襖步出監(jiān)牢的瞬間父泳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工吴汪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尘吗,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓浇坐,卻偏偏與公主長得像睬捶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子近刘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1擒贸、簡述osi七層模型和TCP/IP五層模型 osi七層模型: 應(yīng)用層 OSI 參考模型中最靠近用戶的一層,是為計(jì)...
    肖恩的博客閱讀 345評論 0 0
  • 1觉渴、Ubuntu系統(tǒng)網(wǎng)絡(luò)配置總結(jié)(包括主機(jī)名介劫、網(wǎng)卡名稱、網(wǎng)卡配置)設(shè)置主機(jī)名查看主機(jī)名:hostname主機(jī)名文件...
    馬暉閱讀 296評論 0 0
  • 1案淋、自建yum倉庫座韵,分別為網(wǎng)絡(luò)源和本地源 基于光盤的yum源 systemctl start autofs sys...
    獅子搏兔_126c閱讀 229評論 0 1
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭踢京,有人歡樂有人憂愁誉碴,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,528評論 28 53
  • 首先介紹下自己的背景: 我11年左右入市到現(xiàn)在,也差不多有4年時間蹈丸,看過一些關(guān)于股票投資的書籍成黄,對于巴菲特等股神的...
    瞎投資閱讀 5,694評論 3 8