Verify Cron Output: Validate Script Results
Your cron runs but the output is wrong or empty? Learn how to verify script output with payload validation and get alerts when results fail—Bash, Python, Node examples.
The Problem: Output Validation
Scripts can run successfully but produce wrong or missing output:
- Database query returns empty result set instead of expected data
- API call succeeds but response doesn't contain required fields
- File processing completes but output file is missing expected content
- Report generation runs but produces empty or malformed output
- Data transformation completes but output format is wrong
- Log parsing succeeds but doesn't find expected patterns
Exit code alone doesn't verify output quality. You need to check output content.
Solution: Validate Output Content
After running your script, verify the output contains expected content. Check for required strings, validate JSON structure, verify file contents, or count output lines. The validation must be inside your script, not in the cron line.
Bash Example: Check Output Contains Expected String
#!/bin/bashOUTPUT=$(./generate-report.sh)# Get output validation dataHAS_EXPECTED_CONTENT=0OUTPUT_LENGTH=${#OUTPUT}if echo "$OUTPUT" | grep -q "Report generated successfully"; then HAS_EXPECTED_CONTENT=1fi# Single ping with output validation data in payload# In DeadManPing panel: set validation rules:# - "has_expected_content" == 1# - "output_length" > 0# Panel will automatically detect if output is invalidcurl -X POST "https://deadmanping.com/api/ping/report-job?has_expected_content=$HAS_EXPECTED_CONTENT&output_length=$OUTPUT_LENGTH"Python Example: Validate JSON Output
import subprocessimport jsonimport requestsresult = subprocess.run(['./api-fetch.sh'], capture_output=True, text=True)output = result.stdout# Parse output and extract data for payloadis_valid_json = Truehas_required_fields = Falsedata_not_empty = Falsetry: data = json.loads(output) required_fields = ['status', 'data', 'timestamp'] has_required_fields = all(field in data for field in required_fields) data_not_empty = bool(data.get('data'))except json.JSONDecodeError: is_valid_json = False# Single ping with output validation data in payload# In DeadManPing panel: set validation rules:# - "is_valid_json" == True# - "has_required_fields" == True# - "data_not_empty" == True# Panel will automatically detect if output is invalidrequests.post(f"https://deadmanping.com/api/ping/api-job?is_valid_json={is_valid_json}&has_required_fields={has_required_fields}&data_not_empty={data_not_empty}")Node.js Example: Check File Output Content
const { execSync } = require('child_process');const fs = require('fs');const https = require('https');// Run scriptexecSync('./process-data.sh');// Get output file dataconst outputFile = '/output/processed-data.json';let fileExists = fs.existsSync(outputFile);let lineCount = 0;let hasStatusField = false;if (fileExists) { const content = fs.readFileSync(outputFile, 'utf8'); lineCount = content.split('\n').length; hasStatusField = content.includes('"status": "success"');}// Single ping with output data in payload// In DeadManPing panel: set validation rules:// - "file_exists" == true// - "line_count" >= 10// - "has_status_field" == true// Panel will automatically detect if output is invalidhttps.request(`https://deadmanping.com/api/ping/data-job?file_exists=${fileExists}&line_count=${lineCount}&has_status_field=${hasStatusField}`, { method: 'POST' }).end();Bash Example: Count Output Lines
#!/bin/bashOUTPUT=$(./query-database.sh)# Count non-empty linesLINE_COUNT=$(echo "$OUTPUT" | grep -v '^$' | wc -l)# Single ping with line count in payload# In DeadManPing panel: set validation rule "line_count" >= 5# Panel will automatically detect if output has too few linescurl -X POST "https://deadmanping.com/api/ping/query-job?lines=$LINE_COUNT"Monitoring Output Validation
After adding output validation to your scripts, use a dead man switch to monitor whether validation completed successfully. If your script detects invalid output and exits with error code, the ping never arrives, and you get an alert.
Include validation details in your ping payload (e.g., line counts, missing fields) so you can track output quality over time.
Working Examples
See complete, working code examples in our GitHub repository:
View Examples on GitHub →Start Verifying Script Output
DeadManPing monitors whether your output validation completes. Set up monitoring in 2 minutes, get alerts when output is invalid or missing.
Start Monitoring FreeRelated Articles
Learn more about cron job monitoring and troubleshooting:
Verify Script Output Content
How to verify script output contains expected content.
Curl Success But Wrong Response
How to detect when curl returns success (200) but contains wrong data.
Verify Cron Job Completed
How to verify that cron jobs completed successfully.
Monitor Cron Jobs: One Curl Line, No Migration
Monitor cron jobs with one curl line. No SDK, no migration—get alerts when jobs fail.