Skip to content

Instantly share code, notes, and snippets.

@arcsector
Created January 22, 2025 20:49
Show Gist options
  • Save arcsector/3ed5f87d8b23414bdede97cab9f466ea to your computer and use it in GitHub Desktop.
Save arcsector/3ed5f87d8b23414bdede97cab9f466ea to your computer and use it in GitHub Desktop.
Uploads an app to splunk's appinspect API
#!/bin/bash
BASEURI="https://appinspect.splunk.com/v1/app"
CACHE_HEADER="Cache-Control: no-cache"
USERNAME=$1
APP_PATH=$2
echo "Username: $USERNAME"
# Authenticate and get token
TOKEN=$(curl --silent -u "$USERNAME" "https://api.splunk.com/2.0/rest/login/splunk" | jq -r .data.token)
AUTHORIZATION_HEADER="Authorization: bearer $TOKEN"
echo "Token: $TOKEN"
sleep 3
# Upload app to appinspect and get request ID
REQUEST_ID=$(curl --silent -X POST \
-H "$AUTHORIZATION_HEADER" \
-H "$CACHE_HEADER" \
-F "app_package=@$APP_PATH" \
"$BASEURI/validate")
REQUEST_ID=$(echo "$REQUEST_ID"| jq -r .request_id)
echo "Request ID: $REQUEST_ID"
# Get status
STATUS="PROCESSING"
while [ "$STATUS" = "PROCESSING" ]; do
STATUS=$(curl --silent -X GET \
-H "$AUTHORIZATION_HEADER" \
"$BASEURI/validate/status/$REQUEST_ID" | jq -r .status
)
sleep 2
done
# Download validation report
curl -X GET \
-H "$AUTHORIZATION_HEADER" \
-H "$CACHE_HEADER" \
-H "Content-Type: application/json" \
"https://appinspect.splunk.com/v1/app/report/$REQUEST_ID" | jq . > "${APP_PATH}_appinspect_report_$(date +%Y-%m-%dT%H:%M:%S).json"
echo "Report downloaded to ${APP_PATH}_appinspect_report_$(date +%Y-%m-%dT%H:%M:%S).json"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment