康乐_SH

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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

[root@centos8-hkping ~]#yum install expect -y
[root@centos8-hkping ~]#rpm -qa expect
expect-5.45.4-5.el8.x86_64
#使用expect形式
[root@centos8-hkping data]#vim expect_login
#!/usr/bin/expect
set ip 10.0.0.161
set user root
set password 123456
set timeout 10
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
interact
[root@centos8-hkping data]#chmod +x expect_login
[root@centos8-hkping data]#./expect_login
spawn ssh root@10.0.0.161
root@10.0.0.161's password:
Last login: Tue Jan 25 22:20:59 2022 from 10.0.0.150
[root@centos7 ~]#

#使用shell形式
[root@centos8-hkping data]#vim shell_login.sh
#!/bin/bash
ip=10.0.0.161
user=root
password=123456
expect <<EOF
set timeout 20
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
expect eof
EOF
[root@centos8-hkping data]#chmod +x shell_login.sh
[root@centos8-hkping data]#./shell_login.sh
spawn ssh root@10.0.0.161
root@10.0.0.161's password:
Last login: Tue Jan 25 22:32:48 2022 from 10.0.0.150
[root@centos7 ~]#

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

[root@centos8-hkping data]#vim min_max.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
[root@centos8-hkping data]#sh min_max.sh
All numbers are 18206 10323 31566 18073 289 11359 15395 10981 21730 30847
Max is 31566
Min is 289

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

[root@centos7 hkping]# vim paixu.sh
#!/bin/bash
read -p "请输入正整数字,并已空格隔开:" num
a=( $num )

for ((i=1;i<${#a[*]};i++))
do
for ((j=0;j<${#a[*]}-i;j++))
do
    if [ ${a[$j]} -gt ${a[`expr $j + 1`]} ]
    then
    tmp=${a[`expr $j + 1`]}
    a[`expr $j + 1`]=${a[$j]}
    a[$j]=$tmp
fi
done
done
echo ${a[@]}

 

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

w命令可以输出系统负载

第1行输出依次显示了当前的系统时间、系统从启动到现在已经运行的时间、登录到系统中的用户数和系统平均负载。平均负载是指在1min、5min、15min内系统的负载状况。·USER:表示登录系统的用户。·TTY:表示用户使用的TTY名称。·FROM:表示用户从哪里登录进来,一般显示远程登录主机的IP地址或主机名。·LOGIN@:用户登录的日期和时间。·IDLE:显示终端的空闲时间。·JCPU:表示该终端上的所有进程及子进程使用系统的总时间。·PCPU:当前活动进程使用的系统时间。·WHAT:当前用户执行的进程名称和选项。

[root@centos7 hkping]# w
 22:23:46 up  1:09,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         21:15    2.00s  0.11s  0.00s w

uptime命令可以输出当前系统时间、系统开机到现在的运行时间、目前有多少用户在线和系统平均负载等信息。

[root@centos7 hkping]# uptime
 22:29:51 up  1:15,  1 user,  load average: 0.00, 0.01, 0.05
top命令用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个进程的资源占用状况。该命令可以按照CPU的使用、内存的使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式命令进行设定显示。
top - 22:30:11 up  1:16,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 127 total,   2 running, 125 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  1.6 sy,  0.0 ni, 98.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995776 total,   601376 free,   133484 used,   260916 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   716064 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
  2015 root      20   0  162140   2188   1544 R   6.7  0.2   0:00.01 top         
     1 root      20   0  125856   4384   2588 S   0.0  0.4   0:02.96 systemd     
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd    
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
     5 root      20   0       0      0      0 S   0.0  0.0   0:00.08 kworker/u25+
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.17 ksoftirqd/0 
     7 root      rt   0       0      0      0 S   0.0  0.0   0:09.76 migration/0 
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh      
     9 root      20   0       0      0      0 R   0.0  0.0   0:03.16 rcu_sched   
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-dra+
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.16 watchdog/0  
    12 root      rt   0       0      0      0 S   0.0  0.0   0:00.05 watchdog/1  
    13 root      rt   0       0      0      0 S   0.0  0.0   0:09.65 migration/1 
    14 root      20   0       0      0      0 S   0.0  0.0   0:00.25 ksoftirqd/1 
    15 root      20   0       0      0      0 S   0.0  0.0   0:01.14 kworker/1:0 
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H
    17 root      rt   0       0      0      0 S   0.0  0.0   0:00.02 watchdog/2

 

第一行,任务队列信息,同uptime命令的执行结果。·22:10:02 代表当前系统时间。·up 55min 代表系统已经运行了122分钟。·1 user 代表当前有1个用户登录系统。·load average:0.00,0.01,0.05 load average后面的三个数分别是1分钟、5分钟、15分钟的平均负载情况。

第二行,Tasks为任务(进程)。从上面的信息可以看出,系统现在共有128个进程,其中处于运行状态的有1个,127个在休眠(sleep),stoped状态0个,zombie状态(僵死)的有0个。

第三行,CPU状态信息。·0.0%us 用户空间占用CPU的百分比。·0.0%sy 内核空间占用CPU的百分比。·0.0%ni 改变过优先级的进程占用CPU的百分比。·100.0%id 空闲CPU百分比。·0.0%wa I/O等待占用CPU的百分比。·0.0%hi 硬中断(Hardware IRQ)占用CPU的百分比。·0.0%si 软中断(Software Interrupts)占用CPU的百分比。·0.0%st 虚拟机占用CPU的百分比。

第四行,内存状态。·total 物理内存总量。free 空闲内存总量。·used 使用中的内存总量。··buffers/cache 缓冲的内存量。

第五行,swap交换分区信息。·total 交换区总量。free 空闲交换区总量。·used 使用的交换区总量。··avail Mem 可利用内存总量。

第六行,空白行

第七行,给出的是各进程(任务)的状态监控。·PID 进程id。·USER 进程所有者。·PR 进程优先级。·NI nice值,负值表示高优先级,正值表示低优先级。·VIRT 进程使用的虚拟内存总量,单位为kb。·RES 进程使用的、未被换出的物理内存大小,单位为kb。·SHR 共享内存大小,单位为kb。S 进程状态。D=不可中断的睡眠状态R=运行S=睡眠T=跟踪/停止Z=僵尸进程。·%CPU 上次更新到现在的CPU时间占用百分比。·%MEM 进程使用的物理内存百分比。·TIME+ 进程使用的CPU时间总计,单位1/100秒。·COMMAND 进程名称(命令名/命令行)。

(1)按s键:默认3s刷新一次,按s键修改刷新时间。

(2)按Space键:立即刷新。

(3)按q键:退出。

(4)按P键:按CPU使用率降序排序。

(5)按M键:按内存排序。

(6)按T键:按时间排序。

(7)按p键:进程IP,查看某个进程状态。

(8)按数字1键:显示每个内核的CPU使用率。

(9)按u/U键:指定显示的用户。

(10)按h键:帮助。

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

[root@centos7 hkping]# vim shell_ping.sh
#!/bin/bash
net=192.168.0
declare -i address=1
while [ $address -le 254 ];do
   {
     ping -c1 -w1 ${net}.${address} &>/dev/null
     if [ $? -eq 0 ];then
       echo $net.$address is success!
     else
       echo $net.$address is fail!
     fi
   }&
let address++
done
wait

 


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

[root@centos7 hkping] vim /home/hkping/backup_etc.sh
#!/bin/bash
DAY=$(date +"%F-%H" -d "-1 days" )
if [ ! -d /backup ]; then
        rm -rf /backup
        mkdir -p /backup
fi
tar -zcvf /backup/etcbak-`date +"%F-%H" -d "-1 days"`.tar.xz /etc
[root@centos7 hkping]# chmod +x backup_etc.sh
[root@centos7 hkping]# crontab -e
30 1 * * 1-5 /home/hkping/backup_etc.sh &>/dev/null

[root@centos7 hkping]# vim shell_ping.sh

posted on 2022-01-27 22:48  康乐_SH  阅读(28)  评论(1编辑  收藏  举报