116 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/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
 | |
| 
 | |
| set -eEuo pipefail
 | |
| BL=$(echo "\033[36m")
 | |
| RD=$(echo "\033[01;31m")
 | |
| GN=$(echo "\033[1;92m")
 | |
| CL=$(echo "\033[m")
 | |
| 
 | |
| function header_info {
 | |
|     clear
 | |
|     cat <<"EOF"
 | |
|     ____                                      _    ____________     __           ____                                      _    ________
 | |
|    / __ \_________  _  ______ ___  ____  _  _| |  / / ____/ __ \   / /_____     / __ \_________  _  ______ ___  ____  _  _| |  / / ____/
 | |
|   / /_/ / ___/ __ \| |/_/ __ `__ \/ __ \| |/_/ | / / __/ / / / /  / __/ __ \   / /_/ / ___/ __ \| |/_/ __ `__ \/ __ \| |/_/ | / / __/
 | |
|  / ____/ /  / /_/ />  </ / / / / / /_/ />  < | |/ / /___/ /_/ /  / /_/ /_/ /  / ____/ /  / /_/ />  </ / / / / / /_/ />  < | |/ / /___
 | |
| /_/   /_/   \____/_/|_/_/ /_/ /_/\____/_/|_| |___/_____/_____/   \__/\____/  /_/   /_/   \____/_/|_/_/ /_/ /_/\____/_/|_| |___/_____/
 | |
| EOF
 | |
| }
 | |
| 
 | |
| function update_container() {
 | |
|     container=$1
 | |
|     os=$(pct config "$container" | awk '/^ostype/ {print $2}')
 | |
| 
 | |
|     if [[ "$os" == "ubuntu" || "$os" == "debian" ]]; then
 | |
|         echo -e "${BL}[Info]${GN} Checking /usr/bin/update in ${BL}$container${CL} (OS: ${GN}$os${CL})"
 | |
| 
 | |
|         if pct exec "$container" -- [ -e /usr/bin/update ]; then
 | |
|             pct exec "$container" -- bash -c "sed -i 's/ProxmoxVED/ProxmoxVE/g' /usr/bin/update"
 | |
| 
 | |
|             if pct exec "$container" -- grep -q "ProxmoxVE" /usr/bin/update; then
 | |
|                 echo -e "${GN}[Success]${CL} /usr/bin/update updated in ${BL}$container${CL}.\n"
 | |
|             else
 | |
|                 echo -e "${RD}[Error]${CL} /usr/bin/update in ${BL}$container${CL} could not be updated properly.\n"
 | |
|             fi
 | |
|         else
 | |
|             echo -e "${RD}[Error]${CL} /usr/bin/update not found in container ${BL}$container${CL}.\n"
 | |
|         fi
 | |
|     fi
 | |
| }
 | |
| 
 | |
| function update_motd() {
 | |
|     container=$1
 | |
|     os=$(pct config "$container" | awk '/^ostype/ {print $2}')
 | |
|     motd_file="/etc/profile.d/00_lxc-details.sh"
 | |
| 
 | |
|     echo -e "${BL}[Info]${GN} Updating MOTD in ${BL}$container${CL} (OS: ${GN}$os${CL})"
 | |
| 
 | |
|     if [ "$os" = "alpine" ]; then
 | |
|         shell="ash"
 | |
|     else
 | |
|         shell="bash"
 | |
|     fi
 | |
| 
 | |
|     pct exec "$container" -- $shell -c "
 | |
|         if [ \"$os\" = \"alpine\" ]; then
 | |
|             IP=\$(ip -4 addr show eth0 | awk '/inet / {print \$2}' | cut -d/ -f1 | head -n 1)
 | |
|         else
 | |
|             IP=\$(hostname -I | awk '{print \$1}')
 | |
|         fi
 | |
| 
 | |
|         cat << EOF > $motd_file
 | |
| #!/bin/sh
 | |
| echo \"\"
 | |
| echo \"🌐 Provided by: community-scripts ORG | GitHub: https://github.com/community-scripts/ProxmoxVE\"
 | |
| echo \"🖥️ OS: \$(grep ^NAME /etc/os-release | cut -d= -f2 | tr -d '\"') - Version: \$(grep ^VERSION_ID /etc/os-release | cut -d= -f2 | tr -d '\"')\"
 | |
| echo \"🏠 Hostname: \$(hostname)\"
 | |
| echo \"💡 IP Address: \$IP\"
 | |
| EOF
 | |
|         chmod +x $motd_file
 | |
|     "
 | |
| 
 | |
|     echo -e "${GN}[Success]${CL} MOTD updated for ${BL}$container${CL}.\n"
 | |
| }
 | |
| 
 | |
| function remove_dev_tag() {
 | |
|     container=$1
 | |
|     current_tags=$(pct config "$container" | awk '/^tags/ {print $2}')
 | |
| 
 | |
|     if [[ "$current_tags" == *"community-script-dev"* ]]; then
 | |
|         new_tags=$(echo "$current_tags" | sed 's/,*community-script-dev,*//g' | sed 's/^,//' | sed 's/,$//')
 | |
| 
 | |
|         if [[ -z "$new_tags" ]]; then
 | |
|             pct set "$container" -tags "community-script"
 | |
|         else
 | |
|             pct set "$container" -tags "$new_tags,community-script"
 | |
|         fi
 | |
| 
 | |
|         echo -e "${GN}[Success]${CL} 'community-script-dev' tag removed and 'community-script' added for ${BL}$container${CL}.\n"
 | |
|     fi
 | |
| }
 | |
| 
 | |
| header_info
 | |
| echo "Searching for containers with 'community-script-dev' tag..."
 | |
| 
 | |
| found=0
 | |
| for container in $(pct list | awk '{if(NR>1) print $1}'); do
 | |
|     tags=$(pct config "$container" | awk '/^tags/ {print $2}')
 | |
|     if [[ "$tags" == *"community-script-dev"* ]]; then
 | |
|         found=1
 | |
|         update_container "$container"
 | |
|         update_motd "$container"
 | |
|         remove_dev_tag "$container"
 | |
|     fi
 | |
| done
 | |
| if [[ $found -eq 0 ]]; then
 | |
|     echo -e "${RD}[Error]${CL} No containers found with the tag 'community-script-dev'. Exiting script."
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| header_info
 | |
| echo -e "${GN}The process is complete.${CL}\n"
 | 
