रनर
अवलोकन
Section titled “अवलोकन”runner.sh एक सूट ऑर्केस्ट्रेटर है जो किसी सूट डायरेक्टरी में क्रमबद्ध सभी नंबरयुक्त स्क्रिप्ट को क्रम से निष्पादित करता है, आउटपुट कैप्चर करता है, और परिणाम मेटाडेटा रिकॉर्ड करता है। यह VM पर /opt/traffic-generator/suites/runner.sh पर इंस्टॉल होता है।
runner.sh <suite-name> [--dry-run]तर्क:
| तर्क | आवश्यक | विवरण |
|---|---|---|
suite-name | हाँ | सूट डायरेक्टरी का नाम (जैसे, web-app-attacks, api-attacks) |
--dry-run | नहीं | कोई भी स्क्रिप्ट चलाए बिना यह प्रिंट करता है कि क्या निष्पादित होगा |
उदाहरण:
# Run the web-app-attacks suite/opt/traffic-generator/suites/runner.sh web-app-attacks
# Dry-run to preview api-attacks scripts/opt/traffic-generator/suites/runner.sh api-attacks --dry-run
# Run bot simulation/opt/traffic-generator/suites/runner.sh bot-simulationकॉन्फ़िगरेशन
Section titled “कॉन्फ़िगरेशन”config.env
Section titled “config.env”रनर /opt/traffic-generator/config.env से कॉन्फ़िगरेशन पढ़ता है:
# Required: target FQDN (F5 XC load balancer domain)TARGET_FQDN=demo.example.com
# Optional: direct origin IP for baseline testing (bypasses F5 XC)TARGET_ORIGIN_IP=यह फ़ाइल Terraform प्रोविज़निंग के दौरान target_fqdn और target_origin_ip वेरिएबल से स्वचालित रूप से लिखी जाती है। डिप्लॉयमेंट के बाद लक्ष्य बदलने के लिए, VM पर इस फ़ाइल को सीधे संपादित करें।
एनवायरनमेंट वेरिएबल ओवरराइड
Section titled “एनवायरनमेंट वेरिएबल ओवरराइड”config.env में कोई भी वेरिएबल सूट चलाने से पहले उसे एक्सपोर्ट करके ओवरराइड किया जा सकता है:
# Override target FQDN for a single runTARGET_FQDN=staging.example.com /opt/traffic-generator/suites/runner.sh web-app-attacks
# Override via exportexport TARGET_FQDN=staging.example.com/opt/traffic-generator/suites/runner.sh web-app-attacksकॉन्फ़िग फ़ाइल पाथ को भी ओवरराइड किया जा सकता है:
CONFIG_FILE=/tmp/my-config.env /opt/traffic-generator/suites/runner.sh web-app-attacksड्राई-रन मोड
Section titled “ड्राई-रन मोड”--dry-run फ्लैग प्रत्येक स्क्रिप्ट को चलाए बिना यह प्रिंट करता है कि कौन सी स्क्रिप्ट निष्पादित होती:
/opt/traffic-generator/suites/runner.sh web-app-attacks --dry-runआउटपुट:
=== 01-sqli.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/01-sqli.sh demo.example.com=== 02-xss.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/02-xss.sh demo.example.com=== 03-command-injection.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/03-command-injection.sh demo.example.com=== 04-path-traversal.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/04-path-traversal.sh demo.example.com=== 05-nikto-scan.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/05-nikto-scan.sh demo.example.com=== 06-nuclei-scan.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/06-nuclei-scan.sh demo.example.com=== Suite Complete ===Passed: 0 | Failed: 0 | Skipped: 6Results: /opt/traffic-generator/results/20260425-143000-web-app-attacksडिप्लॉयमेंट के बाद या किसी नए लक्ष्य के विरुद्ध सूट चलाने से पहले सूट संरचना सत्यापित करने के लिए ड्राई-रन का उपयोग करें।
रिज़ल्ट्स डायरेक्टरी
Section titled “रिज़ल्ट्स डायरेक्टरी”प्रत्येक सूट रन एक टाइमस्टैम्पयुक्त रिज़ल्ट्स डायरेक्टरी बनाता है:
/opt/traffic-generator/results/<YYYYMMDD-HHMMSS>-<suite-name>/संरचना:
/opt/traffic-generator/results/20260425-143000-web-app-attacks/ meta.json 01-sqli.sh.log 02-xss.sh.log 03-command-injection.sh.log 04-path-traversal.sh.log 05-nikto-scan.sh.log 06-nuclei-scan.sh.logप्रत्येक स्क्रिप्ट का stdout और stderr स्क्रिप्ट के नाम पर एक .log फ़ाइल में कैप्चर होता है।
meta.json फ़ॉर्मेट
Section titled “meta.json फ़ॉर्मेट”meta.json फ़ाइल सूट निष्पादन मेटाडेटा रिकॉर्ड करती है:
{ "suite": "web-app-attacks", "target": "demo.example.com", "started": "2026-04-25T14:30:00Z", "completed": "2026-04-25T14:45:23Z", "status": "completed", "passed": 5, "failed": 1, "skipped": 0}| फ़ील्ड | विवरण |
|---|---|
suite | सूट का नाम |
target | रन के लिए उपयोग किया गया लक्ष्य FQDN |
started | सूट शुरू होने का UTC टाइमस्टैम्प |
completed | सूट समाप्त होने का UTC टाइमस्टैम्प |
status | निष्पादन के दौरान running, समाप्त होने पर completed |
passed | कोड 0 से बाहर निकलने वाली स्क्रिप्ट की संख्या |
failed | गैर-शून्य कोड से बाहर निकलने वाली स्क्रिप्ट की संख्या |
skipped | छोड़ी गई स्क्रिप्ट की संख्या (निष्पादन योग्य नहीं या ड्राई-रन) |
अलग-अलग स्क्रिप्ट चलाना
Section titled “अलग-अलग स्क्रिप्ट चलाना”प्रत्येक स्क्रिप्ट को रनर के बिना स्टैंडअलोन निष्पादित किया जा सकता है:
# Run a single script directly/opt/traffic-generator/suites/web-app-attacks/01-sqli.sh demo.example.com
# Run a specific API attack/opt/traffic-generator/suites/api-attacks/01-vampi-owasp-top10.sh demo.example.comस्क्रिप्ट पहले पोज़िशनल तर्क के रूप में लक्ष्य FQDN स्वीकार करती हैं। वे config.env को सीधे नहीं पढ़तीं — केवल रनर ऐसा करता है। स्टैंडअलोन चलाते समय, आपको FQDN स्पष्ट रूप से पास करना होगा।
क्रम में सभी सूट चलाना
Section titled “क्रम में सभी सूट चलाना”प्रत्येक सूट को एक के बाद एक चलाने के लिए:
for suite in web-app-attacks api-attacks bot-simulation reconnaissance ssl-scanning javascript-exploits traffic-generation; do echo "=========================================" echo "Starting suite: ${suite}" echo "=========================================" /opt/traffic-generator/suites/runner.sh "$suite" echo ""doneयह सभी F5 XC सुरक्षा सुविधाओं में व्यापक ट्रैफ़िक उत्पन्न करता है। लक्ष्य के प्रतिक्रिया समय के आधार पर पूर्ण रन में 45-80 मिनट लग सकते हैं।
SSH के माध्यम से रिमोट निष्पादन
Section titled “SSH के माध्यम से रिमोट निष्पादन”SSH सत्र बनाए रखे बिना अपनी लोकल मशीन से सूट चलाएँ:
TGEN_IP=$(terraform output -raw public_ip)
# Run a single suitessh azureuser@${TGEN_IP} '/opt/traffic-generator/suites/runner.sh web-app-attacks'
# Run a suite with target overridessh azureuser@${TGEN_IP} 'TARGET_FQDN=staging.example.com /opt/traffic-generator/suites/runner.sh api-attacks'
# Run in background (disconnection-safe)ssh azureuser@${TGEN_IP} 'nohup /opt/traffic-generator/suites/runner.sh web-app-attacks > /tmp/web-app-attacks.log 2>&1 &'
# Check results laterssh azureuser@${TGEN_IP} 'ls -la /opt/traffic-generator/results/ | tail -5'ssh azureuser@${TGEN_IP} 'cat /opt/traffic-generator/results/$(ls -t /opt/traffic-generator/results/ | head -1)/meta.json'लंबे समय तक चलने वाले सूट के लिए, SSH डिस्कनेक्शन से प्रक्रिया को मारने से बचाने के लिए nohup या tmux का उपयोग करें:
ssh azureuser@${TGEN_IP} 'tmux new-session -d -s traffic "/opt/traffic-generator/suites/runner.sh reconnaissance"'
# Reattach later to watch progressssh -t azureuser@${TGEN_IP} 'tmux attach-session -t traffic'निष्पादन प्रवाह
Section titled “निष्पादन प्रवाह”-
कॉन्फ़िगरेशन लोड करें — रनर
config.env(याCONFIG_FILEओवरराइड) पढ़ता है, फिर एनवायरनमेंट मेंTARGET_FQDNकी जाँच करता है। -
सूट सत्यापित करें — पुष्टि करता है कि नामित सूट डायरेक्टरी सूट डायरेक्टरी के अंतर्गत मौजूद है। न मिलने पर उपलब्ध सूट सूचीबद्ध करता है।
-
रिज़ल्ट्स डायरेक्टरी बनाएँ —
/opt/traffic-generator/results/<timestamp>-<suite>/बनाता है औरstatus: runningके साथ प्रारंभिकmeta.jsonलिखता है। -
स्क्रिप्ट निष्पादित करें — सूट डायरेक्टरी में
[0-9]*से मेल खाने वाली फ़ाइलों के माध्यम से, नाम से क्रमबद्ध, पुनरावृत्ति करता है। गैर-निष्पादन योग्य फ़ाइलें छोड़ देता है। पहले तर्क के रूप मेंTARGET_FQDNपास करता है। आउटपुट को<script-name>.logमें कैप्चर करता है। -
परिणाम रिकॉर्ड करें —
meta.jsonको पूर्णता टाइमस्टैम्प और पास/फेल/स्किप काउंट के साथ अपडेट करता है।