The Six week study

1、编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)。
先安装expect :
[root@master1 expect]# yum install -y expect
[root@master1 expect]# cat 1.expect
#!/usr/bin/expect
spawn ssh 192.168.192.72
expect {
	"yes/no" { send "yes\n";exp_continue }
	"password" { send "123456\n" }
}
interact
加执行权限:chmod +x  1.expect  然后执行:
[root@master1 expect]# expect  1.expect      //即可登录到72机器。
修改为参数形式如下(但是登录时显示了密码不太安全):
[root@master1 expect]# cat 3.expect 
#!/usr/bin/expect
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh $user@$ip
expect {
                 "yes/no" { send "yes\n";exp_continue }
                  "password" { send "$password\n" }
}
interact
[root@master1 expect]# ./3.expect  192.168.192.73 root 123456
spawn ssh root@192.168.192.73
Last login: Sun Feb 13 18:01:45 2022 from master1
13 Feb 18:02:41 ntpdate[1639]: adjust time server 202.118.1.81 offset 0.000963 sec
[root@master3 ~]#                   //即可登录到73机器。
使用shell实现方式:
[root@master1 expect]# cat ex_shell.sh 
#/bin/bash
ip=$1
user=$2
password=$3

expect <<EOF
set timeout 10
spawn ssh $user@$ip
expect {
        "yes/no" { send "yes/no";exp_countinue }
         "password" { send "$password\n" }
}
 expect  eof
EOF
[root@master1 expect]# sh ex_shell.sh  192.168.192.74 root 123456
spawn ssh root@192.168.192.74
Last login: Sun Feb 13 18:13:34 2022 from master1
[root@node1 ~]#   
[root@master1 expect]#    //10s超时自动退出
2、生成10个随机数保存于数组中,并找出其最大值和最小值
[root@master1 ~]# cat compare.sh 
#!/bin/bash

[ -z "$1" ] && { echo "Usage: $0 'Please input numbers'";echo;exit 1; }
declare -i  MAX   MIN
declare -a  NUMS

for ((i=0;i<$1;i++)); do
      NUMS[$i]=$RANDOM
      [ $i -eq 0 ] && MIN=${NUMS[0]} && MAX=${NUMS[0]} && continue
      [ ${NUMS[$i]} -gt $MAX ] && MAX=${NUMS[$i]} continue
      [ ${NUMS[$i]} -lt $MIN ] && MIN=${NUMS[$i]} 
   done
echo  All Random Numbers are: ${NUMS[*]}
echo  MAX  : $MAX
echo  MIN  : $MIN
[root@master1 ~]# sh compare.sh  10
All Random Numbers are: 8151 30594 4969 27089 6944 27882 6510 6551 11160 13034
MAX : 30594
MIN : 4969
[root@master1 ~]# 
3、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
[root@master1 ~]# cat sort.sh 
#!/bin/bash
##
if [ -z  "$2" ];then
 echo "You need to input more than two numbers:"
  exit 1
fi

if [[ ! "$*" =~ ^[0-9]*([[:space:]]|[0-9])*$ ]];then
   echo "Please input numbers:"
  exit 2
 fi

##input array
declare -a  a

for i in $* ;
 do
  a[${#a[*]}]=$i
  done
##打印一下
# echo ${a[*]}

#进行大小排序
 for ((i=0;i<${#a[*]}-1;i++)); do
      for ((j=$i+1;j<${#a[*]};j++));do
       if ((${a[i]} > ${a[j]}));then
         t=${a[i]}
         a[i]=${a[j]}
         a[j]=$t
       fi
       done
     done

unset t
echo sorted is :
echo  ${a[*]}



[root@master1 ~]# sh sort.sh   5 81 15 21 20 47 3 66
sorted is :
3 5 15 20 21 47 66 81
[root@master1 ~]# 
4、总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求全部写出来)
[root@master1 ~]# w
 21:04:17 up  3:32,  1 user,  load average: 0.01, 0.01, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.192.1    17:32    0.00s  0.21s  0.00s w
[root@master1 ~]# uptime
 21:04:30 up  3:32,  1 user,  load average: 0.01, 0.01, 0.00
[root@master1 ~]# 
yum install -y sysstat
sar -A 1 2 命令
top / htop / bytop 等命令
5、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
[root@master1 ~]# cat for_ping.sh 
#!/bin/bash

for i in `seq 1 254`; do
    ping -c1 -W1 192.168.192.$i > /dev/null
     if [ $? -eq 0 ];then 
      echo "192.168.192.$i is success"
      else 
       echo "192.168.192.$i is fail"
    fi 
  done
[root@master1 ~]# cat  while_ping.sh 
#!/bin/bash
i=1
 while (($i<255)); do
    ping -c1 -W1 192.168.192.$i > /dev/null
     if [ $? -eq 0 ];then 
      echo "192.168.192.$i is success"
      else 
       echo "192.168.192.$i is fail"
    fi 
    let i++
  done
[root@master1 ~]# 

6、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
[root@master1 ~]# cat etcbackup.sh 
#!/bin/bash
[ -d /data/backup ] || mkdir /data/backup
/usr/bin/tar -Jcvf /backup/etcbak-`date +"%F%H" --date=yesterday`.tar.xz /etc >/dev/null
#/usr/bin/tar -zcvf /backup/etcbak-`date +"%F%H" --date=yesterday`.tar.xz /etc
[root@master1 ~]# crontab -l
#!/bin/bash
*/5 * * * * ntpdate  cn.pool.ntp.org
30 1 * * 1-5  /root/etcbackup.sh
[root@master1 ~]# 

posted @ 2022-02-13 22:49  xian2018  阅读(32)  评论(0)    收藏  举报