第3周作业

脚本附件:

完成作业:
1. yum私有仓库的实现及博客输出

(yum私有仓库的实现_辛金保的博客-优快云博客

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


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


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

Rocky 配置如下:

[root@rocky8]/etc/sysconfig/network-scripts#vim ifcfg-ens160 
TYPE=Ethernet
BOOTPROTO=none
DEVICE=ens160
IPADDR=192.168.1.1
PREFIX=24
GATEWAY=192.168.1.254
DNS1=8.8.8.8
DNS2=114.114.114.114
NAME=ens160

主机1 IP地址192.168.1.1

主机2 IP地址192.168.1.2

ping测试成功。 

Ubuntu20.04

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

5)支持输入一批主机免密钥,使用数组 实现

#!/bin/bash
#
#*******************************************************************
#Author:                   xinjinbao
#QQ:                       458646593
#Date:                     2023-07-23
#FileName:                 login_key.sh
#URL:                       www.baidu.com
#Description:               免密登陆脚本
#Copyright(C):            2023  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_NORMAL="echo -en \E[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 $"FAILED"
    else
        ${SETCOLOR_WARNING}
        echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo 
}

install_Apache() {
. /etc/os-release
if [[ $ID == "ubuntu" ]] ;then
	apt -y install apache2
elif
        [[ $ID =~ ^(rocky|centos)$ ]];then
	yum install httpd-devel.x86_64
else
        echo ”不支持的操作系统“
fi
}


login_host(){

read -p "请输入你要访问的IP:" IPADD
[[ $IPADD =~ ^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] && echo "您输入的IP地址为$IPADD" || { echo "IP输入错误" ; break; }

read -p "请输入你要访问的用户名:" NAME
[ -n "$NAME" ] && IP="${NAME}@${IPADD}" || IP="${IPADD}"

echo $IP

apt -y install expect &>/dev/null
expect <<EOF
set timeout 20
spawn ssh-keygen
expect {
        "ssh/id_rsa" { send "\n";exp_continue }
        "passphrase" { send "\n";exp_continue }
	"passphrase" { send "\n";}
	"Overwrite" { send "n\n";}
}
spawn ssh-copy-id 127.0.0.1
expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "11\n" }
}

spawn scp -r /root/.ssh/ $IPADD:~/.
expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "11\n"; }
}

sleep 2

EOF
ssh $IP


}


install_MySQL(){
. /etc/os-release
if [[ $ID == ubuntu ]] ;then
	apt -y install mysql-server

elif
	[[ $ID =~ ^(rocky|centos)$ ]];then
	yum -y install mysql-server.x86_64
else
	echo ”不支持的操作系统“
fi
}



PS3="请输入想要执行的操作(1-6):"

select MENU in 安装MySQL 安装Apache 登陆主机 退出;do

    case $REPLY in
    1)
	install_MySQL
	echo $MENU已完成 
        ;;
    2)
	install_Apache
	echo $MENU已完成 
        ;;
    3)
	login_host;
      	;;
    4)
        echo 退出
        break
        ;;
    *)
        echo 输入错误,请重新选择
        ;;

    esac
done

执行效果

补充添加数组导入密钥功能:新版本如下

[root@ubuntu2004]/root#cat login_key.sh 
#!/bin/bash
#
#*******************************************************************
#Author:                   xinjinbao
#QQ:                       458646593
#Date:                     2023-07-23
#FileName:                 login_key.sh
#URL:                       www.baidu.com
#Description:               免密登陆脚本
#Copyright(C):            2023  All rights reserved
#******************************************************************
LOCAL_IP=10.0.0.157
LOCAL_USER=root
HOST_PASSWD=11



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_NORMAL="echo -en \E[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 $"FAILED"
    else
        ${SETCOLOR_WARNING}
        echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo 
}

install_Apache() {
. /etc/os-release
if [[ $ID == "ubuntu" ]] ;then
	apt -y install apache2
elif
        [[ $ID =~ ^(rocky|centos)$ ]];then
	yum install httpd-devel.x86_64
else
        echo ”不支持的操作系统“
fi
}


login_host(){

read -p "请输入你要访问的IP:" IPADD
[[ $IPADD =~ ^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] && echo "您输入的IP地址为$IPADD" || { echo "IP输入错误" ; break; }

read -p "请输入你要访问的用户名:" NAME
[ -n "$NAME" ] && IP="${NAME}@${IPADD}" || IP="${IPADD}"

echo $IP

apt -y install expect &>/dev/null
expect <<EOF
set timeout 20
spawn ssh-keygen
expect {
        "ssh/id_rsa" { send "\n";exp_continue }
        "passphrase" { send "\n";exp_continue }
	"passphrase" { send "\n";}
	"Overwrite" { send "n\n";}
}
spawn ssh-copy-id 127.0.0.1
expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "11\n" }
}

spawn scp -r /root/.ssh/ $IPADD:~/.
expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "11\n"; }
}

sleep 2

EOF
ssh $IP


}







secret_login(){
apt -y install expect &>/dev/null && echo expect 完成安装
read -p "请输入你要访问的IP(支持多项输入,需要空格隔开):" -a ipadds
MAX_NUM=${#ipadds[*]}
for ((j=0;j<MAX_NUM;j++));do

[[ ${ipadds[$j]} =~ ^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] && echo "您输入的IP地址为${ipadds[*]}" || { echo "${ipadds[$j]}输入错误,请重新输入" ; break; }

done

read -p "请输入你要访问的用户名(默认为root):" NAME

for ((i=0;i<MAX_NUM;i++));do
echo "${ipadds[$i]} $MAX_NUM"
[ -n "$NAME" ] && IP="${NAME}@${ipadds[$i]}" || IP="${ipadds[$i]}"
expect <<EOF
set timeout 20
spawn ssh-keygen
expect {
        "ssh/id_rsa" { send "\n";exp_continue }
        "passphrase" { send "\n";exp_continue }
        "passphrase" { send "\n";}
        "Overwrite" { send "n\n";}
}
spawn ssh-copy-id 127.0.0.1
expect {
        "yes/no" { send "yes\n";exp_continue }
        "password" { send "$HOST_PASSWD\n" }
}

sleep 2

EOF
`sshpass -p $HOST_PASSWD  scp -o StrictHostKeyChecking=no  /root/.ssh/* $IP:/root/.ssh/.` && color "echo 已完成密钥导入的地址${ipadds[$i]}" 0 || color "echo 密钥导入失败${ipadds[$i]}" 2 
sleep 5
done
}







install_MySQL(){
. /etc/os-release
if [[ $ID == ubuntu ]] ;then
	apt -y install mysql-server

elif
	[[ $ID =~ ^(rocky|centos)$ ]];then
	yum -y install mysql-server.x86_64
else
	echo ”不支持的操作系统“
fi
}



PS3="请输入想要执行的操作(1-6):"

select MENU in 安装MySQL 安装Apache 登陆主机 导入密钥 退出;do

    case $REPLY in
    1)
	install_MySQL
	echo $MENU已完成 
        ;;
    2)
	install_Apache
	echo $MENU已完成 
        ;;
    3)
	login_host;
      	;;
    4)
	secret_login
	;;

    5)
        echo 退出
        break
        ;;
    *)
        echo 输入错误,请重新选择
        ;;

    esac
done

:: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值