1.编程题
使用函数重写,完成编程题,可以让用户选择当前主机的所有网卡,选中网卡后,获取ip,网段,掩码。通过ping命令检测在线的主机,打印在线的主机,写入一个文件中。当ip的结尾是奇数时,在目标主机或当前主机,批量添加user1到user100用户,否则添加group1到group100,并生成对应的用户user1到user100,让用户的过期时间在1天之后。
#!/bin/bash
cat /dev/null > ipaccess.txt
#获取所有网卡名
echo "当前的网卡"
ip a | awk -F: '/^[0-9]/{print $2}'
#显示选中网卡的信息
read -p "请输入要查询的网卡:" INTER
IP=$(ifconfig ${INTER} | awk '/inet /{print $2}')
NET=$(ifconfig ${INTER} | awk '/inet /{print $2}' | sed -nr 's#(.*)\.[0-9]+#\1#p')
MASK=$(ifconfig ${INTER} | awk '/inet /{print $4}')
echo "地址:${IP}"
echo "网段:${NET}"
echo "掩码:${MASK}"
#函数:将网卡所在网段的主机ping测,通的放进去ipaccess.txt
pingtest (){
for host in {2..20};do
ping -c1 -w1 ${NET}.${host} &>/dev/null && echo ${NET}.${host} >>ipaccess.txt
done
}
#调用函数
pingtest
USER=root
PASSWORD=admin
#函数:ssh进去目标主机,添加用户(使用expect自动化交互输入内容)
adduser () {
expect <<EOF
spawn ssh -l${USER} ${IP}
expect {
"yes/no" {send "yes\n";exp_continue }
"password" {send "${PASSWORD}\n" }
}
expect "]#" {send "useradd user${i}\n" }
expect "]#" {send "exit\n" }
EOF
}
#函数:ssh进去目标主机,添加组,用户。并将用户添加进去组
addgroup (){
expect <<EOF
spawn ssh -l${USER} ${IP}
expect {
"yes/no" {send "yes\n";exp_continue }
"password" {send "${PASSWORD}\n" }
}
expect "]#" {send "groupadd group${i}\n" }
expect "]#" {send "useradd -N -e `date -d +1day +%F` user${i}\n" }
expect "]#" {send "gpasswd -a user${i} group${i}\n" }
expect "]#" {send "exit\n" }
EOF
}
#遍历ipaccess.txt中的IP,判断奇数还是偶数,奇数执行函数addgroup,偶数执行函数adduser
while read IP;do
if [ $(echo $[ `echo $IP | awk -F"." '{print $4}'` %2 ]) -eq 0 ];then
for i in {1..10};do
adduser
done
else
for i in {1..10};do
addgroup
done
fi
done < ipaccess.txt
2.总结TCP三次握手和四次挥手
TCP三次握手
Listen监听状态,等待来自远方TCP端口的请求连接
SYN-SENT 在发送连接请求后,等待对方确认
SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
ESTABLISHED 代表传输连接建立,双方进入数据传送状态
TCP四次挥手
![在这里插入图片描述](https://img-blog.csdnimg.cn/a787d4e1590e45e391f14582b6586358.png
FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
3.OSI七层模型
4.搭建yum私服
服务端
#安装httpd客户端使用http连接进来服务端
systemctl disable --now firewalld yum -y install httpd systemctl start httpd
#下载本机在使用的网络yum仓库相关包和meta数据
cd /var/www/html/
mkdir -p centos/7/os/x86_64
yum -y install yum-utils
reposync --repoid=mysql-tools-community --download-metadata -p /var/www/html/centos/7/os/x86_64/
#如果没下载到元数据,也可用createrepo创建
yum -y install createrepo
createrepo /var/www/html/centos/7/os/x86_64/mysql-tools-community/
客户端
#将原本的yum仓库文件放到备份文件夹
cd /etc/yum.repos.d/
mkdir backup
mv *.repo backup/
#新建yum仓库文件,指定路径为上面的服务端(192.168.110.70)
vim mysql_192.168.110.70.repo
[mysql]
name=mysql
baseurl=http://192.168.110.70/centos/7/os/x86_64/mysql-tools-community/
gpgcheck=0
#重新创建缓存
yum clean all
yum makecache