就业第六周作业

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

~~~bash
+ expect形式 +
[root@centos7 shell]# cat login_expect.sh 
#!/usr/bin/expect
spawn ssh root@192.168.119.129
expect {
        "yes/no" {send "yes\n";exp_continue}
        "password" { send "wuhaolam\n" }
}
interact

+ shell形式 +
[root@centos7 shell]# cat login.sh 
#!/bin/bash
expect <<EOF
spawn ssh root@192.168.119.129
expect {
  "yes/no" {send "yes\n";exp_continue}
        "password" {send "wuhaolam\n"}
}
expect "]#" { send "echo 'success'\n" }
expect eof
EOF
[root@centos7 shell]# bash login.sh 
spawn ssh root@192.168.119.129
root@192.168.119.129's password: 
Last login: Fri Apr 15 06:44:15 2022 from 192.168.119.131
[root@Rocky8-mini3 ~]# echo 'success'
success

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

[root@centos7 shell]# cat max_min.sh 
#!/bin/bash

declare -a nums
for ((i=0;i<10;i++));do
        nums[$i]=$RANDOM
        [ $i -eq 0 ] && max=${nums[0]} && min=${nums[0]} && continue
        [ ${nums[$i]} -gt $max ] && max=${nums[$i]} && continue
        [ ${nums[$i]} -lt $min ] && min=${nums[$i]} 
done

echo "ALL numbers: ${nums[*]}"
echo Max is $max
echo Min is $min
[root@centos7 shell]# bash max_min.sh 
ALL numbers: 21484 13748 22820 1655 6415 21191 2587 11283 21159 14245
Max is 22820
Min is 1655

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

[root@centos7 shell]# cat bubble_seq.sh 
#!/bin/bash

echo  "Please input your needed sequence numbers:  "
read -a nums
let var=${#nums[*]}-1
for ((i=0;i<$var;i++));do
        for ((j=$i+1;j<$var+1;j++));do
        if [ ${nums[i]} -gt ${nums[j]} ];then
                temp=${nums[j]}
                nums[j]=${nums[i]}
                nums[i]=$temp
        fi
        done
done
echo "从小到大的顺序为:${nums[*]}"
for ((i=0;i<$var;i++));do
        for ((j=$i+1;j<$var+1;j++));do
        if [ ${nums[i]} -lt ${nums[j]} ];then
                temp=${nums[j]}
                nums[j]=${nums[i]}
                nums[i]=$temp
        fi
        done
done
 echo "从大到小的顺序为:${nums[*]}"
[root@centos7 shell]# bash bubble_seq.sh 
Please input your needed sequence numbers:  
9 7 123 89 13 4 2 76 10
从小到大的顺序为:2 4 7 9 10 13 76 89 123
从大到小的顺序为:123 89 76 13 10 9 7 4 2

4、总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求全部写出来)
(1)uptime 和 w

[root@Rocky8-mini ~]# uptime
 05:18:04 up 53 min,  1 user,  load average: 0.00, 0.00, 0.00
[root@Rocky8-mini ~]# w
 05:18:05 up 53 min,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.119.1    04:34    2.00s  0.04s  0.00s w

(2)mpstat

[root@Rocky8-mini ~]# mpstat 1 3
Linux 4.18.0-348.el8.0.2.x86_64 (Rocky8-mini)   04/13/2022      _x86_64_        (2 CPU)

05:20:21 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
05:20:22 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
05:20:23 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
05:20:24 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
Average:     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

(3)top和htop(htop比top功能更强大,界面更美观)

[root@Rocky8-mini ~]# top
top - 05:23:08 up 58 min,  1 user,  load average: 0.00, 0.00, 0.00
	第一个逗号之前的信息说明top命令的启动时间和时长;1 users表示系统中共有1个用户在登录;最后是系统负载均衡的平均值,分别是1分钟、5分钟和15分钟的系统平均负载值。
Tasks: 157 total,   1 running, 156 sleeping,   0 stopped,   0 zombie
	结果显示系统中共有157个进程,目前只有1个进程正在运行,有156个进程处于睡眠状态,没有进程被终止也没有僵死
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
	运行在用户模式和内核模式的进程(ni)所占的CPU百分比,以及在系统空闲(id)时所占的CPU空闲时间百分比;wa(iowait)表示没有进程在CPU上运行时处理器等待I/O完成的时间百分比;hi和si表示硬件与软件中断所花费的CPU时间的百分比;st是虚拟机偷走的时间
MiB Mem :   1790.3 total,   1292.7 free,    213.8 used,    283.8 buff/cache
	系统的总内存、空闲的内存、已使用的内存和缓冲区使用的内存
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1419.1 avail Mem
	交换分区的总量、空闲、使用量和用于内核缓存的内存量

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                            
   1719 root      20   0       0      0      0 I   0.3   0.0   0:00.07 kworker/1:2-events                                                                 
      1 root      20   0  172360  10336   7904 S   0.0   0.6   0:01.55 systemd                                                                            
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd                                                                           
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                                                                             
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp                                                                         
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri                                                        
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq                                                                       
     10 root      20   0       0      0      0 S   0.0   0.0   0:00.02 ksoftirqd/0                                                                        
     11 root      20   0       0      0      0 I   0.0   0.0   0:01.31 rcu_sched                                                                          
     12 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migration/0                                                                        
     13 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 watchdog/0                                                                         
     14 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0        
PID 			进程号
USER  			用户
PR  			优先级
NI    			NICE值
VIRT  			虚拟内存集
RES   			常驻内存集
SHR 			共享内存大小
S 				状态
%CPU 			CPU的占据百分比
%MEM 			内存的占用百分比
TIME+			累计运行时长
COMMAND			启动此进程的命令

image

(4)free 与内存有关的相关信息

[root@Rocky8-mini ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          1.7Gi       213Mi       1.3Gi       8.0Mi       284Mi       1.4Gi
Swap:         2.0Gi          0B       2.0Gi

(5)vmstat 虚拟内存信息

[root@Rocky8-mini ~]# 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 1323424   3364 288192    0    0    28     4   45   81  0  0 100  0  0
[root@Rocky8-mini ~]# vmstat -s
      1833232 K total memory
       218312 K used memory
        87024 K active memory
       218668 K inactive memory
      1323364 K free memory
         3364 K buffer memory
       288192 K swap cache
      2097148 K total swap
            0 K used swap
      2097148 K free swap
          362 non-nice user cpu ticks
           53 nice user cpu ticks
         1766 system cpu ticks
       941506 idle cpu ticks
           33 IO-wait cpu ticks
          963 IRQ cpu ticks
          818 softirq cpu ticks
            0 stolen cpu ticks
       262841 pages paged in
        40424 pages paged out
            0 pages swapped in
            0 pages swapped out
       426119 interrupts
       763963 CPU context switches
   1649838283 boot time
         1895 forks

(6)iostat CPU和设备IO信息

[root@Rocky8-mini ~]# iostat 
Linux 4.18.0-348.el8.0.2.x86_64 (Rocky8-mini)   04/13/2022      _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.04    0.01    0.37    0.00    0.00   99.58

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               0.06         1.84         0.00       8850          8
sda               1.47        51.97         8.41     249959      40430
sdc               0.02         0.62         0.00       2992          0
scd0              0.01         0.22         0.00       1041          0
dm-0              1.24        40.11         7.98     192898      38370
dm-1              0.02         0.46         0.00       2220          0
dm-2              0.02         0.46         0.00       2189         12

(7)iotop
image

(8)iftop
image

(9)nload
image

(10)iptraf-ng 网络监视工具
image

(11)dstat 统计系统的资源信息

[root@Rocky8-mini ~]# dstat 
You did not select any stats, using -cdngy by default.
----total-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw 
  0   0 100   0   0|   0     0 |  60B  676B|   0     0 |  83   140 
  0   0  99   0   0|   0     0 |  60B  342B|   0     0 |  88   142 
  0   0  99   0   0|   0     0 |  60B  359B|   0     0 |  96   143 
  0   1 100   0   0|   0     0 |  60B  356B|   0     0 |  82   123 
  0   0 100   0   0|   0     0 |  60B  358B|   0     0 |  93   144 
  0   0  99   0   0|   0     0 |  60B  359B|   0     0 |  92   134 
  0   0  99   0   0|   0     0 |  60B  357B|   0     0 | 100   145 
  0   0 100   0   0|   0     0 |  60B  359B|   0     0 |  89   139 
  0   0  99   0   0|   0     0 |  60B  358B|   0     0 |  67   120 
  0   0 100   0   0|   0     0 |  60B  357B|   0     0 |  69   123 
  1   1  99   0   0|   0     0 |  60B  358B|   0     0 |  80   132 
  0   0  99   0   0|   0     0 |  60B  358B|   0     0 | 134   189 
  0   0  99   0   0|   0     0 | 120B  418B|   0     0 |  82   143 
  0   0 100   0   0|   0     0 |  60B  359B|   0     0 |  72   118 
  0   0  99   0   0|   0     0 |  60B  358B|   0     0 |  85   142 
  0   0 100   0   0|   0     0 |  60B  358B|   0     0 |  94   134 
  0   1  99   0   0|   0    53k|  60B  358B|   0     0 |  94   158 
  0   0  99   0   0|   0     0 | 120B  358B|   0     0 | 115   176 
  1   0  99   0   0|   0     0 | 120B  358B|   0     0 |  95   166 ^C

(12)glances 综合监控系统信息(可监控其他主机资源信息)
image

(13)cockpit(图形化显示)

+ 安装相关软件包 +
[root@Rocky8-mini ~]# dnf -y install cockpit
[root@Rocky8-mini ~]# systemctl enable --now cockpit.socket
+ 浏览器进入 +
https://主机的IP地址:9090/

image

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

[root@Rocky8-mini3 shell]# cat Ip_connect_for.sh 
#!/bin/bash

for IP in `echo 192.168.0.{1..254}`;do
  ping -c2 -w2 $IP &> /dev/null
  [ $? -eq 0 ] && echo "$IP success" || echo "$IP fail"
done
[root@Rocky8-mini3 shell]# cat Ip_connect_while.sh
#!/bin/bash

Net=192.168.0
i=1
while ((i<=254));do
  IP=$Net.$i
  i=$[ $i+1 ]
  ping -c2 -w2 $IP &> /dev/null
  [ $? -eq 0 ] && echo "$IP success" || echo "$IP fail"
done

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

[root@Rocky8-mini3 backup]# cat /data/shell/bk_file.sh
#!/bin/bash

[ ! -d /backup ] && mkdir /backup
tar -cJvf /backup/etcbak-`date -d '-1 day' +%F-%H`.tar.xz /etc > /dev/null
echo "\$? 的结果是 $?"

[root@Rocky8-mini3 backup]# bash /data/shell/bk_file.sh
tar: Removing leading `/' from member names
$? 的结果是 0

[root@Rocky8-mini3 backup]# ls
etcbak-2022-04-12-05.tar.xz
posted @   wuhaolam  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示