2021-10-15 第六周

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

  • 使用expect实现自动登录远程主机:
#! /usr/bin/expect

spawn ssh root@10.48.4.18
expect {
        "yes/no" {send "yes\n";exp_continue}
        "password" { send "123123\n" }
}
interact

使用shell实现自定登录远程主机

#! /bin/bash

expect<<EOF
set timeout 10
spawn ssh root@10.48.4.18
expect {
        "yes/no" { send "yes\n";exp_continue}
        "password" {send "123123\n"}
}
expect eof
EOF

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

#!/bin/bash

declare -a arr

num=$[RANDOM%1000]
arr[0]=$num
arr[9]=$num

for i in `seq 1 8`
do
        num=$[RANDOM%1000]
        if [ $num -gt ${arr[0]} ];then
                arr[$i]=${arr[0]}
                arr[0]=$num
        elif [ $num -lt ${arr[9]} ];then
                arr[$i]=${arr[9]}
                arr[9]=$num
        else
                arr[i]=$num
        fi
done
echo "生成的10个随机数为:" ${arr[*]}
echo "最大值为:" ${arr[0]}
echo "最小值为:" ${arr[9]}
[root@route-c7 ~]# ./max_min.sh
生成的10个随机数为: 993 245 245 538 764 424 807 885 162 0
最大值为: 993
最小值为: 0
[root@route-c7 ~]#

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

#!/bin/bash
#冒泡排序

#生成数组
declare -a arr
for i in {0..19};do arr[i]=$[RANDOM%1000];done
echo "排序前"${arr[*]}
#升序
for (( i=${#arr[*]}-1;i>=1;i-- ))
do
       for (( j=1;j<=i;j++ ))
       do
               if [ ${arr[j]} -lt ${arr[j-1]} ];then
                       arr[j-1]=$[ arr[j]-arr[j-1] ]
                       arr[j]=$[ arr[j]-arr[j-1] ]
                       arr[j-1]=$[ arr[j]+arr[j-1] ]
               fi
       done
done

echo "排序后,从小到大输出:" ${arr[*]}
[root@route-c7 ~]# ./maopao.sh
排序前 812 617 717 610 414 350 439 436 763 383 341 747 986 812 237 568 915 896 113 487
排序后,从小到大输出: 113 237 341 350 383 414 436 439 487 568 610 617 717 747 763 812 812 896 915 986
[root@route-c7 ~]#
#降序
for (( i=${#arr[*]}-1;i>=1;i-- ))
do
        for (( j=1;j<=i;j++ ))
        do
                if [ ${arr[j]} -gt ${arr[j-1]} ];then
                        arr[j-1]=$[ arr[j]-arr[j-1] ]
                        arr[j]=$[ arr[j]-arr[j-1] ]
                        arr[j-1]=$[ arr[j]+arr[j-1] ]
                fi
        done
done
echo "排序后,从大到小输出:" ${arr[*]}

[root@route-c7 ~]# ./maopao.sh
排序前 478 764 901 994 436 550 738 141 784 800 702 357 932 678 626 174 811 402 52 784
排序后,从大到小输出: 994 932 901 811 800 784 784 764 738 702 678 626 550 478 436 402 357 174 141 52
[root@route-c7 ~]#


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

[root@r8 ~]# uptime 
 19:46:13 up  7:09,  1 user,  load average: 0.00, 0.00, 0.00
[root@r8 ~]# w
 19:46:14 up  7:09,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/1    10.48.0.1        12:40    4.00s  0.06s  0.00s w
[root@r8 ~]# top
top(程序名称) - 19:48:27(当前时间) up  7:11(系统启动运行的时间),  1 user(当前的总用户数),  load average(平均负载): 0.00(1分钟), 0.00(5分钟), 0.00(15分钟)

Tasks: 199 total(总任务数或总线程数),   2 running(运行中的任务或线程), 197 sleeping(休眠状态下的),   0 stopped(停止状态下的),   0 zombie(处于僵尸态的)

%Cpu(s):  0.0 us(un-niced用户进程的运行时间),  0.3 sy(内核进程运行时间),  0.0 ni(niced用户进程运行时间), 99.7 id(在内核空闲处理程序中花费的时间 ),  0.0 wa(等待IO完成所用的时间),  0.0 hi(服务硬件中断所花费的时间),  0.0 si(服务软件中断所花费的时间),  0.0 st(管理程序从此虚拟机中窃取的时间 )

MiB Mem :   1806.2 total(总物理内存),   1046.6 free(空闲的物理内存),    342.2 used(被使用的物理内存),    417.4 buff/cache(用作缓存的物理内存)


MiB Swap:    412.0 total,    412.0 free,      0.0 used.   1302.6 avail Mem 

   PID(进程ID) USER(用户名)      PR(任务的调度优先级)  NI(nice值)    VIRT(虚拟内存大小)    RES(常驻内存大小)    SHR(共享内存大小) S(进程状态)  %CPU(CPU的使用率)  %MEM(内存使用率)     TIME+(占用的CPU的时间) COMMAND(被执行的命令)  
                                                                                                             
  3023 root      20   0   64024   4680   3784 R   0.7   0.3   0:00.05 top                                                                                                                   
     1 root      20   0  176484  10908   8272 S   0.0   0.6   0:01.94 systemd    

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

  • 使用for循环
#!/bin/bash

net=192.168.0

for i in {1..254}
do
         {
                ( ping -c 1 -w 1 $net.$i &> /dev/null ) && echo -e "$net.$i \e[1;32msuccess!\e[0m" || echo -e "$net. $i \e[1;31mfail.\e[0m"

        }&
done
wait
  • 使用while循环
func(){
        seq 1 254 | while read host
        do
                {
                (ping -c1 -w1 $net.$host &> /dev/null) && echo -e "$net.$host \e[1;32msuccess!\e[0m" || echo -e "$net.$host \e[1;31mfail.\e[0m"
                }&
        done
}
func

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

[root@route-c7 backup]# crontab -l
30 1 * * 1-5 /root/cron.sh
[root@route-c7 backup]# cat ~/cron.sh
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
tar -cJf /backup/etcbak-$(date -d "yesterday" "+%F-%H").tar.xz /etc/ &> /dev/null
[root@route-c7 backup]#
[root@route-c7 backup]# ll
total 7256
-rw-r--r--. 1 root root 7429076 Oct 19 07:38 etcbak-2021-10-18-07.tar.xz
[root@route-c7 backup]#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值