#!/bin/bash # Read the server list from the specified file SERVER_LIST_FILE="servers.conf" SERVER_LIST=() while IFS= read -r SERVER || [[ -n "$SERVER" ]]; do SERVER_LIST+=("$SERVER") done < "$SERVER_LIST_FILE" # Loop through the server list for SERVER in "${SERVER_LIST[@]}" do echo "Checking for updates on server: ${SERVER}" # Establish SSH connection to remote server and run commands to check for updates SSH_RESULT=$(ssh root@${SERVER} "sudo apt-get update > /dev/null && apt list --upgradable") # If updates are available, inform the user if [ -n "${SSH_RESULT}" ]; then echo "Updates available on server ${SERVER}:" echo "${SSH_RESULT}" echo "" else echo "No updates available on server ${SERVER}" echo "" fi done # Prompt user to confirm if they want to update the listed servers read -p "Do you want to update the listed servers? (Yes/No): " UPDATE_CONFIRMATION # If the user confirms with "Yes", update the servers and store the update status for each server in a list if [[ $UPDATE_CONFIRMATION == "Yes" ]]; then UPDATE_STATUS=() for SERVER in "${SERVER_LIST[@]}" do echo "Updating server: ${SERVER}" # Establish SSH connection to remote server and run commands to update ssh root@${SERVER} "sudo apt-get update > /dev/null && sudo apt-get upgrade -y" > /dev/null 2>&1 # Check the return value of ssh to determine if the update was successful if [[ $? -eq 0 ]]; then UPDATE_STATUS+=("${SERVER}: Update successful") echo "Server ${SERVER} updated." else UPDATE_STATUS+=("${SERVER}: Update failed") echo "Failed to update server ${SERVER}." fi done # Summary of update status echo "" echo "Summary of update status:" for STATUS in "${UPDATE_STATUS[@]}" do echo "${STATUS}" done else echo "Updates cancelled." fi