卢征第六周作业
expect形式:
#!/usr/bin/expect set ip 10.0.0.7 set user root set password **** set timeout 10 spawn ssh $user@$ip expect { "yes/no" { send "yes\n";exp_continue } "password" { send "$password\n" } } interact shell形式:
#!/bin/bash ip=10.0.0.7 user=root password=**** 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个随机数保存于数组中,并找出其最大值和最小值
#!/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 “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 num[$i]=$RANDOM done echo "The initial array:" echo ${num[@]}
declare -i n=$COUNT for (( i=0; i<n-1; i++ ));do for (( j=0; j<n-1-i; j++ ));do let x=$j+1 if (( ${num[$j]} < ${num[$x]} ));then #从大到小排列 tmp=${num[$x]} num[$x]=${num[$j]} num[$j]=$tmp fi done done echo "After sort:" echo ${num[*]} echo "the max integer is $num,the min integer is ${num[$((n-1))]}"
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/bashNETID=10.0.0.for HOSTID in {1..254};do { if /bin/ping -c1 -W1 $NETID$HOSTID >/dev/null ;then echo "$NETID$HOSTID is success" else echo "$NETID$HOSTID is fail" fi } & ###并发执行 done wait
while#!/bin/bash NETID=10.0.0 declare -i HOSTID=1
while [ $HOSTID -lt 255 ];do
ping -c1 -W1 $NETID.$HOSTID &> /dev/null
if [ $? -eq 0 ];then echo "$NETID.$HOSTID success!" else echo "$NETID.$HOSTID fail!" fi
let HOSTID++
done
6、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
[root@centos7 ~]#vim etcback.sh [root@centos7 ~]#cat etcback.sh #!/bin/bash DIR=etcbak-date -d '-1 day' +%Y-%m-%d-%H tar -Jcvf /backup/${DIR}.tar.xz /etc/ &> /dev/null [root@centos7 ~]#bash etcback.sh [root@centos7 ~]#ll /backup/ total 8128 -rw-r--r-- 1 root root 7497912 Dec 27 10:19 etcbak-2021-12-26-10.tar.xz [root@centos7 ~]#crontab -e crontab: installing new crontab [root@centos7 ~]#crontab -l PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
浙公网安备 33010602011771号