第六周作业

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命令指标含义
image

第一行
当前时间,运行时间,登录用户数,负载: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/
posted @ 2022-04-11 09:55  xiao__fei  阅读(26)  评论(0编辑  收藏  举报