#!/bin/bash # ============================================================ # Build Linux audit binaries with PyInstaller # Run this on the TARGET OS version: # - Ubuntu binary → build on Ubuntu 20.04+ # - CentOS 7 binary → build on CentOS 7 # - CentOS 6 binary → build on CentOS 6 (Python 2.6+) # - Oracle binary → build on Oracle Linux 7+ # # Usage: bash build_all.sh [ubuntu|centos|oracle|centos6|all] # ============================================================ set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PARENT_DIR="$(dirname "$SCRIPT_DIR")" CHECK_SCRIPT_DIR="${PARENT_DIR}/audit_check_script" DIST_DIR="${SCRIPT_DIR}/dist" mkdir -p "${DIST_DIR}" build_ubuntu() { echo "=== Building Ubuntu Audit Tool ===" cp "${CHECK_SCRIPT_DIR}/audit_cis_ubuntu_v202.sh" "${SCRIPT_DIR}/" pip install pycryptodome cryptography colorama unidecode pyinstaller pyinstaller --onefile --console --name ubuntu_audit \ --add-data "audit_cis_ubuntu_v202.sh:." \ --hidden-import colorama \ --hidden-import unidecode \ --hidden-import Crypto.Cipher \ --hidden-import Crypto.PublicKey \ --hidden-import Crypto.Util.Padding \ --hidden-import cryptography \ --hidden-import cryptography.hazmat.primitives.ciphers \ --hidden-import cryptography.hazmat.primitives.padding \ ubuntu_audit_v2.py echo " -> ${DIST_DIR}/ubuntu_audit" } build_centos() { echo "=== Building CentOS/RHEL Audit Tool ===" cp "${CHECK_SCRIPT_DIR}/audit_cis_centos_v202.sh" "${SCRIPT_DIR}/" pip install pycryptodome cryptography colorama unidecode pyinstaller pyinstaller --onefile --console --name centos_rhel_audit \ --add-data "audit_cis_centos_v202.sh:." \ --hidden-import colorama \ --hidden-import unidecode \ --hidden-import Crypto.Cipher \ --hidden-import Crypto.PublicKey \ --hidden-import Crypto.Util.Padding \ --hidden-import cryptography \ --hidden-import cryptography.hazmat.primitives.ciphers \ --hidden-import cryptography.hazmat.primitives.padding \ centos_rhel_audit_v2.py echo " -> ${DIST_DIR}/centos_rhel_audit" } build_oracle() { echo "=== Building Oracle Linux Audit Tool ===" cp "${CHECK_SCRIPT_DIR}/audit_cis_centos_v202.sh" "${SCRIPT_DIR}/" pip install pycryptodome cryptography colorama unidecode pyinstaller pyinstaller --onefile --console --name oracle_linux_audit \ --add-data "audit_cis_centos_v202.sh:." \ --hidden-import colorama \ --hidden-import unidecode \ --hidden-import Crypto.Cipher \ --hidden-import Crypto.PublicKey \ --hidden-import Crypto.Util.Padding \ --hidden-import cryptography \ --hidden-import cryptography.hazmat.primitives.ciphers \ --hidden-import cryptography.hazmat.primitives.padding \ oracle_linux_audit_v2.py echo " -> ${DIST_DIR}/oracle_linux_audit" } build_centos6() { echo "=== Building CentOS 6 Audit Tool ===" cp "${CHECK_SCRIPT_DIR}/audit_cis_centos6.sh" "${SCRIPT_DIR}/" pip install pyinstaller pyinstaller --onefile --console --name centos6_audit \ --add-data "audit_cis_centos6.sh:." \ audit_centos6.py echo " -> ${DIST_DIR}/centos6_audit" } build_all() { build_ubuntu build_centos build_oracle build_centos6 } case "${1:-all}" in ubuntu) build_ubuntu ;; centos) build_centos ;; oracle) build_oracle ;; centos6) build_centos6 ;; all) build_all ;; *) echo "Usage: bash build_all.sh [ubuntu|centos|oracle|centos6|all]" exit 1 ;; esac echo "" echo "========================================" echo "Build complete! Output: ${DIST_DIR}/" echo "" echo "Deploy to target server:" echo " 1. Copy the binary from dist/" echo " 2. Copy public_key.pem to same folder" echo " 3. Run: ./ (script is bundled, no -p needed)" echo " Or: ./ -p custom_script.sh" echo "========================================"