shell日志分析--支持分析日志访问路径,统计访问IP,IPTABLES解与封

#!/bin/bash
#特性:
#1,可分析多个网站项目日志
#2,每个网站项目日志可根据关键字进行统计分析
#3,可调整访问IP次数的阀值(超过多少次加入到墙)
#4,可调整IP封的时间
#5,可在定时任务修改分析日志的时间间隔
#6,防火墙在封的时候进行了去重,不会封同样的IP
#-----zhaoll@

##############################################################################################
#-----------------------------------------防火墙封IP-----------------------------------------#
##############################################################################################

#当前时间戳,用于比较drop_ip.log里的时间戳
ip_diff_time=`date +%s`
IPTABLES=/sbin/iptables
#防火墙时间阀值--默认10分钟,比较已封IP是否超过10分钟,如果超过10分钟,则解封
ip_return_time=$((10*60))
#ip_return_time=43200
#ip_return_time=86400

for i in `cat /data0/shells/drop_ip.log | awk -F ":" '{if('$ip_diff_time'-$1>='$ip_return_time'-60){print}}'`
do
IPLIST1=`echo $i | awk -F ":" '{print $1}'`
IPLIST2=`echo $i | awk -F ":" '{print $2}'`
        $IPTABLES -D INPUT -s $IPLIST2 -j DROP
        #ssh 10.19.1.200 "$IPTABLES -D INPUT -s $IPLIST2 -j DROP"
        echo ”$I
<think>好的,用户想知道在使用Docker、Kubernetes和Jenkins部署项目后,应该访问哪个IP地址来连接服务器。我需要先理他们的部署流程,然后根据不同的情况来分析可能的IP地址来源。 首先,用户提到他们在同一台服务器上运行项目和Jenkins,通过Shell脚本和Dockerfile打包镜像,然后用Docker运行。这可能意味着他们的应用是直接通过Docker容器部署在宿主机上的,这时候可能需要访问宿主机的IP加上映射的端口。例如,如果容器内部的80端口映射到宿主机的8080端口,用户就需要访问宿主机的IP:8080。 然后,用户引用了关于Jenkins将项目文件发送到Ansible服务器,并通过Dockerfile构建镜像的内容。这可能涉及到多个服务器,比如Ansible服务器运行Docker容器,所以可能需要访问Ansible服务器的IP地址,同样需要考虑端口映射的情况。 接下来,用户提到了Kubernetes,所以如果应用部署在K8s集群中,情况会更复杂。在Kubernetes里,服务通常通过Service暴露,可能使用NodePort、LoadBalancer或者Ingress。如果是NodePort,需要访问集群节点的IP和分配的端口号。如果是LoadBalancer,云提供商通常会分配一个外部IP。而Ingress则需要配置域名和路径,通过Ingress Controller的IP访问。 另外,用户可能混淆了不同环境下的部署方式,比如有些服务可能还在用Docker直接运行,而有些已经迁移到Kubernetes。需要明确他们的具体部署方式,才能准确回答IP地址的问题。 还需要考虑网络配置,比如Docker的网络模式是桥接还是主机模式,Kubernetes的Service类型,以及是否有防火墙或安全组规则限制外部访问。例如,即使服务正确暴露了端口,如果服务器的防火墙没有开放该端口,外部仍然无法访问。 总结一下,可能的访问方式包括: 1. 直接访问宿主机IP加Docker映射的端口。 2. 访问Ansible服务器的IP和对应端口。 3. Kubernetes集群的Node IP加NodePort端口,或者LoadBalancer的IP,或者Ingress的域名。 4. 需要检查服务的暴露方式以及网络配置是否正确。 用户需要根据他们的具体部署情况来确认IP地址,可能需要检查Docker的端口映射、Kubernetes的Service配置,以及网络设置。此外,查看部署日志或使用kubectl get svc命令可以帮助找到正确的访问地址。</think>在使用 Docker、Kubernetes 和 Jenkins 部署项目后,访问服务器的 IP 地址需根据以下场景确定: --- ### 一、基础部署场景(仅 Docker) 若项目通过 Docker 直接部署在宿主机(如 Jenkins 所在服务器): 1. 查看容器映射的端口: ```bash docker ps -a | grep <容器名> ``` 输出示例: ``` CONTAINER ID IMAGE PORTS NAMES 123abc app:1.0 0.0.0.0:8080->80/tcp myapp ``` 2. 访问方式: **宿主机 IP + 映射端口**(如上例通过 `宿主机IP:8080` 访问容器内 80 端口)[^1] --- ### 二、Kubernetes 集群场景 若项目部署在 Kubernetes 中: 1. 确定服务暴露方式: - **NodePort 类型**:访问任意集群节点 IP + 分配的端口号 ```bash kubectl get svc <服务名> ``` 输出示例: ``` NAME TYPE PORT(S) AGE myapp NodePort 80:32001/TCP 2d ``` 访问方式:`集群节点IP:32001` - **LoadBalancer 类型**:使用云服务商提供的外部 IP(如 AWS/阿里云) - **Ingress 类型**:通过域名访问(需配置 DNS 析到 Ingress Controller 的 IP)[^3] --- ### 三、混合部署场景(Docker + K8s) 若 Ansible 服务器负责构建镜像并推送到 Kubernetes: 1. 镜像构建完成后,K8s 集群从镜像仓库拉取镜像部署 2. 访问方式仍取决于 K8s 服务类型(参考上述第二点) --- ### 四、网络验证工具 1. 检查端口连通性: ```bash telnet <IP地址> <端口号> # 或使用 curl http://IP:端口 ``` 2. 查看防火墙规则(若访问失败): ```bash iptables -L -n # 或云服务器安全组配置 ``` --- ### 总结 | 部署方式 | 关键命令/配置 | 访问地址格式 | |------------------|----------------------------------|---------------------------| | Docker 直接部署 | `docker run -p 宿主机端口:容器端口` | 宿主机IP:宿主机端口 | | Kubernetes NodePort | `kubectl get svc` | 集群节点IP:NodePort端口 | | Kubernetes Ingress | Ingress YAML 配置 | 域名 + 路径 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值