第六周作业
1. 编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)
expect
#!/bin/expect
set password [lindex $argv 0]
spwan ssh -p22 root@192.168.254.100
expect {
'yes/no' { send "yes\n";expect_continue }
'password' { send "$password\n" }
}
interact
shell
#!/bin/bash
password=$1
expect << EOF
spwan ssh -p22 root@192.168.254.100
expect {
'yes/no' { send "yes\n";expect_continue }
'password' { send "$password\n" }
}
interact
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[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
read -p "请输入需要生成随机数的个数:" count
declare -a nums
for ((i=0;i<${count};i++));do
nums[$i]=$RANDOM
done
echo -e "all the nums are:"
echo ${nums[@]}
declare -i L=${count}
for ((i=0;i<$L;i++));do
for ((j=0;j<$L-1;j++));do
if (( ${nums[$j]} < ${nums[$x]} ));then
tmp=$[$x]
nums[$x]=${nums[$j]}
nums[$j]=${tmp}
fi
done
done
echo "After sort:${nums[*]}"
4. 总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求全部写出来)
查看系统负载的命令
w、top、uptime
top命令指标含义
第一行
当前时间,运行时间,登录用户数,负载:1分钟 5分钟 15分钟
第二行
进程数:总进程数,运行进程数,休眠进程数,暂停进程数,僵尸进程数
第三行
CPU使用率:用户空间,内核空间,用户空间通过nice调整优先级占用的CPU时间比,空闲,等待输入输出,硬中断,软中断
第四行
内存:总大小,空闲大小,使用大小,缓冲/缓存大小
第五行
swap:总大小,空闲大小,使用大小,可用大小
PID:进程号
USER:用户名
PR:进程优先级
NI:nice值。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量,单位KB,VIRT=SWAP+RES
RES:进程使用的物理内存总量,单位KB
SHR:共享内存大小
S:进程状态,R=运行,S=睡眠,T=停止,D=不可中断睡眠状态,Z=僵尸进程
%CPU:进程占用CPU时间比
%MEM:进程占用物理内存时间比
TIME+:进程使用CPU时间总计,单位1/100秒
COMMAND:进程名称(命令名/命令行)
5. 编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
for循环语句
#!/bin/bash
for i in `seq 1 254`;do
ping -w1 -c1 192.168.0.$i &> /dev/null
if [ $? = 0 ];then
echo "$i success!"
else
echo "$i fail!"
fi
done
while循环语句
#!/bin/bash
j=1
while ((j<255));do
ping -w1 -c1 192.168.0.$j &> /dev/null
if [ $? -eq 0 ];then
echo "$j is success!"
else
echo "$j fail!"
fi
((j++))
done
6. 每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
vim /etc/crontab
30 1 * * 1-5 tar -Jcvf /backup/etcbak-`date -d "-1 day" +%F-%H`-HH.tar.xz /etc/
xiao__fei
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通