随笔 - 17  文章 - 0  评论 - 0  阅读 - 2360

第六周作业

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

👉【expect 形式】

#!/usr/bin/expect
set ip 10.0.0.151
set user root
set password Time.9818
set timeout 5

spawn ssh $user@$ip
expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "$password\n" }
}
interact

> 执行结果 👇

👉【shell 脚本形式】

#!/bin/bash
ip=$1
user=$2
password=$3
expect << EOF
set timeout 20
spawn ssh $user@$ip
expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "$password\n" }
}
expect eof
EOF

> 执行结果 👇

 

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

#!/bin/bash
declare -i min max
declare -a nums
for ((i=0;i<10;i++));do
nums[$i]=$RANDOM
[ $i -eq 0 ] && min=${nums[$i]} && max=${nums[$i]}&& continue
[ ${nums[$i]} -gt $max ] && max=${nums[$i]}
[ ${nums[$i]} -lt $min ] && min=${nums[$i]}
done
echo “All numbers are ${nums[*]}echo Max is $max
echo Min is $min

> 执行结果 👇

 


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

#!/bin/bash
read -p "请输入数值个数:" COUNT
declare -a nums
for ((i=0;i<$COUNT;i++));do
    num[$i]=$RANDOM
done
echo "The initial array:"
echo ${num[@]}

declare -i n=$COUNT
for (( i=0; i<n-1; i++ ));do
    for (( j=0; j<n-1-i; j++ ));do
        let x=$j+1
        if (( ${num[$j]} < ${num[$x]} ));then
 #从大到小排列
            tmp=${num[$x]}
            num[$x]=${num[$j]}
            num[$j]=$tmp
        fi
    done
done
echo "After sort:"
echo ${num[*]}
echo "the max integer is $num,the min integer is ${num[$((n-1))]}"

> 执行结果 👇


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

w、uptime、mpstat、htop

top:提供动态的实时进程状态

top:命令栏位信息简介

us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间

top选项:

-d # 指定刷新时间间隔,默认为3秒
-b 全部显示所有进程
-n # 刷新多少次后退出
-H   线程模式


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

注:为了展示能ping通的效果,临时把网段改成 192.168.22.0/24

>  for循环脚本

#!/bin/bash

net=192.168.22

for i in {1..254};do
   {

   ping -w1 -c1 $net.$i &>/dev/null  && echo -e  "\033[32m $net.$i success! \033[0m"   ||  echo -e "\033[31m $net.$i fail! \033[0m"

   }&

done
wait

> 执行结果 👇

 # 结果太长,只截取其中一部分用来展示

 

> while循环脚本

#!/bin/bash
net=192.168.22
ip=1

while [ $ip != "255" ]; do

        ping -w1 -c2 $net.$ip &>/dev/null &&  echo " $net.$ip is success! " || echo " $net.$ip is fail! "
     ip=`expr "$ip" "+" "1"`
done

> 执行结果 👇

 # 结果太长,只截取其中一部分用来展示


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

> 脚本

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

# 判断/backup是否存在,如不存在则创建
[ -d /backup ] || mkdir /backup

# 压缩/etc 到指定目录
tar -zcvf  /backup/etcbak-`date  -d "1 day ago"  +"%F_%H"`.tar.xz /etc

> 配置计划任务

30 1 * * 1-5  bash backup.sh

 

posted on   Simple音七  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示