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

harbor api v2.0

harbor api v2.0

  • v2.0

v2.0

“harbor api v2.0”与原来区别较大,此处harbor也做了https。另外,通过接口拿到的数据也是只能默认1页10个,所以脚本根据实际情况一页页的抓取数据
脚本主要用于统计repo、image,以及所有镜像的tag数,change_images_txt用于调整格式,函数alert将tag数大于30的告警出来,最后登录harbor,将告警的镜像中较老的tag手动清理掉(当然也可以通过如下接口拿到所有镜像的tag,根据时间来排序,将较老的部分通过接口自动删除,但是“reference”这个参数获取比较复杂,暂未采用这种方式)
在这里插入图片描述

#!/bin/bash
HARBOR_URL=harbor.example.com
HARBOR_USER=admin
HARBOR_PASSWD=Harbor12345
#OLD_VERSION_NUM=30
script_path=$(dirname $0)
cd $script_pathfunction get_repos_list(){mkdir -p $PWD/reposList>$PWD/reposList/reposList.txtfor i in `seq 1 8`;dorepos_list=$(curl -s -k -u ${HARBOR_USER}:${HARBOR_PASSWD} https://${HARBOR_URL}/api/v2.0/projects?page=$i)echo "${repos_list}" | jq '.[]' | jq -r '.name' >> $PWD/reposList/reposList.txtdone
}
function get_images_list(){mkdir -p $PWD/imagesListrm -f $PWD/imagesList/*.txtfor repo in $(cat $PWD/reposList/reposList.txt);dofor j in `seq 1 20`;doimages_list=$(curl -s -k -u ${HARBOR_USER}:${HARBOR_PASSWD} https://${HARBOR_URL}/api/v2.0/projects/$repo/repositories?page=$j)echo "${images_list}" | jq '.[]' | jq -r '.name' >> $PWD/imagesList/${repo}.txtdonedone
}
function conut_tags(){>images.txtfor k in `seq 1 100`;dohtmlinfo=$(curl -s -k -u ${HARBOR_USER}:${HARBOR_PASSWD} https://${HARBOR_URL}/api/v2.0/repositories?page=$k)echo $htmlinfo |jq '.[]|select(.artifact_count > 30)'|jq '.name, .artifact_count' >> images.txtdonesed -i 's/"//g' images.txt
}function change_images_txt(){>images1.txtnum=0for i in `cat $1`;dolet num++    #;echo $numif [ $((num%2)) -eq 1 ];thenIMG=$ielseCNT=$iecho "$IMG $CNT" >>images1.txtfidonecat images1.txt |sort |awk '{print $2,$1}' > images2.txt
}
function alert(){METRIC=$1LINE=`cat $METRIC|wc -l`if [ $LINE -gt 0 ];thenMSG=""while read line;doMSG="$MSG\n$line"done < $METRIC#echo -e $MSG#MSG=234567890CMD="curl -H \"Content-Type:application/json\" -X POST --data '{\"mobile\":\"13123456789\",\"message\":\"新镜像仓库镜像tag数>30$MSG\",\"priority\":\"2\",\"moserial\":\"1234567\"}' http://xxxxxxxxxxxxxxxx"#echo "$CMD"eval "$CMD"fi
}conut_tags
change_images_txt images.txt
alert images2.txt
http://www.lryc.cn/news/328149.html

相关文章:

  • Vue 表单数据双向绑定 v-mode
  • tab切换组件,可横向自适应滑动
  • 设计模式---单例模式
  • HarmonyOS 应用开发之启动/停止本地PageAbility
  • BaseDao封装增删改查
  • Redis入门到实战-第十三弹
  • 深度学习InputStreamReader类
  • 2023年后端面试总结
  • axios实现前后端通信报错Unsupported Media
  • 网络套接字补充——TCP网络编程
  • Nginx-记
  • JS面试题:call,apply,bind区别
  • Charles抓包配置代理手机连接
  • NA555、NE555、SA555和SE555系列精密定时器
  • 黑马鸿蒙笔记2
  • 微信小程序uniapp+vue3+ts+pinia的环境搭建
  • MongoDB聚合运算符:$let
  • HarmonyOS像素转换-如何使用像素单位设置组件的尺寸。
  • 【前端面试3+1】05v-if和v-show的区别、v-if和v-for能同时使用吗、Vuex是什么?【合并两个有序链表】
  • Unity WebRequest 变得简单
  • vue 窗口内容滚动到底部
  • 代码随想录算法训练营Day38|LC509 斐波那契数列LC70 爬楼梯LC746 使用最小花费爬楼梯
  • Qt5.14.2 大神的拖放艺术,优雅而强大的交互体验
  • python3将exe 转支持库错误 AssertionError: None does not smell like code
  • [EFI]Dell Inspiron 15 5567 电脑 Hackintosh 黑苹果efi引导文件
  • 大学 Python 程序设计实验报告:判断密码是否符合要求
  • 基于SpringBoot的农产品直卖平台
  • DevSecOps平台架构系列-微软云Azure DevSecOps平台架构
  • 操作系统:管程与进程通信机制解析
  • inno setup 卸载程序 删除整个安装目录