Repository navigation
Expand file tree
/
Copy pathsimulate_data.sh
More file actions
executable file
·89 lines (77 loc) · 2.52 KB
/
Copy pathsimulate_data.sh
File metadata and controls
executable file
·89 lines (77 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/bash
# Configuration
PHIELD_URL=${PHIELD_URL:-"http://localhost:8080"}
SOURCE_ID=${SOURCE_ID:-"simulated-server-01"}
ORGANIZATION=${ORGANIZATION:-"demo-org"}
CONTEXT=${CONTEXT:-"context1"}
ITERATIONS=${ITERATIONS:-50}
SLEEP_INTERVAL=${SLEEP_INTERVAL:-1}
# Sent only when the instance requires an API key.
AUTH_ARGS=()
if [ -n "$PHIELD_API_KEY" ]; then
AUTH_ARGS=(-H "Authorization: Bearer $PHIELD_API_KEY")
fi
echo "Starting PII data simulation for Phield..."
echo "Target URL: $PHIELD_URL"
echo "Source ID: $SOURCE_ID"
echo "Organization: $ORGANIZATION"
echo "Context: $CONTEXT"
echo "Baseline iterations: $ITERATIONS"
# Function to send data
send_data() {
local cc=$1
local email=$2
local ssn=$3
local name=$4
local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
payload=$(cat <<EOF
{
"timestamp": "$timestamp",
"source_id": "$SOURCE_ID",
"organization": "$ORGANIZATION",
"context": "$CONTEXT",
"pii_types": {
"credit-card": $cc,
"email": $email,
"ssn": $ssn,
"name": $name
}
}
EOF
)
# Check the HTTP status, not curl's exit code: a rejected request (for
# example, a missing or wrong API key) still exits 0.
local status
status=$(curl -s -o /dev/null -w "%{http_code}" -X POST "$PHIELD_URL/ingest" \
-H "Content-Type: application/json" \
"${AUTH_ARGS[@]}" \
-d "$payload")
if [ "$status" = "202" ]; then
echo "[$(date +'%H:%M:%S')] Sent: CC=$cc, Email=$email, SSN=$ssn, Name=$name"
else
echo "[$(date +'%H:%M:%S')] Failed to send data to $PHIELD_URL (HTTP $status)"
fi
}
# 1. Simulate Baseline Data
echo "--- Simulating Baseline Trend ---"
for i in $(seq 1 $ITERATIONS); do
# Generate somewhat random but stable counts
CC_COUNT=$(( RANDOM % 10 + 20 )) # 20-29
EMAIL_COUNT=$(( RANDOM % 20 + 100 )) # 100-119
SSN_COUNT=$(( RANDOM % 5 + 2 )) # 2-6
NAME_COUNT=$(( RANDOM % 15 + 50 )) # 50-64
send_data $CC_COUNT $EMAIL_COUNT $SSN_COUNT $NAME_COUNT
sleep $SLEEP_INTERVAL
done
# 2. Simulate a Trend Change (Spike)
echo "--- Simulating Trend Change (Spike) ---"
for i in $(seq 1 10); do
# Sudden spike in Credit Cards and SSNs
CC_COUNT=$(( RANDOM % 50 + 200 )) # 200-249 (Massive spike from ~25)
EMAIL_COUNT=$(( RANDOM % 20 + 110 )) # Stable
SSN_COUNT=$(( RANDOM % 20 + 50 )) # 50-69 (Significant spike from ~4)
NAME_COUNT=$(( RANDOM % 15 + 60 )) # Slightly higher
send_data $CC_COUNT $EMAIL_COUNT $SSN_COUNT $NAME_COUNT
sleep $SLEEP_INTERVAL
done
echo "Simulation complete."