需求: harbor测试产生的容器每天新增的速度太快,太多了,每天定时删除,脚本如下;
import requests
import base64
from loguru import logger
logger.add("harbro_del.log", rotation="100 MB")
cangku = "da-test"
xiangmu = []
xianshi = 30
Page = 1
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36"
}
# ID_name_list = []
ID_list = {
}
timct_taim = []
# ID_key = []
# print(xiangmu[5])
# while True:
def xiangmu1():
for i in range(10):
url = "https://regtry.bu.com/api/v2.0/projects/da-test/repositories?page_size=100&page={}".format(i)
response = requests.get(url, headers=headers)
dat_sdfji = response.json()
if len(dat_sdfji) == 0:
break
for i in dat_sdfji:
sss= i["name"]
oksdf = sss.split('/')
xiangmu.append(oksdf[1])
xiangmu1()
for oks in xiangmu:
if oks == "php" or oks == "openresty" or oks == "alpine" or oks == "golang":
continue
Page +=1
ID_key = []
try:
for i in range(2,12):
url = "https://regtry.bu.com/api/v2.0/projects/{}/repositories/{}/artifacts?with_tag=false&with_scan_overview=true&with_label=true&page_size={}&page={}".format(
cangku, xiangmu[Page], xianshi, i)
print(url)
response = requests.get(url, headers=headers)
dat_sdfji = response.json()
# print(dat_sdfji)
if len(dat_sdfji) != 0:
for i in dat_sdfji:
# print(i["digest"])
creat_time = i["extra_attrs"]["created"]
timct_taim.append(creat_time)
# ID_name_list.append(xiangmu[Page])
ID_key.append(i["digest"])
# print(ID_key)
ID_name = xiangmu[Page]
ID_list[ID_name]= ID_key
except:
print('11111')
def login():
headers = {
"Content-Type": "application/json;charset=UTF-8"}
"""获取token"""
data = {
"principal": "admin",
"password": "123456"
}
url = "https://regtry.bu.com/c/login"
r = requests.post(url=url, json=data, headers=headers)
# 将获取到的token返回
return r.headers["X-Harbor-Csrf-Token"]
def delete_image(del_xiangmu, del_id):
username = "admin"
password = "123456"
user_info_str = username + ":" + password
user_info = base64.b64encode(user_info_str.encode())
header_info = {
"Authorization" : "Basic " + user_info.decode(),
"X-Harbor-CSRF-Token": login()
}
#
url = "https://regtry.bu.com/api/v2.0/projects/da-test/repositories/{}/artifacts/{}".format(del_xiangmu,del_id)
r = requests.delete(url=url, headers=header_info)
print(r.status_code)
print(url)
if r.status_code == 200:
logger.debug("{}-{}删除成功".format(del_xiangmu, del_id))
for i in ID_list:
for i2 in ID_list[i]:
delete_image(i, i2)
加一个周期计划任务即可…