149 lines
4.3 KiB
Bash
Executable File
149 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Targeted Discovery Runner
|
|
# Executes specific discovery scripts on devices with partial data
|
|
#
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(dirname "$0")"
|
|
|
|
# Device configurations
|
|
declare -A PARTIAL_DEVICES
|
|
PARTIAL_DEVICES["fedora"]="localhost"
|
|
PARTIAL_DEVICES["lenovo420"]="100.98.144.95"
|
|
PARTIAL_DEVICES["lenovo"]="192.168.50.181"
|
|
PARTIAL_DEVICES["surface"]="100.67.40.97"
|
|
|
|
declare -A DEVICE_USERS
|
|
DEVICE_USERS["fedora"]="jonathan"
|
|
DEVICE_USERS["lenovo420"]="jon"
|
|
DEVICE_USERS["lenovo"]="jonathan"
|
|
DEVICE_USERS["surface"]="jon"
|
|
|
|
# Targeted scripts to run
|
|
SCRIPTS=(
|
|
"targeted_security_discovery.sh"
|
|
"targeted_data_discovery.sh"
|
|
"targeted_performance_discovery.sh"
|
|
)
|
|
|
|
echo "=== Targeted Discovery Runner ==="
|
|
echo "Running missing discovery categories on partial devices"
|
|
echo "Devices: ${!PARTIAL_DEVICES[@]}"
|
|
echo "Scripts: ${SCRIPTS[@]}"
|
|
echo "======================================="
|
|
|
|
run_script_on_device() {
|
|
local device=$1
|
|
local host=${PARTIAL_DEVICES[$device]}
|
|
local user=${DEVICE_USERS[$device]}
|
|
local script=$2
|
|
|
|
echo "[$device] Running $script"
|
|
|
|
if [ "$host" = "localhost" ]; then
|
|
# Local execution
|
|
chmod +x "$SCRIPT_DIR/$script"
|
|
sudo "$SCRIPT_DIR/$script"
|
|
else
|
|
# Remote execution
|
|
scp "$SCRIPT_DIR/$script" "$user@$host:/tmp/"
|
|
ssh "$user@$host" "chmod +x /tmp/$script && sudo /tmp/$script"
|
|
fi
|
|
|
|
echo "[$device] $script completed"
|
|
}
|
|
|
|
collect_results() {
|
|
local device=$1
|
|
local host=${PARTIAL_DEVICES[$device]}
|
|
local user=${DEVICE_USERS[$device]}
|
|
local results_dir="/home/jonathan/Coding/HomeAudit/targeted_discovery_results"
|
|
|
|
mkdir -p "$results_dir"
|
|
|
|
echo "[$device] Collecting results..."
|
|
|
|
if [ "$host" = "localhost" ]; then
|
|
# Local collection
|
|
find /tmp -name "*_discovery_*_*" -type d -newer "$SCRIPT_DIR/$0" -exec cp -r {} "$results_dir/" \;
|
|
else
|
|
# Remote collection
|
|
ssh "$user@$host" "find /tmp -name '*_discovery_*' -type d -newer /tmp/targeted_*_discovery.sh -exec tar -czf {}.tar.gz {} \;" 2>/dev/null || true
|
|
scp "$user@$host:/tmp/*_discovery_*.tar.gz" "$results_dir/" 2>/dev/null || echo "[$device] No results to collect"
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
local target_device=""
|
|
local target_script=""
|
|
|
|
# Parse command line arguments
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--device)
|
|
target_device="$2"
|
|
shift 2
|
|
;;
|
|
--script)
|
|
target_script="$2"
|
|
shift 2
|
|
;;
|
|
--help)
|
|
echo "Usage: $0 [--device DEVICE] [--script SCRIPT]"
|
|
echo "Devices: ${!PARTIAL_DEVICES[@]}"
|
|
echo "Scripts: ${SCRIPTS[@]}"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Run on specific device or all devices
|
|
if [ -n "$target_device" ]; then
|
|
if [[ ! " ${!PARTIAL_DEVICES[@]} " =~ " ${target_device} " ]]; then
|
|
echo "Error: Unknown device '$target_device'"
|
|
exit 1
|
|
fi
|
|
devices=("$target_device")
|
|
else
|
|
devices=("${!PARTIAL_DEVICES[@]}")
|
|
fi
|
|
|
|
# Run specific script or all scripts
|
|
if [ -n "$target_script" ]; then
|
|
if [[ ! " ${SCRIPTS[@]} " =~ " ${target_script} " ]]; then
|
|
echo "Error: Unknown script '$target_script'"
|
|
exit 1
|
|
fi
|
|
scripts=("$target_script")
|
|
else
|
|
scripts=("${SCRIPTS[@]}")
|
|
fi
|
|
|
|
# Execute targeted discovery
|
|
for device in "${devices[@]}"; do
|
|
echo "Starting targeted discovery on $device"
|
|
|
|
for script in "${scripts[@]}"; do
|
|
if ! run_script_on_device "$device" "$script"; then
|
|
echo "Warning: $script failed on $device, continuing..."
|
|
fi
|
|
sleep 2 # Brief pause between scripts
|
|
done
|
|
|
|
collect_results "$device"
|
|
echo "$device completed"
|
|
echo "---"
|
|
done
|
|
|
|
echo "=== Targeted Discovery Complete ==="
|
|
echo "Results available in: /home/jonathan/Coding/HomeAudit/targeted_discovery_results/"
|
|
ls -la /home/jonathan/Coding/HomeAudit/targeted_discovery_results/ 2>/dev/null || echo "No results directory created yet"
|
|
}
|
|
|
|
main "$@" |