作业-第三周

1. yum私有仓库的实现及博客输出

1.共享仓库:yum -y install httpd

2.启动:systemctl enable --now httpd

 

3.epel源下载:dnf reposync  --repoid=epel   --download-metadata -p  /var/www/html/

 4.测试

 

 

 

 

 下载成功

 

 2. 阅读《图解TCP/IP》一书,地址:https://leon-wtf.github.io/doc/%E5%9B%BE%E8%A7%A3TCPIP.pdf,有时间的可以写下读书笔记

3。画图 TCP协议和三次握手及四次挥手,可以参考别人的,但是需要自己画一次

 

第一次握手:客户端主动向服务端发起请求,此时:SYN=1,序列号seq=x

第二次握手:服务端向客户端发起回应,此时:SYN=1,ACK=1,序列号seq=y,确认号ack=x+1

第三次握手:客户端向服务端回应:此时,ACK=1,序列号seq=x+1,确认号ack=y+1

握手是三次而不是两次或四次?

两次:不能保证通信双方有去有回,通信是双向的

四次:可以保证通信双向,但会造成资源浪费

状态切换:客户端

CLOSED:客户端发起请求之前

STN-SENT:发出第一次握手请求,未收到第二次握手

ESTAB-LISTEN:发出第三次握手请求

状态切换:服务器端

CLOSED.LISTEN:客户端发出第一次握手请求之前

SYN-RCVD:服务器端发出第二次握手,未收到第三次握手

ESTAB-LISTEN:收到第三次握手请求后

 

 

第一次挥手:客户端提起分手,此时:FIN=1,seq=u

第二次挥手:服务端响应,此时ACK=1,seq=v,ack=u+1

第三次挥手: 服务器向客户端发起,此时FIN=1,ACK=1,seq=w,ack=u+1

第四次挥手:客户端向服务端发起,此时ACK=1,seq=u+1,ack=w+1

TIME-WAIT:状态发生在客户端,主要原因是确保数据全部传输完

状态切换:客户端

ESTAB-LISHED:客户端发起第一次挥手请求前

FIN-WAIT-1:客户端发起第一次挥手请求,未收到第二次挥手

FIN-WAIE-2:服务器端发出第二次挥手请求,未收到第三次挥手

TIME-WAIT:客户端收到第三次挥手请求,发出第四次挥手请求之后

CLOSED:客户端收到第三次挥手请求,发出第四次挥手请求之后

状态切换:服务器端

ESTAB-LISHED:服务器端收到第一次挥手请求前

CLOSE-WAIT:服务器端发出第二次挥手请求之后,第三次请求之前

LAST-ACK:服务器端发出第三次挥手请求之后,收到第四次挥手请求之前

CLOSED:服务器端收到第四次挥手请求之后

4. 静态配置网卡IP,centos/ubuntu实现

centos配置:

1.修改网卡名称

路径:/etc/default/grub  

        sed -ri '/GRUB_CMDLINE_LINUX=/s#(.*)"$#\1 net.ifnames=0" #' /etc/default/grub

        grub2-mkconfig -o /boot/grub2/grub.cfg

        reboot

2.修改配置文件

路径:/etc/sysconfig/network-scripts

步骤:1.旧的配置文件ifcfg-xxx移到/opt下

      2.新建文件(格式为ifcfg-xxx):touch ifcfg-eth0

                  3.编辑内容:

                       DEVICE=eth0

        NAME=eth0

        BOOTPROTO=static|none
        IPADDR=10.0.0.174
        PREFIX=24
        GATEWAY=10.0.0.2
        DNS1=10.0.0.2
        DNS2=100.76.76.76
        ONBOOT=yes
      4.生效:
        nmcli connection reload
        nmcli connection up eth0    (cent0s8和rocky)
        systemctl restart network       (centos7)
        service network restart   (centos6)
        reboot   (通用)
3.查看:ip a
示例:

 

 

ubuntu配置:

1.修改网卡名称

路径:/etc/default/grub

步骤:

      1)GRUB_CMDLINE_LINUX="net.ifnames=0"   (ubuntu20.0.4)

         GRUB_CMDLINE_LINUX =  quiet 后补net.ifnames=0   (uuntu18.04)

      2)grub-mkconfig  -o  /boot/grub/grub.cf

      3)reboot

       

2.修改配置文件

网卡配置文件采用YAML格式,必须以/etc/netplan/xxx.yaml文件命名方式存放

路径:/etc/netplan

步骤:

     1.把旧的网卡配置文件移到/opt下

     2.新建文件以.yaml为后缀的文件:touch eth0.yaml 

     3.编辑:vim eth0.yaml

# This is the network config written by 'subiquity'
network:
   version: 2 
   renderer: networkd 
   ethernets:
      eth0:
         addresses: [10.0.0.130/24]
         gateway4: 10.0.0.2
         nameservers:
              search: [baidu.com]
              addresses:
                  - 180.76.76.76
                  - 223.6.6.6

注意:对字符缩进有严格的要求

4.生效:netplan apply

5.查看:ip a

6.示例:

脚本题
5. 实现免密登陆脚本, expect登陆远程主机,将生成的密钥写入到目标主机, expect测试远程登陆。
1)通过shift读取脚本参数
2)通过select来选择功能.例如功能有
- 安装mysql
- 安装apache
- 免密钥登陆主机
当前我们只实现免密钥登陆主机
3)通过函数封装每个功能
4)将免密钥登陆的过程可以重复进行, while 循环实现重复,需要有退出过程。当用户输入exit时,退出免密钥功能。
5)支持输入一批主机免密钥,使用数组 实现

 

#!/bin/bash
#
#********************************************
#Author: jinyulan
#Date: 2022-11-19
#FileName: weekthree.shh
#URL: http://www.jinyulan.com
#Description: The test script
#Copyright (C): 2022 All rights reserved
#*******************************************

color () {
   RES_COL=60
   MOVE_TO_COL="echo -en \\033[${RES_COL}G"
   SETCOLOR_SUCCESS="echo -en \\033[1;32m"
   SETCOLOR_FAILURE="echo -en \\033[1;31m"
   SETCOLOR_WARNING="echo -en \\033[1;33m"
   SETCOLOR_NORRMAL="echo -en \033[0m"
   echo -n "$1" && $MOVE_TO_COL
   echo -n "["
   if [ $2 = "success" -o $2 = "0" ];then
      ${SETCOLOR_SUCCESS}
      echo -n $" OK "
   elif [ $2 = "failure" -o $2 = "1"];then
      ${SETCOLOR_FAILURE}
      echo -n $"FAILEO"
   else
      ${SETCOLOR_WARNING}
      echo -n $"WARNING"
   fi
      ${SETCOLOR_NORRMAL}
      echo -n "]"
      echo

}

 

#免密登录,支持一批主机免密钥
ssh_login () {
NET=10.0.0
user=root
password=123456
IDLIST=({127..200})
for ID in ${IDLIST[*]};do
  ip=$NET.$ID

  read -p "是否登录$ip?(y登录 exit退出)" answer

    [[ $answer == "y|Y" ]]&& ssh $user$ip
    [[ $answer == "exit" ]] && break

expect <<EOF
set timeout 20
spawn ssh $user@$ip
expect {
       "yes/no" { send "yes\n";exp_continue }
       "password" { send "$password\n" }
}
expect "]#" { send "exit\n"}
expect eof
EOF
done

}

 

#安装mysql
install_mysql () {
  . /etc/os-release
   if [ $ID = "rocky" -o $ID = "centos" ] ; then
      yum -y install mysql
   elif [ $ID = "ubuntu" ] ;then
      apt -y install mysql
   else
      echo "OS is not support"
   fi
 color "mysql 已安装" 0
}


#安装apache
install_httpd () {
  . /etc/os-release
   if [ $ID = "rocky" -o $ID = "centos" ];then
      yum -y install httpd

   elif [ $ID = "ubuntu" ];then
      apt -y install httpd
   else
      echo "OS is not support"
   fi
  color "httpd 已安装" 0
}

menu () {
PS3="请选择功能(1-4):"
select menu in install_mysql install_httpd ssh_login exit ;do
case $REPLY in
1)install_mysql
  ;;
2)install_httpd
  ;;
3)ssh_login
  ;;
4)exit
  ;;
*)echo "请重新输入"
  ;;
esac
done
}

menu

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2023-01-05 17:03  夜星空雨  阅读(31)  评论(0编辑  收藏  举报