1、编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)。
yum -y install expect
#方法1
vim expect_ssh.sh
#!/usr/bin/expect
set ip 10.0.0.8
set user root
set password 123456
set timeout 10
sapwn ssh $user@$ip
expect {
"yes/no { send "yes\n";exp_continue }"
"password" { send "$password\n" }
}
interact
#方法2
[root@centos8 ~]#vim shell_login.sh
#!/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个随机数保存于数组中,并找出其最大值和最小值
vim max_min.sh
#!/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 “Numbers are ${nums[*]}”
echo Max is $max
echo Min is $min
3、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
vim maopao.sh
#!/bin/bash
i=0
flag=0
wrong=0
#保存数组值
while true;do
read -p "请输入数字(输入quit退出):" num
if [[ "$num" == ^"" ]];then
echo "请输入数字 你已经输错了$wrong 次"
let wrong++
fi
if [ $wrong -eq 5 ];then
echo "你输错 $wrong 次 "
break
elif [[ $num == quit ]];then
break
elif [[ $num =~ ^[-]{0,1}[[:digit:]]{0,}[.]{0,1}[[:digit:]]{0,}[[:digit:]]$ ]];then #筛选出 整数 小数 负数
echo $num
array[$i]=$num
let i++
else
echo "请输入数字 你已经输错了$wrong 次"
let wrong++
fi
done
#比较两个数大小
compare () {
echo $1 > /app/0324/tmp
echo $2 >> /app/0324/tmp
max=$(cat /app/0324/tmp|sort -nr|head -1)
if [[ "$max" == "$1" ]];then
flag=1
else
flag=0
fi
}
#冒泡排序
length=${#array[*]}
for i in $(seq 0 $length);do
for j in $(seq 0 $[$length-$i]);do
t=$[$j+1]
compare ${array[$j]} ${array[$t]}
if [ $flag -eq 1 ];then
temp=${array[$j]}
array[$j]=${array[$t]}
array[$t]=$temp
fi
done
done
echo "从小到大排序为:${array[*]}"
[root@localhost ~]# chmod +x maopao.sh
[root@localhost ~]# ./maopao.sh
请输入数字(输入quit退出):4565
4565
请输入数字(输入quit退出):56
56
请输入数字(输入quit退出):12
12
请输入数字(输入quit退出):quit
4、总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求全部写出来)
- uptime:查看系统平均负载
- mpstat:百分比显示CPU利用率的各项指标
- top和htop:查看进程的实时状态
- free:查看内存空间的使用状态
- pmap:查看进程对应的内存映射,可以看到进程依赖的子模块占用的内存数量,可以以此判断OOM
- vmstat:查看虚拟内存的信息,可以以用户定义的间隔不断刷新状态,能够看到内存与SWAP、磁盘之间的IO情况;
- iostat:能够看到更丰富的IO性能状态,可以自定义刷新间隔判断哪块硬盘的IO比较繁忙;-x参数可以看到磁盘基于扇区的IO,队列长度,处理时间等
- iotop:以top方式监控磁盘的I/O,实时监控,而且可以只显示正在执行读写的进程,提供很多非交互式参数;
- iftop:显示网络带宽的使用情况,查看访问当前主机的流量的实时信息,实时连接等;
- nload:只能以接口为单位查看实时吞吐量,看不到连接信息,只有速率信息;
5、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
#for实现
#!/bin/bash
NET=192.168.0
for ID in {1..254};do
{
ping -c1 -w1 $NET.$ID &> /dev/null && echo success! || echo fail!
}&
done
wait
#while实现
#!/bin/bash
NET=192.168.0
ID=1
while [$ID -le 254];do
{
ping -c1 -w1 $NET.$ID &> /dev/null && ehco success! || echo fail!
}&
let ID++
done
wait
6、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
架构需掌握的进度:
[root@localhost ~]#vim bakup.sh
#!/bin/bash
#****************************************************************
#Author:Linuxdc.com
#email:332194970@qq.com
#Date: 2021-12_21
#FileName: bakup.sh
#CSDN: https://blog.cadn.net/easyboyFcku/
#Description: Annotated script
#****************************************************************
BACKNAME=etcbak-`date -d -1day +%F-%H`
tar -Jcvf /backup/${BACKNAME}.tar.xz /etc &> /dev/null
[root@localhost ~]#bash -n bakup.sh
[root@localhost ~]#chmod +x bakup.sh
[root@localhost ~]#crontab -e
30 13 * * 1-5 /usr/bin/bash /data/scripts/bakup.sh
[root@localhost ~]#./bakup.sh
[root@localhost ~]#
[root@localhost ~]# echo $?
0
[root@localhost ~]# ll /backup/
浙公网安备 33010602011771号