You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Shell脚本批量管理扫描配置文件:创建、提取ID与批量操作

完整自动化扫描配置文件管理流程(创建→提取ID→批量更新/删除)

作为经常搞API自动化的开发者,我把你的流程补全成了可直接运行的Shell脚本方案,每一步都做了细节处理,避免踩坑:


1. 批量创建扫描配置文件(POST请求)

假设你已经把要批量创建的配置数据存在batch_configs.json里(每行一个独立的配置JSON),用下面的循环就能批量发送POST请求:

#!/bin/bash
# 批量创建扫描配置文件
API_BASE_URL="https://your-api-domain.com/api/scan-profiles"
AUTH_TOKEN="your-auth-token-here" # 替换成实际的认证令牌

# 逐行读取配置并发送请求
while IFS= read -r config; do
  echo "正在创建配置: $config"
  curl -X POST "$API_BASE_URL" \
    -H "Authorization: Bearer $AUTH_TOKEN" \
    -H "Content-Type: application/json" \
    -d "$config"
  echo -e "\n---"
done < batch_configs.json

提示:如果你的API支持一次性接收数组格式的批量配置,直接用curl -d @batch_configs.json就能搞定,不用循环。


2. 获取所有配置文件并提取GUID到文本文件

先看一下GET请求返回的JSON示例(简化版):

{
  "data": [
    {
      "id": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv",
      "name": "扫描配置1",
      "settings": {...}
    },
    {
      "id": "wxyz-1234-5678-abcd-efghijklmnop",
      "name": "扫描配置2",
      "settings": {...}
    }
  ]
}

curl拉取数据后,借助jq(轻量JSON处理工具,提前安装:sudo apt install jqbrew install jq)提取所有id字段,保存到scan_profile_ids.txt

# 获取所有配置文件并提取ID
curl -X GET "$API_BASE_URL" \
  -H "Authorization: Bearer $AUTH_TOKEN" \
  | jq -r '.data[].id' > scan_profile_ids.txt

echo "已提取$(wc -l < scan_profile_ids.txt)个配置ID到scan_profile_ids.txt"

注意:如果你的API返回直接是数组(没有嵌套在data下),把jq命令改成jq -r '.[].id'就行。


3. 批量执行PUT更新或DELETE删除操作

批量更新(PUT请求)

假设你要给所有配置统一修改扫描频率这类设置,用下面的循环:

# 批量更新扫描配置
UPDATE_PAYLOAD='{"scan_frequency": "daily", "enabled": true}' # 替换成实际的更新内容

while IFS= read -r profile_id; do
  # 跳过空行,避免无效请求
  [[ -z "$profile_id" ]] && continue
  
  echo "正在更新配置ID: $profile_id"
  curl -X PUT "$API_BASE_URL/$profile_id" \
    -H "Authorization: Bearer $AUTH_TOKEN" \
    -H "Content-Type: application/json" \
    -d "$UPDATE_PAYLOAD"
  echo -e "\n---"
done < scan_profile_ids.txt

批量删除(DELETE请求)

如果要批量删除所有提取到的配置,把上面的PUT命令换成DELETE即可:

# 批量删除扫描配置
while IFS= read -r profile_id; do
  [[ -z "$profile_id" ]] && continue
  
  echo "正在删除配置ID: $profile_id"
  curl -X DELETE "$API_BASE_URL/$profile_id" \
    -H "Authorization: Bearer $AUTH_TOKEN"
  echo -e "\n---"
done < scan_profile_ids.txt

额外优化建议

  • 错误捕获:可以在curl命令后加|| echo "操作失败: $profile_id",方便排查问题
  • 日志记录:把输出重定向到日志文件,比如>> automation.log 2>&1
  • 并发执行:如果API允许,用xargs -P 5实现并发处理(注意别超过API的速率限制)

内容的提问来源于stack exchange,提问作者Maxim Shyrokyy

火山引擎 最新活动