@@ -16,6 +16,55 @@ set -uo pipefail
1616TOOL_CATEGORY_MAP[" nessus" ]=" exploitation"
1717APP_TESTS[" nessus" ]=" /opt/nessus/bin/nasl -h"
1818
19+ # ##############################################################################
20+ # wait_for_nessus_ready
21+ # ==============================
22+ # Wait until Nessus service is fully initialized and ready for CLI actions
23+ # ————————————————————
24+ # Usage:
25+ # wait_for_nessus_ready <timeout_seconds>
26+ #
27+ # Example:
28+ # wait_for_nessus_ready 120 # waits up to two minutes
29+ #
30+ # Return Values:
31+ # 0 = success (ready)
32+ # 1 = timeout
33+ # 2 = service not running
34+ # ##############################################################################
35+ function wait_for_nessus_ready() {
36+ local timeout=" ${1:- 120} " # default: 120 seconds max
37+ local log_file=" /opt/nessus/var/nessus/logs/nessusd.messages"
38+ local db_file=" /opt/nessus/var/nessus/global.db"
39+
40+ echo " [*] Checking Nessus service status..."
41+ if ! systemctl is-active --quiet nessusd.service; then
42+ echo " [!] Nessus service is NOT running."
43+ return 2
44+ fi
45+
46+ echo " [*] Waiting up to ${timeout} s for Nessus to become ready..."
47+ local elapsed=0
48+ local interval=2
49+
50+ while (( elapsed < timeout)) ; do
51+ # Check DB existence and minimum expected size
52+ if [[ -f " ${db_file} " ]] && [[ $( stat -c%s " ${db_file} " 2> /dev/null) -gt 200000 ]]; then
53+ # Look for "Nessus is ready" in log
54+ if grep -q " Nessus is ready" " ${log_file} " 2> /dev/null; then
55+ echo " [+] Nessus is ready after ${elapsed} s!"
56+ return 0
57+ fi
58+ fi
59+
60+ sleep " ${interval} "
61+ (( elapsed += interval))
62+ done
63+
64+ echo " [!] Timeout reached. Nessus did not report ready."
65+ return 1
66+ }
67+
1968function install_nessus() {
2069 # Check required environment variables
2170 check_env_var " INSTALL_NESSUS" || return " ${FAIL} "
@@ -56,14 +105,22 @@ function install_nessus() {
56105 fi
57106 if ${SETUP_NESSUS} ; then
58107 systemctl start nessusd.service
59- # Add a new user (automated user addition)
60- /opt/nessus/sbin/nessuscli adduser " ${NESSUS_USER} " << EOF
108+
109+ if wait_for_nessus_ready 180; then
110+ # Add a new user (automated user addition)
111+ info " [+] Proceeding with Nessus CLI actions..."
112+ /opt/nessus/sbin/nessuscli adduser << EOF
61113${NESSUSPASSWORD}
62114${NESSUSPASSWORD}
63115y
64116
65117y
66118EOF
119+ else
120+ warn " [!] Aborting — Nessus never initialized fully."
121+ return
122+ fi
123+
67124 # Make Nessus listen only on 127.0.0.1
68125 /opt/nessus/sbin/nessuscli fix --set listen_address=127.0.0.1
69126 # Register Nessus
0 commit comments