第六周

2021年11月23日 阅读数:3
这篇文章主要向大家介绍第六周,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

一、编写脚本实现登录远程主机。(使用expect和shell脚本两种形式)。

yum -y install expect
#!/usr/bin/expect
set ip 127.0.0.1
set user root
spawn ssh -l $user $ip
expect {
"yes/no" {send "yes\n";exp_continue }
"password" {send "123456\n"}
}
interact

expect expect.sh

shell


tar xvf sshpass-1.05.tar.gz 
 cd sshpass-1.05.tar.gz 
 ./configure 
 make 
 make install 

#!/bin/bash
IP=127.0.0.1
USER=root
/usr/local/bin/sshpass -p '123456' ssh  $USER@$IP

二、生成10个随机数保存于数组中,并找出其最大值和最小值

seq命令用于产生从某个数到另一个数之间的全部整数。
linux中$RANDOM用于生成0—32767的随机数 大写
[]判断时先后要有空格
#!/bin/bash
declare -i min max
declare -a nums
for ((i=0;i<10;i++)); do
nums[$i]=$RANDOM
[ $i -eq 0 ] && min=${nums[0]} && max=${nums[0]} && 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 $minlinux

三、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序

计算数组的长度
len=${#nums[*]}
read -a 数组,-p提示
升序算法

#!/bin/bash 
declare -a nums
read -p "请从键盘输入您想排序的数字,以空格隔开,回车结束" --a nums
len=${#nums[*]}
for ((j=0;j<$len;j++));do
        for ((i=0;i<$len-1;i++));do
            if [ ${nums[$i]} -gt ${nums[$i+1]} ];then
                x=${nums[$i]}
                nums[$i]=${nums[$i+1]}
                nums[$i+1]=$x
            fi
        done
done
echo "升序排序后的结果为:" ${nums[*]}

降序shell

#!/bin/bash 
declare -a nums
read -p "请从键盘输入您想排序的数字,以空格隔开,回车结束" --a nums
len=${#nums[*]}
for ((j=0;j<$len;j++));do
        for ((i=0;i<$len-1;i++));do
            if [ ${nums[$i]} -lt ${nums[$i+1]} ];then
                x=${nums[$i]}
                nums[$i]=${nums[$i+1]}
                nums[$i+1]=$x
            fi
        done
done
echo "升序排序后的结果为:" ${nums[*]}

四、总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求所有写出来)

top 主要看load average,CPU idle

image.png

free 主要看内存,看看就能够了
vmstat
image.png数组

sar
image.pngbash

top
这里显示不一样模式下所占cpu时间百分比,这些不一样的cpu时间表示:
us, user: 运行(未调整优先级的) 用户进程的CPU时间
sy,system: 运行内核进程的CPU时间
id 空闲时间markdown

五、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否可以ping通,若ping通则输出"success!",若ping不通则输出"fail!"

for:ssh

#!/bin/bash
ip=192.168.0.
for id in {1..254};do
{
   if /bin/ping -c 1 -W 1 $ip$id >/dev/null;then
        echo "success!"
  else
        echo "fail"
 fi
}
done

whileide

#!/bin/bash
ip=192.168.0.
id=1
while (( $id < 254 )); do
{
  if /bin/ping -c 1 -W 1 $ip$id >/dev/null ;then
     echo "success!"
  else
      echo "fail"
  fi
}
 let  id++
done

六、每周的工做日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间

若是 filename存在,则为真 [ -e /var/log/syslog ]
若是 filename为目录,则为真 [ -d /tmp/mydir ]
若是 filename为常规文件,则为真 [ -f /usr/bin/grep ]
若是 filename为符号连接,则为真 [ -L /usr/bin/grep ]spa

#!/bin/bash
[-d /backup  ] || mkdir /backup
name=etcbak-`date -d -1day +%F-%m-%d-%H`
tar -cvf /backup/$name.tar /etc 

xz -z /backup/$name.tar 

crontab -e 
35 1 * * 1-5 /bin/sh /baketc.sh
上一篇: 作业2