Linux学习历程(4)

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

  • expect
#!/usr/bin/expect
set ip 192.168.198.130
set user root
set password 990910
set timeout 10
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" {send "$password\n"}
}
interact
  • shell
#!/bin/bash
IP=192.168.198.130
USER=root
PASSWORD=990910
expect <<EOF
set timeout 10
spawn ssh $USER@$IP
expect {
"yes/no" { send "yes\n";exp_continue }
"password" {send "$PASSWORD\n"}
}
expect eof
EOF

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

[root@centos8:~]#vim max_min.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:~]#bash max_min.sh
All numbers are 24187 27783 16818 18761 23160 11817 15228 414 27041 29505
Max is 29505
Min is 414

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

[root@centos8:~]#vim bubb.sh
#!/bin/bash
read -p "请输入数值个数:" COUNT
declare -a num
for ((i=0;i<$COUNT;i++));do
num[$i]=$RANDOM
done
echo "The initial array:"
echo ${num[@]}
for (( i=0; i<$COUNT-1; i++ ));do
for (( j=0; j<$COUNT-1-i; j++ ));do
let x=$j+1
if [ ${num[$j]} -lt ${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[$(($COUNT-1))]}"
执行:
[root@centos8:~]#bash bubb.sh
请输入数值个数:6
The initial array:
11234 5016 3473 12924 5650 11792
After sort:
12924 11792 11234 5650 5016 3473
the max integer is 12924,the min integer is 3473

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

  • uptime:查询中显示两个时间,分别是系统启动时长和空闲进程的总时长(按总的CPU核数计算)
[root@centos8 ~]#uptime
17:06:53 up 1:07, 1 user, load average: 0.00, 0.00, 0.00
  • mpstat:实时系统监控工具,报告CPU的一些统计信息,存放于/proc/stat文件中,在多CPU系统里。其不但能查看所有CPU信息,也能查看特定的CPU信息
[root@centos8 ~]#mpstat
Linux 4.18.0-240.el8.x86_64 (centos8.3-2) 05/04/2022 _x86_64_ (4 CPU)
05:08:19 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
05:08:19 PM all 0.08 0.02 0.11 0.01 0.02 0.01 0.00 0.00 0.00 99.75
  • top:top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。默认进入top时,各进程是按照CPU的占用量来排序的
[root@centos8 ~]#top
top - 17:10:34 up 1:10, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 226 total, 1 running, 225 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
MiB Mem : 1949.4 total, 641.7 free, 751.1 used, 556.6 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1026.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
823 root 20 0 295748 11536 9816 S 0.3 0.6 0:02.20 vmtoolsd
2637 apache 20 0 2730880 18188 6932 S 0.3 0.9 0:00.20 httpd
1 root 20 0 177424 11332 8236 S 0.0 0.6 0:01.98 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-kblockd
8 root 20 0 0 0 0 I 0.0 0.0 0:00.03 kworker/u256:0-flus+
9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
  • htop命令时增强版的top命令,来自epel源,比top功能更强


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

  • for循环
[root@centos8:~]#vim ping192.168.0.sh
#!/bin/bash
net=192.168.0
for i in {1..254};do
{
if
ping -c1 -w1 ${net}.${i} &>/dev/null;then
echo $net.$i is success!
else
echo $net.$i is fail!
fi
}&
done
wait
执行:
[root@centos8:~]#bash ping192.168.0.sh
192.168.0.1 is fail!
192.168.0.4 is fail!
192.168.0.5 is fail!
  • while循环
[root@centos8:~]#vim ping192.168.0while.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
执行:
[root@centos8:~]#bash ping192.168.0while.sh
192.168.0.1 is fail!
192.168.0.13 is fail!
192.168.0.4 is fail!
192.168.0.5 is fail!

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

1.编写备份打包脚本
[root@centos8:~]#vim etcback.sh
#!/bin/bash
DIR=etcbak-`date -d '-1 day' +%Y-%m-%d-%H`
tar -Jcvf /backup/${DIR}.tar.xz /etc/ &> /dev/null
2.创建cron
[root@centos8:~]#crontab -e
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
30 1 * * 1-5 bash etcback.sh

7、描述密钥交换的过程

  1. A与B首先在公开情况下共同协商一个共同的东西(一个素数 p=23 一个源根[原始根模] g=5)

  2. A与B各出个私密的随机数来对数据进行加密比如:

   A 出 a=6 进行加密 A=ga mod p 也就是 A=56%23=8

   B 出 b=15 进行加密 B=gb mod p 也就是 A=515%23=19

  1. 然后A与B交换加密后的数字,用自己的私密数字进行逆向解密

   A 得到 B=19 逆向解密 s=Ba mod p 也就是 s=196%23=2

   B 得到 A=8 逆向解密 s=Ab mod p 也就是 s=815%23=2

  1. 通讯过程成立

8、https的通信过程

  1. TCP三次握手
  2. 客户端和服务端的通信协议协商,服务端会从客户端发送的协议中选择一种作为加密算法协议
  3. 服务端发送CA证书到客户端验证身份,验证通过后客户端会将私钥最后一段通过服务端公钥非对称加密传送到服务端
  4. 客户端利用协商好的机密算法和对称秘钥进行加密通信

9、使用awk以冒号分隔获取/ettc/passwd文件第一列

[root@centos8 ~]#awk -F: '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
systemd-coredump
systemd-resolve

posted @   12avde  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示