SRE 第四周作业

这篇博客涵盖了Linux系统管理的各项任务,包括使用expect和shell脚本远程登录,生成和操作数组,冒泡排序算法,系统负载命令解析,网络与磁盘监控,SSH和sshd服务参数总结,以及创建私有CA证书的实践。
摘要由CSDN通过智能技术生成

目录

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

expect形式

shell形式

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

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

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

1、查看操作系统平均负载

2、查看CPU时间片分布

3、查看内存使用情况

vmstat 虚拟内存信息

4、查看磁盘信息

5、网络IO使用情况

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

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

7, 使用awk以冒号分隔获取/etc/passwd文件第一列

8, 创建私有CA并进行证书申请,有实践过程和结果。

1. 生成自签名CA证书

 2、申请证书并颁发证书

9, 总结ssh常用参数,用法。SSH交互原理分析,需要画图

 ssh配置文件: /etc/ssh/ssh_config

ssh密钥交换过程

ssh加密通信过程​编辑

10. 总结sshd服务常用参数。


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

expect形式

#!/bin/expect

set ip [lindex $argv 0]
set user root
set passwd "*jds&623,dsn"

spawn ssh $user@$ip 
expect {
	"yes/no" { send "yes\n";exp_continue }
	"password" { send "$passwd\n" }
}

interact


#执行示例
[root@node01 16:25:13] ~/homework/sre-week4
-- # ./expect_login_args.sh 192.168.0.202
spawn ssh root@192.168.0.202
root@192.168.0.202's password: 
Last login: Thu Jan 26 16:22:51 2023 from 192.168.0.201
[root@node02 16:25:19] ~
-- # hostname
node02
[root@node02 16:25:23] ~
-- # 

shell形式

#!/bin/bash
#
# fileName: shell_login.sh
# author: liAng
# mail: angl6112@163.com
# created: Thu 26 Jan 2023 04:06:43 PM CST
# 
### BEGIN INIT INFO
# Description:
#
#
### END INIT INFO

IP=$1
USER=root
PASSWD='*jds&623,dsn'

function package_check() {

	if which expect &>/dev/null; then
		echo "expect alerdy existed"
	else
		echo "expect installing..."
		yum install expect -y &>/dev/null || {
			echo "expect install failed."
			exit 1
		} 
	fi
}

function ping_test(){
	echo "ping test $IP, Please wait..."
	if ping -c 3 $IP &>/dev/null; then
		echo "$IP ping test success."
	else
		echo "ERROR: $IP ping test failed."
		exit 3
	fi
}

function worker() {
expect <<EOF
set timeout 20
spawn ssh $USER@$IP
expect {
	"yes/no" { send "yes\n";exp_continue }
	"password" { send "$PASSWD\n"}
}
expect "#" { send "hostname\n"  }
expect "#" { send "exit\n"  }
expect eof
EOF
}

function main() {
	ping_test
	package_check
	worker
}

main

#执行示例
[root@node01 16:51:44] ~/homework/sre-week4
-- # sh shell_login.sh 192.168.0.202
ping test 192.168.0.202, Please wait...
192.168.0.202 ping test success.
expect alerdy existed
spawn ssh root@192.168.0.202
root@192.168.0.202's password: 
Last login: Thu Jan 26 16:51:04 2023 from 192.168.0.201
[root@node02 16:51:49] ~
-- # hostname
node02
[root@node02 16:51:49] ~
-- # exit
logout
Connection to 192.168.0.202 closed.
[root@node01 16:51:49] ~/homework/sre-week4
-- # 

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

#!/bin/bash
#
# fileName: random_compare.sh
# author: liAng
# mail: angl6112@163.com
# created: Thu 26 Jan 2023 04:55:38 PM CST
# 
### BEGIN INIT INFO
# Description:
#
#
### END INIT INFO

declare -a random_list
declare -i max min

function compare() {
	for(( i=0;i<10;i++))
	do
		num=$RANDOM
		random_list[$i]=$num
		[ $i -eq 0 ] && max=$num && min=$num && continue
		[ $num -gt $max ] && max=$num && continue
		[ $num -le $min ] && min=$num && continue
	done
	echo -e "随机数: \n${random_list[@]}\n"
	echo -e "最大值: $max\n最小值: $min\n"
}


function main(){
	compare
}

main

#执行示例:
[root@node01 17:13:15] ~/homework/sre-week4
-- # ./random_compare.sh 
随机数: 
28658 3276 24598 29809 19082 20135 29269 15215 4000 341

最大值: 29809
最小值: 341

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

#!/bin/bash
#
# fileName: bubble_sort.sh
# author: liAng
# mail: angl6112@163.com
# created: Thu 26 Jan 2023 07:01:16 PM CST
# 
### BEGIN INIT INFO
# Description:
# 1. 生成10个随机数, 存入数组 random_list
# 2. 对数组中的元素进行冒泡排序
# 3. revers=0 默认从小到大排序; revers=1从大到小排序
### END INIT INFO

#数组长度
len=10
revers=${1:-0}

declare -a random_list

function producer(){
	for((i=0;i<$len;i++))
	do
		random_list[$i]=$RANDOM
	done
	echo -e "随机数为: \n${random_list[@]}\n"
}

function bubble_sort(){
	for((i=1;i<$len;i++))
	do
		for((n=1;n<$len;n++))
		do
			now=${random_list[$n]}
			befer=${random_list[$[n-1]]}
			[ $now -lt $befer ] && random_list[$n]=$befer && random_list[$[n-1]]=$now

		done
	done
}

function print_sort(){

	case $revers in
		1)
			echo "从大到小排序:"
			for((i=$[len-1];i>=0;i--))
			do
				echo -n "${random_list[$i]} "
			done
				echo
			;;
		*)
			echo "从小到大排序:"
			echo ${random_list[@]}
			;;
	esac
}

function main(){
	producer
	bubble_sort
	print_sort
}
main
#测试示例
[root@node01 21:08:49] ~/homework/sre-week4
-- # sh bubble_sort.sh 
随机数为: 
18574 27363 29378 14140 21514 262 18293 4583 12661 12129

从小到大排序:
262 4583 12129 12661 14140 18293 18574 21514 27363 29378

[root@node01 21:08:51] ~/homework/sre-week4
-- # sh bubble_sort.sh 1
随机数为: 
23018 20493 5467 18593 32661 12348 19051 28180 6362 6394

从大到小排序:
32661 28180 23018 20493 19051 18593 12348 6394 6362 5467 
[root@node01 21:08:52] ~/homework/sre-week4
-- # 

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

1、查看操作系统平均负载

 

 显示的是最近 1, 5, 15分钟的平均负载

2、查看CPU时间片分布

 参数: 

1: 每个1s显示一次

3: 共显示3次

选项:

-P: 指定要显示的CPU 核心编号

        ALL: 显示所有核心

        <cpu_list>: 指定核心编号, 这是个列表 如: 3或者 4-7

-o: 指定输出格式

        json: 使用json格式输

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值