shell练习
1、编写脚本实现登陆远程主机。
用expect的方式:
#!/usr/bin/expect spawn ssh 192.168.88.8 expect { "yes/no" {send "yes\n" } "password:" {send "555666\n"} } interact
用shell方式(标准输入):
#!/bin/bash ip=192.168.88.8 user=root password=555666 expect<<EOF spawn ssh $user@$ip expect { "yes/no" {send "yes\n" } "password:" {send "555666\n"} } expect eof EOF
2、生成10个随机数保存于数组中,并找出其最大值和最小值
#!/bin/bash arr=($RANDOM $RANDOM $RANDOM $RANDOM $RANDOM $RANDOM $RANDOM $RANDOM $RANDOM $RANDOM ) declare -i min=max=${arr[0]} for ((i=1;i<10;i++));do [ ${arr[$i]} -gt $max ] && max=${arr[$i]} && continue [ ${arr[$i]} -lt $min ] && min=${arr[$i]} done echo '所有数字为:'${arr[*]} echo '最大值为:'$max echo '最小值为:'$min
3、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
#!/bin/bash arr=( 45 34 16 76 52 ) echo '初始数组'${arr[*]} for ((i=1;i<${#arr[*]};i++));do for ((j=0;j<${#arr[*]}-$i;j++));do if [ ${arr[j]} -gt ${arr[j+1]} ];then tmp=${arr[j]} arr[$j]=${arr[j+1]} arr[$j+1]=$tmp fi done done echo '冒泡排序结束'${arr[*]}
4、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
ip=192.168.88. #for i in {1..254} #do # { ping -c1 -w1 $ip$i &>/dev/null; [ $? -eq 0 ] && echo 'success!' || echo 'fail'; } & #done #wait i=1 while (( i<255 )) ;do { ping -c1 -w1 $ip$i &>/dev/null; [ $? -eq 0 ] && echo 'success!' || echo 'fail'; } & let i++; done wait
5、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
#!/bin/bash [ -d /backup ] || mkdir /backup tar Jcf /backup/etcback-`date +%F-%_H`.tar.xz /etc &> /dev/null [ $? -eq 0 ] && echo '备份成功' || echo '备份失败'