Files
2026-08-26 14:11:37 +07:00

115 lines
4.0 KiB
Bash

#!/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: ./<binary> (script is bundled, no -p needed)"
echo " Or: ./<binary> -p custom_script.sh"
echo "========================================"