mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-05-17 06:05:02 +00:00
perf(misc): optimize network checks, IP detection, and subprocess chains
Files: install.func, alpine-install.func, core.func, api.func Changes: - install.func: Cache hostname -I result in setting_up_container() — eliminates 3 redundant calls (retry loop + post-check + display). Single awk extracts first IP from cached call. - alpine-install.func: Cache ip addr result in setting_up_container() — replaces 3 identical 4-process pipelines (ip|grep|grep|awk|cut) with one call using single awk (sub+print in one pass). - core.func get_lxc_ip(): Merge awk+cut into single awk (sub+print) for eth0 IPv4/IPv6 lookups. Replace tr|grep pipeline for IPv6 hostname fallback with bash array iteration (read -ra + for loop). - api.func detect_gpu(): Merge 2x sed + cut into single sed -E + bash substring. detect_cpu(): Merge 4x sed + cut into single sed -E + bash substring. get_error_text(): Merge 2x sed into single sed -E. post_addon_to_api(): Replace 2x grep|cut|tr on /etc/os-release with single while-read loop (1 file read instead of 6 subprocess forks).
This commit is contained in:
+15
-12
@@ -1644,7 +1644,7 @@ function get_lxc_ip() {
|
||||
local ip
|
||||
|
||||
# Try direct interface lookup for eth0 FIRST (most reliable for LXC) - IPv4
|
||||
ip=$(ip -4 addr show eth0 2>/dev/null | awk '/inet / {print $2}' | cut -d/ -f1 | head -n1)
|
||||
ip=$(ip -4 addr show eth0 2>/dev/null | awk '/inet / {sub(/\/.*/, "", $2); print $2; exit}')
|
||||
if [[ -n "$ip" && "$ip" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
echo "$ip"
|
||||
return 0
|
||||
@@ -1652,11 +1652,14 @@ function get_lxc_ip() {
|
||||
|
||||
# Fallback: Try hostname -I (returns IPv4 first if available)
|
||||
if command -v hostname >/dev/null 2>&1; then
|
||||
ip=$(hostname -I 2>/dev/null | awk '{print $1}')
|
||||
if [[ -n "$ip" && "$ip" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
echo "$ip"
|
||||
return 0
|
||||
fi
|
||||
local -a _ips
|
||||
read -ra _ips <<<"$(hostname -I 2>/dev/null)"
|
||||
for ip in "${_ips[@]}"; do
|
||||
if [[ "$ip" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
echo "$ip"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Try routing table with IPv4 targets
|
||||
@@ -1674,7 +1677,7 @@ function get_lxc_ip() {
|
||||
done
|
||||
|
||||
# IPv6 fallback: Try direct interface lookup for eth0
|
||||
ip=$(ip -6 addr show eth0 scope global 2>/dev/null | awk '/inet6 / {print $2}' | cut -d/ -f1 | head -n1)
|
||||
ip=$(ip -6 addr show eth0 scope global 2>/dev/null | awk '/inet6 / {sub(/\/.*/, "", $2); print $2; exit}')
|
||||
if [[ -n "$ip" && "$ip" =~ : ]]; then
|
||||
echo "$ip"
|
||||
return 0
|
||||
@@ -1682,11 +1685,11 @@ function get_lxc_ip() {
|
||||
|
||||
# IPv6 fallback: Try hostname -I for IPv6
|
||||
if command -v hostname >/dev/null 2>&1; then
|
||||
ip=$(hostname -I 2>/dev/null | tr ' ' '\n' | grep -E ':' | head -n1)
|
||||
if [[ -n "$ip" && "$ip" =~ : ]]; then
|
||||
echo "$ip"
|
||||
return 0
|
||||
fi
|
||||
local -a _ips6
|
||||
read -ra _ips6 <<<"$(hostname -I 2>/dev/null)"
|
||||
for ip in "${_ips6[@]}"; do
|
||||
[[ "$ip" == *:* ]] && { echo "$ip"; return 0; }
|
||||
done
|
||||
fi
|
||||
|
||||
# IPv6 fallback: Use routing table with IPv6 targets
|
||||
|
||||
Reference in New Issue
Block a user