当前位置: 首页 > news >正文

ssh连接踢出脚本

ssh连接踢出脚本

  • 踢出脚本

踢出脚本

[root@ubuntu24-13:~]# cat /etc/profile.d/kick_if_remote.sh
#!/bin/bash# 获取登录 IP(排除本地登录)
login_ip=$(who | grep -m1 "$USER" | awk '{print $5}' | tr -d '()')# 若为空,认为是本地控制台登录
[ -z "$login_ip" ] && exit 0# 查询 IP 所在地区(用 ip-api 免费接口)
geo=$(curl -s --connect-timeout 2 "http://ip-api.com/json/${login_ip}?lang=zh-CN")# 提取国家、省份、城市
country=$(echo "$geo" | grep '"country"' | cut -d '"' -f4)
region=$(echo "$geo" | grep '"regionName"' | cut -d '"' -f4)
city=$(echo "$geo" | grep '"city"' | cut -d '"' -f4)# 设置允许的省市白名单
ALLOW_REGIONS=("Beijing" "Shanghai" "Guangdong")
ALLOW_CITIES=("Beijing" "Shanghai" "Guangzhou" "Shenzhen")# 检查是否在白名单中
is_allowed_region=false
is_allowed_city=falsefor r in "${ALLOW_REGIONS[@]}"; doif [[ "$region" == "$r" ]]; thenis_allowed_region=truebreakfi
donefor c in "${ALLOW_CITIES[@]}"; doif [[ "$city" == "$c" ]]; thenis_allowed_city=truebreakfi
done# 如果省和市任一不符合,就踢掉连接
if [[ "$is_allowed_region" != "true" || "$is_allowed_city" != "true" ]]; thenecho "你的IP ${login_ip} 来自 ${country}-${region}-${city},不在允许区域,连接已被拒绝!"sleep 1pkill -KILL -t $(who am i | awk '{print $2}')
fi
http://www.xdnf.cn/news/1008433.html

相关文章:

  • RX Byte and Word Alignment Attributes
  • 我的世界进阶模组开发教程——开发机械动力附属模组(2)
  • Android Jetpack 组件库 ->Jetpack Navigation
  • 第十节 高频代码题-类型推断题
  • 硬件工程师成长之路--电容
  • 在GIS 工作流中实现数据处理(3)
  • 25年春招:携程java开发一面
  • linux使用find搜索文件命令
  • VUE - AxiosError-ERR_BAD_REQUEST
  • 瓷器数字化展示文物三维扫描建模-中科米堆
  • 2025年6月英语六级作文高分模板目录(共20篇)
  • ssc377d在kernel下读写寄存器
  • 进程间通信之消息队列
  • 大厂机试题解法笔记大纲+按知识点分类+算法编码训练
  • Coze搭建工作流
  • DWS层新增指标处理方案
  • 工程项目管理软件选型指南:核心功能、技术架构与行业实践
  • 获取分布式锁
  • 医院部署IBMS系统时,哪些关键因素需要重点权衡与规划
  • 【C语言】*与深层理解
  • 【Vue3/Typescript】从零开始搭建H5移动端项目
  • 【二分模版------左闭右闭】
  • Vue ⑨-Pinia
  • c++ - 关于 string 的练习题
  • 《深度剖析:Java中用Stanford NLP工具包优化命名实体识别》
  • Redis哨兵机制
  • 获取Unity节点路径
  • ✅ [Dify]明道云同步内容到 Dify 知识库的最佳实践指南
  • 电梯钢带安全无盲区:电梯钢带断丝智慧监测方案让隐患“毫秒现形“
  • SpringCloud-seata集成到nacos