1、编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)。
expect 方式
#!/usr/bin/expect
spawn ssh root@10.0.0.130
expect {
"yes" { send "yes\n";exp_continue }
"password" { send "mypassword\n" }
}
interact
shell方式
#!/bin/bash
expect <<EOF
spawn ssh root@10.0.0.130
expect {
"yes" { send "yes\n";exp_continue }
"password" { send "mypassword\n" }
}
expect eof
EOF
2、生成10个随机数保存于数组中,并找出其最大值和最小值
[root@centos7 ~]# cat getnumber.sh
#!/bin/bash
declare -i min max
declare -a number
for (( i=0;i<10;i++));do
number[$i]=$RANDOM
[ $i -eq 0 ] && min=${number[$i]} && max=${number[$i]}
[ ${number[$i]} -gt $max ] && max=${number[$i]}
[ ${number[$i]} -lt $min ] && min=${number[$i]}
done
echo " All number is ${number[*]} "
echo "Max number is $max "
echo "Min number is $min "
3、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
[root@centos7 ~]# cat sort.sh
#!/bin/bash
#
declare -a arr
#死循环,用于从键盘读取排序选项
echo "请从键盘输入您想排序的数字,以空格隔开,回车结束:"
read -a arr
read -p "请输入选项(a:升序排序,d:降序排序,q:退出程序):" flag
case $flag in
a)
echo ${arr[*]}
len=${#arr[*]}
for ((j=0;j<$len;j++));do
for ((i=0;i<$len-1;i++));do
if [ ${arr[$i]} -gt ${arr[$i+1]} ];then
x=${arr[$i]}
arr[$i]=${arr[$i+1]}
arr[$i+1]=$x
fi
done
done
echo "排序结果为:" ${arr[*]}
;;
d)
len=${#arr[*]}
for ((j=0;j<$len;j++));do
for ((i=0;i<$len-1;i++));do
if [ ${arr[$i]} -lt ${arr[$i+1]} ];then
x=${arr[$i]}
arr[$i]=${arr[$i+1]}
arr[$i+1]=$x
fi
done
done
echo "排序结果为:" ${arr[*]}
;;
q)
echo "结束程序"
;;
*)
echo "输入选项错误,请重新输入:)"
;;
esac
4、总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求全部写出来)
查看系统负载的命令有
vmstat 查看虚拟内存信息
iostat和iotop 查看磁盘io
iftop 查看网络IO
top 查看系统负载 free 查看内存占用
top - 11:31:36 up 11 days, 18:33, 2 users, load average: 0.00, 0.01, 0.05
当前系统时间 开机时长 连接用户数 5 10 15分钟CPU负载
Tasks: 99 total, 1 running, 98 sleeping, 0 stopped, 0 zombie
运行总进程数 活动进程数 睡眠状态进程数 停止 僵尸 进程数
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
上一次刷新后间隔内CPU状态的百分比情况;是多核的平均值
us:用户空间内没有nice调整过优先级的进程运行的时间
sy:内核空间进程运行的时间
ni:调整过nice的用户空间进程运行时间
id:空闲时间
wa:等待IO的时间
hi,硬中断时间
si,软中断(模式切换)
st,虚拟机偷走的时间(虚拟机内进程执行的时间)
KiB Mem : 995704 total, 293864 free, 160496 used, 541344 buff/cache
内存使用情况
KiB Swap: 2096124 total, 2096124 free, 0 used. 637940 avail Mem
SWAP使用情况
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
进程ID、优先级、nice值、使用虚拟内存、使用物理内存、共享内存、CPU占用、内存占用百分比、占用CPU时间片累计时长、进程命令
5、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
#!/bin/bash
for ip in `seq 254`;do
echo -n "ping 10.0.0.$ip ...."
ping 10.0.0.$ip -c 1 -w 1 &> /dev/null
if [ $? == 0 ]; then
echo "success!"
else
echo "fail!"
fi
done
while
#!/bin/bash
ip=1
while (( ip<=254));do
echo -n "ping 10.0.0.$ip ...."
ping 10.0.0.$ip -c 1 -w 1 &> /dev/null
if [ $? == 0 ]; then
echo "success!"
else
echo "fail!"
fi
let ip++
done
6、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
crontab -e
30 1 * * 1-5 /backup/backup.sh
cat /backup/backup.sh
#!/bin/bash
/usr/bin/tar cJf /backup/etcbak-`date -d -1day +%F-%H`.tar.xz /etc