diff --git a/scripts/lib/util.sh b/scripts/lib/util.sh index 75fe06cd0..22e5ef4a0 100755 --- a/scripts/lib/util.sh +++ b/scripts/lib/util.sh @@ -2846,6 +2846,26 @@ function openim::util::check_process_names_for_stop() { } +function openim::util::find_process_ports2() { + local process_path="$1" + if [[ -z "$process_path" ]]; then + echo "Usage: find_process_ports /path/to/process" + return 1 + fi + + local protocol_ports="" + lsof -nP -iTCP -iUDP | grep LISTEN | grep "$(pgrep -f $process_path)" | awk '{print $9, $8}' | while read line; do + local port_protocol=($line) + local port=${port_protocol[0]##*:} + local protocol=${port_protocol[1]} + protocol_ports= protocol_ports + $protocol + " "+$ports + echo "Process $process_path is listening on port $port with protocol $protocol" + done + + echo echo "Process $process_path is listening on protocol & port $protocol_ports " + +} + function openim::util::find_process_ports() { local process_path="$1" if [[ -z "$process_path" ]]; then @@ -2853,17 +2873,33 @@ function openim::util::find_process_ports() { return 1 fi + local protocol_ports="" + local pids=$(pgrep -f "$process_path") + if [[ -z "$pids" ]]; then + echo "No process found for $process_path" + return 1 + fi - lsof -nP -iTCP -iUDP | grep LISTEN | grep "$(pgrep -f $process_path)" | awk '{print $9, $8}' | while read line; do - local port_protocol=($line) - local port=${port_protocol[0]##*:} - local protocol=${port_protocol[1]} - echo "Process $process_path is listening on port $port with protocol $protocol" + lsof -nP -iTCP -iUDP | grep LISTEN | grep -E "$(echo $pids | sed 's/ /|/g')" | awk '{print $9, $8}' | while read -r port protocol; do + protocol_ports+="$protocol $port, " + echo "Process $process_path is listening on port ${port##*:} with protocol $protocol" done + + + protocol_ports=${protocol_ports%, } + + if [[ -n "$protocol_ports" ]]; then + echo "Process $process_path is listening on protocol & port: $protocol_ports" + else + echo "Process $process_path is not listening on any port" + fi } + + + function openim::util::find_ports_for_all_services() { local services=("$@") for service in "${services[@]}"; do