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、描述密钥交换的过程
-
A与B首先在公开情况下共同协商一个共同的东西(一个素数 p=23 一个源根[原始根模] g=5)
-
A与B各出个私密的随机数来对数据进行加密比如:
A 出 a=6 进行加密 A=ga mod p 也就是 A=56%23=8
B 出 b=15 进行加密 B=gb mod p 也就是 A=515%23=19
- 然后A与B交换加密后的数字,用自己的私密数字进行逆向解密
A 得到 B=19 逆向解密 s=Ba mod p 也就是 s=196%23=2
B 得到 A=8 逆向解密 s=Ab mod p 也就是 s=815%23=2
- 通讯过程成立
8、https的通信过程
- TCP三次握手
- 客户端和服务端的通信协议协商,服务端会从客户端发送的协议中选择一种作为加密算法协议
- 服务端发送CA证书到客户端验证身份,验证通过后客户端会将私钥最后一段通过服务端公钥非对称加密传送到服务端
- 客户端利用协商好的机密算法和对称秘钥进行加密通信
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App