第六周作业

1、编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)。

使用expect登录远程主机:

#!/usr/bin/expect
spawn ssh root@10.0.0.160
expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "123456\n" }
}
expect "]#" { send "echo ok\n"}
expect "]#" { send "exit\n"}
interact
 

 shell脚本实现:

#!/bin/bash
read -p "请输入IP:" ip
port=22
expect <<EOF
set timeout 20
spawn ssh -p $port root@$ip
expect {
    "yes/no" { send "yes\n";exp_continue}
    "password" { send "123456\n"}
}
expect "#" {send "echo haha\n"}
expect "#" {send "exit\n" }
expect eof
EOF
 

2、生成10个随机数保存于数组中,并找出其最大值和最小值

#!/bin/bash
max=0
min=0

#生成10个随机数
for i in `seq 10`
    do
    a[$i]=$RANDOM;
    echo a[$i]=${a[$i]}
done
max=${a[1]}
min=${a[1]}

比较大小,找出最大最小。
for i in `seq 10`
    do
    if [ $max -lt ${a[$i]} ];then
        max=${a[$i]}
    elif [ $min -gt ${a[$i]} ];then
        min=${a[$i]}
    fi
    done
echo "max=$max and min=$min"

 3、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序

#!/bin/bash
read -p "请输入生成多少个随机数:" num
#创建数组
for i in `seq $num`
do
    a[$i]=$RANDOM
    echo a[$i]=${a[$i]}
done
#echo ${#a[@]}
echo "====================================="
b=0
l=0
for j in `seq $num`
do
    for k in `seq $[num-j]`
    do
    if [ ${a[$k]} -gt ${a[$[k+1]]} ];then
    b=${a[$[k+1]]}
    a[$[k+1]]=${a[$k]}
    a[$k]=$b
    #l=$k
    #k=$j
    #j=$l
    fi
    done
    #echo a[$j]=${a[$j]}
done
for n in `seq $num`
do
    echo a[$n]=${a[$n]}
done

[注]目前只是排好大小,并没有让数组编号变动。需要改进。

 4、总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求全部写出来)

第一行: top - 12:51:59 up 53 days, 12:19,  1 user,  load average: 0.00, 0.01, 0.05

12:51:59:系统当前时间

up 53 days, 12:19:系统运行时间

 1 user:在线用户数

load average: 0.00, 0.01, 0.05:系统1分钟、5分钟、15分钟的CPU负载信息,最多不能超过5

第二行:Tasks:  83 total,   2 running,  81 sleeping,   0 stopped,   0 zombie

83 total:当前系统83个任务;

1 running:正在运行中的任务:2个

82 sleeping:正在休眠的任务:81个

0 stopped:已经停止的任务:0个

0 zombie:僵尸任务:0个

第三行:%Cpu(s):  0.0 us,  3.2 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

0.0 us:用户态进程占用CPU时间百分比

3.2 sy:内核占用CPU时间百分比

 0.0 ni:renice值为负的任务的用户态进程的CPU时间百分比。nice是优先级的意思。值得范围:-20~19
96.8 id:空闲CPU时间百分比

0.0 wa:等待I/O的CPU时间百分比

0.0 hi:CPU硬中断时间百分比

0.0 si:CPU软中断时间百分比

0.0 st:这个虚拟机被hypervisor偷去的CPU时间

第四行:KiB Mem :  1776404 total,   117932 free,   147680 used,  1510792 buff/cache

1776404 total:内存总大小:1.7G

117932 free:空闲内存总量:0.11G

147680 used:空闲内存总量:0.14G

1510792 buff/cache:缓存的内存量:1.5G

第五行:KiB Swap:        0 total,        0 free,        0 used.  1425128 avail Mem

0 total:交换区总量:0G

 0 free:空闲交换区:0G

0 used:已用交换区:0G

1425128 avail Mem:可用交换区内存:1.4G

第六行:PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

PID:进程ID

USER:进程所有者的实际用户名

 PR:进程的调度优先级,这个字段的一些值是'rt'。这意味这这些进程运行在实时态。

NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级,值得范围:-20~19

VIRT:进程使用的虚拟内存:进程使用的虚拟内存总量,单位kb,VIRT=SWAP+RES

 RES:占用得内存大小,单位kb

SHR:HR是进程使用的共享内存单位kb

S:这个是进程的状态。它有以下不同的值:

  • D - 不可中断的睡眠态。
  • R – 运行态
  • S – 睡眠态
  • T – 被跟踪或已停止
  • Z – 僵尸态

%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。

%MEM:进程使用的物理内存百分比。

TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND:运行进程所使用的命令或程序。

5、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"up",若ping不通则输出"down"

for循环:

#!/bin/bash

ip=192.168.0.
for i in `seq 254`
do

    ( ping -c2 -W1  $ip$i &> /dev/null && echo "$i is up" || echo "$i is down" )&
done
wait
 

 while循环:

#!/bin/bash
i=1
while [ $i -le 254 ];do
     ( ping -c2 -W1 "192.168.0.$i" &>/dev/null && echo "192.168.0.$i is up" || echo "192.168.0.$i is down" )&
let i++

done

6、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间

编写备份脚本:

#!/bin/bash
cd /etc/
time=`date -d  "-1 day" +%F-%H:%M`
tar -Jcvf /backup/etcbak-${time}.tar.xz /etc/ &> /dev/null
 

开启计划任务:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值