cleanup
This commit is contained in:
parent
31434c3db4
commit
d1c3937a8d
@ -1,60 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/refs/heads/main/misc/build.func)
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Omar Minaya
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://lyrion.org/getting-started/
|
|
||||||
|
|
||||||
APP="Lyrion Music Server"
|
|
||||||
var_tags="${var_tags:-media}"
|
|
||||||
var_cpu="${var_cpu:-1}"
|
|
||||||
var_ram="${var_ram:-1024}"
|
|
||||||
var_disk="${var_disk:-3}"
|
|
||||||
var_os="${var_os:-debian}"
|
|
||||||
var_version="${var_version:-12}"
|
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
|
||||||
|
|
||||||
header_info "$APP"
|
|
||||||
variables
|
|
||||||
color
|
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
|
||||||
header_info
|
|
||||||
check_container_storage
|
|
||||||
check_container_resources
|
|
||||||
|
|
||||||
if [[ ! -f /lib/systemd/system/lyrionmusicserver.service ]]; then
|
|
||||||
msg_error "No ${APP} Installation Found!"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
DEB_URL=$(curl -s 'https://lyrion.org/getting-started/' | grep -oP '<a\s[^>]*href="\K[^"]*amd64\.deb(?="[^>]*>)' | head -n 1)
|
|
||||||
RELEASE=$(echo "$DEB_URL" | grep -oP 'lyrionmusicserver_\K[0-9.]+(?=_amd64\.deb)')
|
|
||||||
DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_amd64.deb"
|
|
||||||
if [[ ! -f /opt/lyrion_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/lyrion_version.txt)" ]]; then
|
|
||||||
msg_info "Updating $APP to ${RELEASE}"
|
|
||||||
curl -fsSL -o "$DEB_FILE" "$DEB_URL"
|
|
||||||
$STD apt install "$DEB_FILE" -y
|
|
||||||
systemctl restart lyrion
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated $APP to ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD rm -f "$DEB_FILE"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
||||||
else
|
|
||||||
msg_ok "$APP is already up to date (${RELEASE})"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
start
|
|
||||||
build_container
|
|
||||||
description
|
|
||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
|
||||||
echo -e "${INFO}${YW} Access the web interface at:${CL}"
|
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000${CL}"
|
|
@ -1,40 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "NIC Offloading Fix",
|
|
||||||
"slug": "nic-offloading-fix",
|
|
||||||
"categories": [
|
|
||||||
1
|
|
||||||
],
|
|
||||||
"date_created": "2025-05-25",
|
|
||||||
"type": "pve",
|
|
||||||
"updateable": false,
|
|
||||||
"privileged": false,
|
|
||||||
"interface_port": null,
|
|
||||||
"documentation": null,
|
|
||||||
"config_path": "",
|
|
||||||
"website": null,
|
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
|
|
||||||
"description": "This script automates the process of disabling network interface card (NIC) offloading features specifically for Intel e1000e network interfaces on Linux systems.",
|
|
||||||
"install_methods": [
|
|
||||||
{
|
|
||||||
"type": "default",
|
|
||||||
"script": "tools/pve/nic-offloading-fix.sh",
|
|
||||||
"resources": {
|
|
||||||
"cpu": null,
|
|
||||||
"ram": null,
|
|
||||||
"hdd": null,
|
|
||||||
"os": null,
|
|
||||||
"version": null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"default_credentials": {
|
|
||||||
"username": null,
|
|
||||||
"password": null
|
|
||||||
},
|
|
||||||
"notes": [
|
|
||||||
{
|
|
||||||
"text": "Execute within the Proxmox shell",
|
|
||||||
"type": "info"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,105 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: MickLesk (Canbiz)
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://github.com/homarr-labs/homarr
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
|
||||||
$STD apk add --no-cache \
|
|
||||||
redis \
|
|
||||||
nginx \
|
|
||||||
ca-certificates \
|
|
||||||
openssl \
|
|
||||||
jq \
|
|
||||||
make \
|
|
||||||
g++ \
|
|
||||||
gettext \
|
|
||||||
libstdc++ \
|
|
||||||
libgcc \
|
|
||||||
python3 \
|
|
||||||
py3-pip
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
NODE_VERSION=$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.engines.node | split(">=")[1] | split(".")[0]')
|
|
||||||
NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/homarr-labs/homarr/dev/package.json | jq -r '.packageManager | split("@")[1]')"
|
|
||||||
install_node_and_modules
|
|
||||||
fetch_and_deploy_gh_release "homarr-labs/homarr"
|
|
||||||
|
|
||||||
msg_info "Installing Homarr"
|
|
||||||
mkdir -p /opt/homarr_db
|
|
||||||
touch /opt/homarr_db/db.sqlite
|
|
||||||
SECRET_ENCRYPTION_KEY="$(openssl rand -hex 32)"
|
|
||||||
cd /opt/homarr
|
|
||||||
cat <<EOF >/opt/homarr/.env
|
|
||||||
DB_DRIVER='better-sqlite3'
|
|
||||||
DB_DIALECT='sqlite'
|
|
||||||
SECRET_ENCRYPTION_KEY='${SECRET_ENCRYPTION_KEY}'
|
|
||||||
DB_URL='/opt/homarr_db/db.sqlite'
|
|
||||||
TURBO_TELEMETRY_DISABLED=1
|
|
||||||
AUTH_PROVIDERS='credentials'
|
|
||||||
NODE_ENV='production'
|
|
||||||
EOF
|
|
||||||
|
|
||||||
$STD pnpm install
|
|
||||||
$STD pnpm build
|
|
||||||
msg_ok "Installed Homarr"
|
|
||||||
|
|
||||||
msg_info "Copying build and config files"
|
|
||||||
cp /opt/homarr/apps/nextjs/next.config.ts .
|
|
||||||
cp /opt/homarr/apps/nextjs/package.json .
|
|
||||||
cp -r /opt/homarr/packages/db/migrations /opt/homarr_db/migrations
|
|
||||||
cp -r /opt/homarr/apps/nextjs/.next/standalone/* /opt/homarr
|
|
||||||
mkdir -p /appdata/redis
|
|
||||||
cp /opt/homarr/packages/redis/redis.conf /opt/homarr/redis.conf
|
|
||||||
mkdir -p /etc/nginx/templates
|
|
||||||
cp /opt/homarr/nginx.conf /etc/nginx/templates/nginx.conf
|
|
||||||
mkdir -p /opt/homarr/apps/cli
|
|
||||||
cp /opt/homarr/packages/cli/cli.cjs /opt/homarr/apps/cli/cli.cjs
|
|
||||||
echo -e '#!/bin/sh\ncd /opt/homarr/apps/cli && node ./cli.cjs "$@"' >/usr/bin/homarr
|
|
||||||
chmod +x /usr/bin/homarr
|
|
||||||
mkdir -p /opt/homarr/build
|
|
||||||
cp ./node_modules/better-sqlite3/build/Release/better_sqlite3.node ./build/better_sqlite3.node
|
|
||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
|
||||||
msg_ok "Finished copying"
|
|
||||||
|
|
||||||
msg_info "Creating run script"
|
|
||||||
cat <<'EOF' >/opt/run_homarr.sh
|
|
||||||
#!/bin/sh
|
|
||||||
set -a
|
|
||||||
. /opt/homarr/.env
|
|
||||||
set +a
|
|
||||||
export DB_DIALECT='sqlite'
|
|
||||||
export AUTH_SECRET=$(openssl rand -base64 32)
|
|
||||||
node /opt/homarr_db/migrations/$DB_DIALECT/migrate.cjs /opt/homarr_db/migrations/$DB_DIALECT
|
|
||||||
for dir in $(find /opt/homarr_db/migrations/migrations -mindepth 1 -maxdepth 1 -type d); do
|
|
||||||
dirname=$(basename "$dir")
|
|
||||||
mkdir -p "/opt/homarr_db/migrations/$dirname"
|
|
||||||
cp -r "$dir"/* "/opt/homarr_db/migrations/$dirname/" 2>/dev/null || true
|
|
||||||
done
|
|
||||||
export HOSTNAME=$(ip route get 1.1.1.1 | awk '/src/ { print $7 }')
|
|
||||||
envsubst '${HOSTNAME}' < /etc/nginx/templates/nginx.conf > /etc/nginx/nginx.conf
|
|
||||||
nginx -g 'daemon off;' &
|
|
||||||
redis-server /opt/homarr/redis.conf &
|
|
||||||
node apps/tasks/tasks.cjs &
|
|
||||||
node apps/websocket/wssServer.cjs &
|
|
||||||
node apps/nextjs/server.js & PID=$!
|
|
||||||
wait $PID
|
|
||||||
EOF
|
|
||||||
chmod +x /opt/run_homarr.sh
|
|
||||||
msg_ok "Created run script"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
rm -rf /opt/v${RELEASE}.zip
|
|
||||||
msg_ok "Cleaned"
|
|
@ -1,32 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Copyright (c) 2021-2025 community-scripts ORG
|
|
||||||
# Author: Omar Minaya
|
|
||||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
||||||
# Source: https://lyrion.org/getting-started/
|
|
||||||
|
|
||||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
||||||
color
|
|
||||||
verb_ip6
|
|
||||||
catch_errors
|
|
||||||
setting_up_container
|
|
||||||
network_check
|
|
||||||
update_os
|
|
||||||
|
|
||||||
msg_info "Setup Lyrion Music Server"
|
|
||||||
DEB_URL=$(curl -fsSL 'https://lyrion.org/getting-started/' | grep -oP '<a\s[^>]*href="\K[^"]*amd64\.deb(?="[^>]*>)' | head -n 1)
|
|
||||||
RELEASE=$(echo "$DEB_URL" | grep -oP 'lyrionmusicserver_\K[0-9.]+(?=_amd64\.deb)')
|
|
||||||
DEB_FILE="/tmp/lyrionmusicserver_${RELEASE}_amd64.deb"
|
|
||||||
curl -fsSL -o "$DEB_FILE" "$DEB_URL"
|
|
||||||
$STD apt install "$DEB_FILE" -y
|
|
||||||
echo "${RELEASE}" >"/opt/lyrion_version.txt"
|
|
||||||
msg_ok "Setup Lyrion Music Server v${RELEASE}"
|
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
|
||||||
$STD rm -f "$DEB_FILE"
|
|
||||||
$STD apt-get -y autoremove
|
|
||||||
$STD apt-get -y autoclean
|
|
||||||
msg_ok "Cleaned"
|
|
@ -1,227 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Creates a systemd service to disable NIC offloading features for Intel e1000e interfaces
|
|
||||||
# Author: rcastley
|
|
||||||
# License: MIT
|
|
||||||
|
|
||||||
YW=$(echo "\033[33m")
|
|
||||||
YWB=$'\e[93m'
|
|
||||||
BL=$(echo "\033[36m")
|
|
||||||
RD=$(echo "\033[01;31m")
|
|
||||||
BGN=$(echo "\033[4;92m")
|
|
||||||
GN=$(echo "\033[1;92m")
|
|
||||||
DGN=$(echo "\033[32m")
|
|
||||||
CL=$(echo "\033[m")
|
|
||||||
TAB=" "
|
|
||||||
CM="${TAB}✔️${TAB}"
|
|
||||||
CROSS="${TAB}✖️${TAB}"
|
|
||||||
INFO="${TAB}ℹ️${TAB}${CL}"
|
|
||||||
WARN="${TAB}⚠️${TAB}${CL}"
|
|
||||||
|
|
||||||
function header_info {
|
|
||||||
clear
|
|
||||||
cat <<"EOF"
|
|
||||||
|
|
||||||
_ ____________ ____ __________ ___ ____ _ __ __
|
|
||||||
/ | / / _/ ____/ / __ \/ __/ __/ /___ ____ _____/ (_)___ ____ _ / __ \(_)________ _/ /_ / /__ _____
|
|
||||||
/ |/ // // / / / / / /_/ /_/ / __ \/ __ `/ __ / / __ \/ __ `/ / / / / / ___/ __ `/ __ \/ / _ \/ ___/
|
|
||||||
/ /| // // /___ / /_/ / __/ __/ / /_/ / /_/ / /_/ / / / / / /_/ / / /_/ / (__ ) /_/ / /_/ / / __/ /
|
|
||||||
/_/ |_/___/\____/ \____/_/ /_/ /_/\____/\__,_/\__,_/_/_/ /_/\__, / /_____/_/____/\__,_/_.___/_/\___/_/
|
|
||||||
/____/
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
header_info
|
|
||||||
|
|
||||||
function msg_info() { echo -e "${INFO} ${YW}${1}...${CL}"; }
|
|
||||||
function msg_ok() { echo -e "${CM} ${GN}${1}${CL}"; }
|
|
||||||
function msg_error() { echo -e "${CROSS} ${RD}${1}${CL}"; }
|
|
||||||
function msg_warn() { echo -e "${WARN} ${YWB}${1}"; }
|
|
||||||
|
|
||||||
# Check for root privileges
|
|
||||||
if [ "$(id -u)" -ne 0 ]; then
|
|
||||||
msg_error "Error: This script must be run as root."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! command -v ethtool >/dev/null 2>&1; then
|
|
||||||
msg_info "Installing ethtool"
|
|
||||||
apt-get update &>/dev/null
|
|
||||||
apt-get install -y ethtool &>/dev/null || { msg_error "Failed to install ethtool. Exiting."; exit 1; }
|
|
||||||
msg_ok "ethtool installed successfully"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get list of network interfaces using Intel e1000e driver
|
|
||||||
INTERFACES=()
|
|
||||||
COUNT=0
|
|
||||||
|
|
||||||
msg_info "Searching for Intel e1000e interfaces"
|
|
||||||
|
|
||||||
for device in /sys/class/net/*; do
|
|
||||||
interface="$(basename "$device")" # or adjust the rest of the usages below, as mostly you'll use the path anyway
|
|
||||||
# Skip loopback interface and virtual interfaces
|
|
||||||
if [[ "$interface" != "lo" ]] && [[ ! "$interface" =~ ^(tap|fwbr|veth|vmbr|bonding_masters) ]]; then
|
|
||||||
# Check if the interface uses the e1000e driver
|
|
||||||
driver=$(basename $(readlink -f /sys/class/net/$interface/device/driver 2>/dev/null) 2>/dev/null)
|
|
||||||
|
|
||||||
if [[ "$driver" == "e1000e" ]]; then
|
|
||||||
# Get MAC address for additional identification
|
|
||||||
mac=$(cat /sys/class/net/$interface/address 2>/dev/null)
|
|
||||||
INTERFACES+=("$interface" "Intel e1000e NIC ($mac)")
|
|
||||||
((COUNT++))
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Check if any Intel e1000e interfaces were found
|
|
||||||
if [ ${#INTERFACES[@]} -eq 0 ]; then
|
|
||||||
whiptail --title "Error" --msgbox "No Intel e1000e network interfaces found!" 10 60
|
|
||||||
msg_error "No Intel e1000e network interfaces found! Exiting."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg_ok "Found ${BL}$COUNT${GN} Intel e1000e interfaces"
|
|
||||||
|
|
||||||
# Create a checklist for interface selection with all interfaces initially checked
|
|
||||||
INTERFACES_CHECKLIST=()
|
|
||||||
for ((i=0; i<${#INTERFACES[@]}; i+=2)); do
|
|
||||||
INTERFACES_CHECKLIST+=("${INTERFACES[i]}" "${INTERFACES[i+1]}" "ON")
|
|
||||||
done
|
|
||||||
|
|
||||||
# Show interface selection checklist
|
|
||||||
SELECTED_INTERFACES=$(whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --title "Network Interfaces" \
|
|
||||||
--separate-output --checklist "Select Intel e1000e network interfaces\n(Space to toggle, Enter to confirm):" 15 80 6 \
|
|
||||||
"${INTERFACES_CHECKLIST[@]}" 3>&1 1>&2 2>&3)
|
|
||||||
|
|
||||||
exitstatus=$?
|
|
||||||
if [ $exitstatus != 0 ]; then
|
|
||||||
msg_info "User canceled. Exiting."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if any interfaces were selected
|
|
||||||
if [ -z "$SELECTED_INTERFACES" ]; then
|
|
||||||
msg_error "No interfaces selected. Exiting."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Convert the selected interfaces into an array
|
|
||||||
readarray -t INTERFACE_ARRAY <<< "$SELECTED_INTERFACES"
|
|
||||||
|
|
||||||
# Show the number of selected interfaces
|
|
||||||
INTERFACE_COUNT=${#INTERFACE_ARRAY[@]}
|
|
||||||
|
|
||||||
# Print selected interfaces
|
|
||||||
for iface in "${INTERFACE_ARRAY[@]}"; do
|
|
||||||
msg_ok "Selected interface: ${BL}$iface${CL}"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Ask for confirmation with the list of selected interfaces
|
|
||||||
CONFIRMATION_MSG="You have selected the following interface(s):\n\n"
|
|
||||||
for iface in "${INTERFACE_ARRAY[@]}"; do
|
|
||||||
SPEED=$(cat /sys/class/net/$iface/speed 2>/dev/null)
|
|
||||||
MAC=$(cat /sys/class/net/$iface/address 2>/dev/null)
|
|
||||||
CONFIRMATION_MSG+="- $iface (MAC: $MAC, Speed: ${SPEED}Mbps)\n"
|
|
||||||
done
|
|
||||||
CONFIRMATION_MSG+="\nThis will create systemd service(s) to disable offloading features.\n\nProceed?"
|
|
||||||
|
|
||||||
if ! whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --title "Confirmation" \
|
|
||||||
--yesno "$CONFIRMATION_MSG" 20 80; then
|
|
||||||
msg_info "User canceled. Exiting."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Loop through all selected interfaces and create services for each
|
|
||||||
for SELECTED_INTERFACE in "${INTERFACE_ARRAY[@]}"; do
|
|
||||||
# Create service name for this interface
|
|
||||||
SERVICE_NAME="disable-nic-offload-$SELECTED_INTERFACE.service"
|
|
||||||
SERVICE_PATH="/etc/systemd/system/$SERVICE_NAME"
|
|
||||||
|
|
||||||
# Create the service file with e1000e specific optimizations
|
|
||||||
msg_info "Creating systemd service for interface: ${BL}$SELECTED_INTERFACE${YW}"
|
|
||||||
|
|
||||||
# Start with the common part of the service file
|
|
||||||
cat > "$SERVICE_PATH" << EOF
|
|
||||||
[Unit]
|
|
||||||
Description=Disable NIC offloading for Intel e1000e interface $SELECTED_INTERFACE
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
# Disable all offloading features for Intel e1000e
|
|
||||||
ExecStart=/sbin/ethtool -K $SELECTED_INTERFACE gso off gro off tso off tx off rx off rxvlan off txvlan off sg off
|
|
||||||
RemainAfterExit=true
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Check if service file was created successfully
|
|
||||||
if [ ! -f "$SERVICE_PATH" ]; then
|
|
||||||
whiptail --title "Error" --msgbox "Failed to create service file for $SELECTED_INTERFACE!" 10 50
|
|
||||||
msg_error "Failed to create service file for $SELECTED_INTERFACE! Skipping to next interface."
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Configure this service
|
|
||||||
{
|
|
||||||
echo "25"; sleep 0.2
|
|
||||||
# Reload systemd to recognize the new service
|
|
||||||
systemctl daemon-reload
|
|
||||||
echo "50"; sleep 0.2
|
|
||||||
# Start the service
|
|
||||||
systemctl start "$SERVICE_NAME"
|
|
||||||
echo "75"; sleep 0.2
|
|
||||||
# Enable the service to start on boot
|
|
||||||
systemctl enable "$SERVICE_NAME"
|
|
||||||
echo "100"; sleep 0.2
|
|
||||||
} | whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --gauge "Configuring service for $SELECTED_INTERFACE..." 10 80 0
|
|
||||||
|
|
||||||
# Individual service status
|
|
||||||
if systemctl is-active --quiet "$SERVICE_NAME"; then
|
|
||||||
SERVICE_STATUS="Active"
|
|
||||||
else
|
|
||||||
SERVICE_STATUS="Inactive"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if systemctl is-enabled --quiet "$SERVICE_NAME"; then
|
|
||||||
BOOT_STATUS="Enabled"
|
|
||||||
else
|
|
||||||
BOOT_STATUS="Disabled"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Show individual service results
|
|
||||||
msg_ok "Service for ${BL}$SELECTED_INTERFACE${GN} created and enabled!"
|
|
||||||
msg_info "${TAB}Service: ${BL}$SERVICE_NAME${YW}"
|
|
||||||
msg_info "${TAB}Status: ${BL}$SERVICE_STATUS${YW}"
|
|
||||||
msg_info "${TAB}Start on boot: ${BL}$BOOT_STATUS${YW}"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Prepare summary of all interfaces
|
|
||||||
SUMMARY_MSG="Services created successfully!\n\n"
|
|
||||||
SUMMARY_MSG+="Configured Interfaces:\n"
|
|
||||||
|
|
||||||
for iface in "${INTERFACE_ARRAY[@]}"; do
|
|
||||||
SERVICE_NAME="disable-nic-offload-$iface.service"
|
|
||||||
if systemctl is-active --quiet "$SERVICE_NAME"; then
|
|
||||||
SVC_STATUS="Active"
|
|
||||||
else
|
|
||||||
SVC_STATUS="Inactive"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if systemctl is-enabled --quiet "$SERVICE_NAME"; then
|
|
||||||
BOOT_SVC_STATUS="Enabled"
|
|
||||||
else
|
|
||||||
BOOT_SVC_STATUS="Disabled"
|
|
||||||
fi
|
|
||||||
|
|
||||||
SUMMARY_MSG+="- $iface: $SVC_STATUS, Boot: $BOOT_SVC_STATUS\n"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Show summary results
|
|
||||||
whiptail --backtitle "Intel e1000e NIC Offloading Disabler" --title "Success" --msgbox "$SUMMARY_MSG" 20 80
|
|
||||||
|
|
||||||
msg_ok "Intel e1000e optimization complete for ${#INTERFACE_ARRAY[@]} interface(s)!"
|
|
||||||
|
|
||||||
exit 0
|
|
Loading…
x
Reference in New Issue
Block a user