第六周作业

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

expect形式
[root@centos8 data]# vim telnet1.sh 
#!/usr/bin/expect
spawn ssh 10.0.0.123
expect {
        "yes/no" { send "yes\n" }
        "password" { send "123456\n" }
}
expect eof


[root@centos8 data]# chmod +x telnet1.sh

[root@centos8 data]# ./telnet1.sh
shell形式
[root@centos8 data]# vim telnet2.sh
#!/bin/bash
ip=10.0.0.123
expect <<EOF
spawn ssh $ip
expect {
         "yes/no" { send "yes\n" }
         "password" { send "123456\n" }
}
expect eof
EOF

[root@centos8 data]# chmod +x telnet2.sh

[root@centos8 data]# ./telnet2.sh

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

[root@centos8 data]# vim array.sh
#!/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]] && continue
        [ ${nums[$i]} -lt $min ] && min=$[nums[$i]]
done
echo "All numbers are ${nums[*]}"
echo Max is $max
echo Min is $min

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


#!/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))]}"

总结查看系统负载的几种命令,总结top命令的指标大概什么含义

uptime

#假设linux主机是1个双核CPU,load average值不超过3代表系统性能良好,如果超过6则主机有严重的性能问题,需要尽快解决

[root@centos8 data]# uptime
 16:24:47 up  1:02,  2 users,  load average: 0.00, 0.00, 0.00

mpstat

#mpstat命令来自于sysstat包

#查看系统负载百分比

[root@centos8 data]# mpstat
Linux 4.18.0-348.el8.x86_64 (centos8) 	01/27/2022 	_x86_64_	(4 CPU)

04:39:05 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
04:39:05 PM  all    0.05    0.02    0.25    0.03    0.44    0.16    0.00    0.00    0.00   99.04

ps aux

#查看进程使用系统资源情况

[root@centos8 data]# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.5 237804 10380 ?        Ss   15:22   0:03 /usr/lib/systemd/systemd --switched-ro
root           2  0.0  0.0      0     0 ?        S    15:22   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   15:22   0:00 [rcu_gp]

top

#实时状态观察

在这里插入图片描述

h:帮助
q:退出
M:按照内存使用百分比排序
P:按照CPU使用率排序
T:按照占用CPU时常排序
1:详细查看每颗cpu使用情况
l:关闭或显示uptime时间
t:关闭或显示tasks和cpu信息

#top命令栏位置信息

Tasks:
      total:进程个数
	  running:运行个数
	  sleeping:休眠状态
	  stopped:停止的个数
	  zombie:僵尸态个数
cpu:
	us:用户空间
	sy:内核空间
	ni:调整nice时间
	id:空闲
	wa:等待io时间
	hi:硬中断
	si:软中断
	st:虚拟机偷走的时间
	
	top命令性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
free

#查看内存空间

[root@centos8 data]# free -h
              total        used        free      shared  buff/cache   available
Mem:          1.9Gi       215Mi       1.5Gi       8.0Mi       236Mi       1.5Gi
Swap:         2.0Gi          0B       2.0Gi

#选项

-b 以字节为单位
-m 以MB为单位
-g 以GB为单位
-h 易读格式
vmstat

#虚拟内存使用情况

[root@centos8 data]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1533628   5212 237000    0    0     5     3   31   36  0  1 99  0  0

iostat

#iostat命令来自sysstat包

#详细显示磁盘IO使用情况

[root@centos8 data]# iostat
Linux 4.18.0-348.el8.x86_64 (centos8) 	01/27/2022 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.05    0.01    0.85    0.03    0.00   99.06

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
nvme0n1           0.96        20.13        10.03     166518      82935
scd0              0.01         0.13         0.00       1077          0

iotop

#实时显示进程io情况

在这里插入图片描述

iftop

#显示网络带宽使用情况,查看访问当前主机的流量信息

在这里插入图片描述

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

#for循环

#!/bin/bash
ip=192.168.0.
for i in {1..254};do
{
    if ping -c1 -w1 ${ip}${i} &>/dev/null;then
        echo $ip$i success!
    else echo $ip$i fail!
    fi
}&
done
wait

#while循环

#!/bin/bash
ip=192.168.0.
i=1
while (( i<=254 ));do
{
    ping -c1 -w1 ${ip}${i} &>/dev/null
    if [ $? -eq 0 ];then
        echo $ip$i success!
    else echo $ip$i fail!
    fi
}&
let i++
done
wait

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

#创建脚本

[root@centos8 data]# vim backup.sh
#!/bin/bash
dir=etcbak-`date -d '-1 day' +%Y-%m-%d-%H`
tar Jcfv /data/backup/${dir}.tar.xz /etc

[root@centos8 data]# bash backup.sh

[root@centos8 data]# ll backup
total 3300
-rw-r--r-- 1 root root 3376192 Jan 28 00:08 etcbak-2022-01-27-00.tar.xz

#创建任务

[root@centos8 data]# crontab -e
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
30 1 * * 1-5 bash backup.sh
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值