1.编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)。
答:
先用yum安装expect命令 ?
#!/usr/bin/expect
set -ue
set IP "192.168.128."
set i "101"
spawn ssh root@$IP$i
expect{
"yes/no" { send "yes";exp_continue }
"passwd" { send "123456" }
}
interact
2、生成10个随机数保存于数组中,并找出其最大值和最小值
答:脚本如下
#!/bin/bash
declare -a NUM
for ((i=0;i<=10;i++));do
NUM[$i]="$RANDOM"
if [ $i -eq 0 ];then
Min=${NUM[$i]} Max=${NUM[$i]}
elif [ ${NUM[$i]} -gt $Max ];then
Max=${NUM[$i]}
elif [ ${NUM[$i]} -lt $Min ];then
Min=${NUM[$i]}
else continue
fi
done
echo "Max: $Max"
echo "Min: $Min"
效果演示:
3、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序?
答: ?
#!/bin/bash
set -ue
declaer -a X_Num
for i in {0..9};do
X_Num[$i]=$RANDOM
if [ $i -eq 0 ];then
continue
else
for ((j=1;j<=i;j++));do
if [ ${X_Num[$i]} -gt ${X_Num[$i-1]} ];then
X_Num[10]=X_Num[$i-1]
X_Num[(($i-1))]=${X_Num[$i]}
X_Num[$i]=${X_Num[10]}
fi
done
fi
done
echo ${X_Num[@]}
?? ??? ?
4、总结查看系统负载的几种命令,总结top命令的指标大概什么含义 ?
命令 top
top - 21:40:57 up 41 min, 1 user, load average: 0.96, 0.48, 0.19
Tasks: 156 total, 1 running, 155 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 3.1 sy, 0.0 ni, 46.9 id, 50.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 782.4 total, 358.5 free, 219.5 used, 204.4 buff/cache
MiB Swap: 2144.0 total, 2144.0 free, 0.0 used. 436.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 183620 11172 8704 S 0.0 1.4 0:01.91 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
load average: 0.96, 0.48, 0.19 任务在CPU上等待队列长度 1 5 15 min #长时间超过3,CPU无法完成当前负载
%Cpu(s): 0.0 us, 3.1 sy, 0.0 ni, 46.9 id, 50.0 wa, 0.0 hi, 0.0 si, 0.0 st
0.0 us, 3.1 sy, 用户空间负载 内核空间负载
ni nice调整优先级消耗的资源
id idle 空闲资源
wa wait 等待IO完成时间 #数值大,说明出现IO瓶颈
hi 硬件中断
si 软件中断
st 被偷走的资源(虚拟化环境)
running 运行中的进程
sleeping 睡眠进程
stopped 停止的进程
zombie 僵死态
5、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
答:
脚本如下 ?
#!/bin/bash
set -ue
IP="192.168.0."
{ for i in {1..254};do
ping -c1 -w1 $IP$i &> /dev/null && echo "$IP$i success" || echo "$IP$i is fail!" &
done } | sort -t. -k4 -n
效果演示:
6、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间 答:
crontab -e
30 1 * * 1,2,3,4,5 /bin/bash /root/backup.sh
#!/bin/bash
tar -cJvf /backup/etcbak`date -s -1day +%F`.tar.xz /etc/*
|