第六周作业
1、编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)。
(1) expect脚本形式:
#!/usr/bin/expect
set ip 10.0.0.150
set user root
set password 123456
set timeout 10
spawn ssh $user@$ip
expect {
“yes/no” { send “yes\n”;exp_continue }
“password”{ send “$password\n” }
}
interact
(2) shell 脚本形式:
#!/usr/bin/ bash
ip=10.0.0.150
user=root
password=123456
expect <<EOF
set timeout 10
spawn ssh $user@$ip
expect {
“yes/no” { send “yes\n”;exp_continue }
“password”{ send “$password\n” }
}
expect eof
EOF
2、生成10个随机数保存于数组中,并找出其最大值和最小值
declare -i min max
declare -a nums
for ((i=0;i<10;i++));do
nums[$i]=$RANDOM
[ $i -eq 0 ] && min=${nums[0]} && max=${nums[0]}&& continue
[ ${nums[$i]} -gt $max ] && max=${nums[$i]} && continue
[ ${nums[$i]} -lt $min ] && min=${nums[$i]}
done
echo "All numbers are ${nums[*]}"
echo Max is $max
echo Min is $min
3、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
#!/bin/bash
k=0
while true
do
read -p "是否需要输入数值[yes/no]:" do
if [ $do == "no" ]
then break
fi
read -p "请输入第$(($k+1))个元素:" key
score[$k]=$key
let k++
done
for ((i=1;i<${#score[*]};i++))
do
for ((j=0;j<${#score[*]}-$i;j++))
do
if [ ${score[$j]} -gt ${score[((j+1))]} ]
then
temp=${score[j+1]}
score[((j+1))]=${score[$j]}
score[$j]=$temp
fi
done
done
echo ${score[*]}
4、总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求全部写出来)
(1) pstree 可以用来显示进程的父子关系,以树形结构显示
(2) ps 可以进程当前状态的快照,默认显示当前终端中的进程,Linux系统各进程的相关信息都在/Proc/PID目录下的各文件。
(3) prtstat 可以显示进程信息,来自psmisc包
(4) top 查看进程的实时状态
选项:-d 只当刷新时间间隔,默认3秒
-b 全部显示所有进程
-n 刷新多少次后退出
-H 线程模式
5、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
(1)for脚本:
#!/bin/bash
for siteip in $(seq 1 254)do
site="192.168.1.${siteip}"
ping -c1 -W1 ${site} &> /dev/null
if [ "$?" == "0" ]; then
echo "$site is UP"
else
echo "$site is DOWN"
fi
done
(2) while脚本
#!/system/bin/sh
while true
do
ping -c 8 -w 100 www.baidu.com
if [[ $? != 0 ]];then
echo " ping fail "
sleep 5
else
echo " ping ok"
/system/bin/reboot
fi
done
5、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
#!/bin/bash
DIR=etcbak-`date -d '-1 day' +%Y-%m-%d-%H`
tar -Jcvf /backup/${DIR}.tar.xz /etc/ &> /dev/null
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通