Come pulire un disco rigido del Mac da remoto con uno script bash

In qualità di professionista IT o di fornitore di servizi gestiti (MSP), il compito di gestire gli account utente su una rete di computer Mac può essere piuttosto impegnativo. Immagina di dover riutilizzare un dispositivo, risolvere problemi estesi o garantire che i dati sensibili siano completamente rimossi: si tratta di compiti scoraggianti che potrebbero richiedere una quantità significativa di tempo e risorse. È qui che entra in gioco lo script bash “Pulire un disco rigido del Mac da remoto”. Oggi approfondiremo come il potente script bash possa migliorare le tue operazioni IT. 

Presentazione dello script bash ‘Pulire un disco rigido del Mac da remoto’

Tale script bash non è solo uno strumento, ma è anche un’ottima soluzione progettata per affrontare alcune delle situazioni più difficili nella gestione dell’IT. La sua funzione principale? Pulire un disco rigido del Mac da remoto. Ma offre molto di più: fornisce un controllo granulare, consentendo ai professionisti IT di preservare alcuni account utente e di eliminarne altri. 

#!/usr/bin/env bash
# Description: Remove all users and their data.
#
# Release Notes: Initial Release
# (c) 2023 NinjaOne
#   By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
#   Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
#   Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
#   Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
#   Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
#   Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
#   Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
#   EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#
# Usage: <url> <download file path> [expected md5 sum]
# <> are required
# [] are optional
# Example: https://www.nirsoft.net/utils/advancedrun.zip /tmp/advancedrun.zip
#  Downloads advancedrun.zip
# Example: https://www.nirsoft.net/utils/advancedrun.zip /tmp/advancedrun.zip 1f0913135878bb6cd30c1f3f6cf4b882
#  Downloads advancedrun.zip, verify's the provided md5 summed hash
#
# Notes: If the path doesn't exist this script will create the folders needed to place it there.
#  If you used /tmp/MyFiles/advancedrun.zip and the MyFiles folder didn't exist then it would create it.
#  The same for /tmp/MyFiles/Tools/advancedrun.zip, it would create MyFiles and Tools.
#
# To exclude users from being removed, specify each user as a parameter.
# Usage:
# [user1] [user2] ... [userN]
# Example:
# Admin HelpDesk Bob

# store arguments in a special array
args=("$@")
# get number of elements
USER_COUNT=${#args[@]}

# Print out list of user and count the number of users
EXCLUDED_USERS=("${args[*]}")
echo "User that will be excluded: ${EXCLUDED_USERS[*]}"

# List all users that should be under /Users/
USERS=("$(dscacheutil -q user | grep -A 3 -B 2 -e uid: 5'[0-9][0-9]' | grep -E "^name: " | awk '{print $2}')")
# Don't filter out user if we don't have a list to exclude
if ((0 == USER_COUNT)); then
    USER_LIST=("${USERS[@]}")
    # We have decided to not exclude any users
    # Remove the .AppleSetupDone file so that on reboot we prompt to create a new first user
    rm -rf "/var/db/.AppleSetupDone"
else
    # Filter out users that we want to exclude
    USER_LIST=()
    while IFS='' read -r line; do USER_LIST+=("$line"); done < <(echo "${USERS[@]}" "${EXCLUDED_USERS[@]}" | tr ' ' 'n' | sort | uniq -u)
fi

# Remove users from system, along with their data.
for USER in "${USER_LIST[@]}"; do
    echo "Removing user: ${USER}"
    echo "Running: dscl . -delete "/Users/${USER}""
    dscl . -delete "/Users/${USER}"
    status=$?
    # Output result
    # If status is 0 and USER is not an empty string and /Users/${USER} is a folder
    if [ $status -eq 0 ]; then
        echo "Removed ${USER} from login"
        if [ -n "${USER}" ] && [ -d "/Users/${USER}" ]; then
            # Double quote prevent spaces from breaking things,
            #  even though user names should never have spaces in them
            # ${} around a variable prevent globbing: https://tldp.org/LDP/abs/html/globbingref.html
            rm -rf "/Users/${USER}"
            rmStatus=$?
            [ $rmStatus -eq 0 ] && echo "Removed /Users/${USER}" || echo "Failed to remove /Users/${USER}"
        else
            echo "Folder /Users/${USER} is not a folder or doesn't exist"
        fi
    else
        echo "Failed to remove ${USER} from login"
    fi
done
# Wait 1 minute so we can report back
echo "Rebooting in 1 minute."
echo "If this computer doesn't reboot, manual rebooting might be needed."
shutdown -r +2
osascript -e 'tell app "System Events" to restart'

Approfondimento: Come funziona lo script “Pulire un disco rigido del Mac da remoto”

Lo script per pulire un disco rigido del Mac opera identificando ed eliminando gli account utente su un Mac, rimuovendo di fatto tutti i dati associati. A tale scopo, utilizza il comando `dscl`, un’utilità a riga di comando per servizi di directory nativa di macOS. Questo comando consente di creare, leggere e gestire i dati di Directory Service. 

Ecco la parte più interessante: è possibile specificare gli account utente che lo script deve escludere dall’operazione di pulizia. Ciò significa che è possibile mantenere intatti gli account di amministrazione o di helpdesk, rimuovendo al contempo tutti gli altri: una funzione fondamentale quando è necessario pulire un disco rigido del Mac da remoto, pur mantenendo il controllo del sistema. 

Inoltre, lo script si occupa del file `.AppleSetupDone`. Quando tale file viene rimosso, il Mac attiva il processo di configurazione per creare un nuovo utente all’avvio successivo. Si tratta di un passo essenziale per riprendere il controllo del sistema dopo la pulizia. 

Infine, lo script emette un comando di riavvio, facendo ripartire il sistema e sigillando tutte le modifiche apportate. 

Possibili utilizzi

Lo script per pulire un disco rigido del Mac ha una moltitudine di utilizzi che lo rendono uno strumento essenziale nell’arsenale di un professionista IT o di un MSP. Ecco alcuni scenari in cui questo script eccella: 

  1. Riutilizzo dei dispositivi: Ripristino rapido di una macchina allo stato di configurazione iniziale, perfetto per l’assegnazione di un dispositivo a un nuovo utente.
  2. Risoluzione dei problemi: In situazioni in cui problemi estesi hanno reso instabile il profilo di un utente, la soluzione più rapida potrebbe essere una pulizia completa.
  3. Sicurezza dei dati: Quando l’incarico di un utente termina o un dispositivo viene ritirato, lo script può garantire che i dati sensibili non finiscano nelle mani sbagliate, rimuovendo completamente i dati dell’utente.

Implicazioni per la sicurezza: Salvaguardia dei dati

Per quanto lo script per pulire un disco rigido del Mac sia potente, è fondamentale considerare le implicazioni per la sicurezza. Lo script è progettato per eliminare i dati, quindi una volta eseguito, tali dati sono spariti per sempre. Pertanto, è imperativo avere sempre un backup di tutti i dati necessari prima di eseguire lo script. Ricorda sempre la regola d’oro dell’IT: i dati non sottoposti a backup sono considerati persi. 

Inoltre, questo strumento deve essere utilizzato solo in modo responsabile e nell’ambito delle proprie autorizzazioni. L’uso non autorizzato di tali strumenti può comportare gravi ripercussioni legali. 

Considerazioni finali

Nel mondo frenetico dell’IT, strumenti come questo script non sono solo convenienti, ma sono una necessità. Tale script bash consente di pulire un disco rigido del Mac da remoto, risparmiando tempo e garantendo un’efficace sicurezza dei dati. Nel grande schema della gestione IT, sono risorse come queste che possono fare la differenza.  

Ricorda che da un grande potere derivano grandi responsabilità. Assicurati sempre di disporre delle autorizzazioni e dei backup necessari prima di eseguire qualsiasi operazione che possa causare la perdita di dati. Lo script “Pulire un disco rigido del Mac da remoto” è uno strumento potente, ma deve sempre essere usato con attenzione. 

Nella gestione degli account utente Mac da remoto, NinjaOne può essere uno strumento prezioso. Come piattaforma di monitoraggio e gestione remota basata su cloud NinjaOne supporta perfettamente script come “Pulire un disco rigido del Mac da remoto”. Non solo consente un’esecuzione efficiente dello script su molti dispositivi, ma fornisce anche solide funzioni di monitoraggio e reportistica. Ciò significa che i professionisti IT e gli MSP possono eseguire lo script, monitorarne l’andamento e documentarne i risultati all’interno di un’unica piattaforma. Per questo motivo, NinjaOne è in grado di migliorare notevolmente la facilità e l’efficacia dell’utilizzo di script come questo in ambienti IT su larga scala.

Se ti stai chiedendo: “E per quanto riguarda la pulizia di un disco rigido di Windows?”, noi abbiamo già pensato a ciò. Consulta il nostro post “Come cancellare dati da un disco rigido con Powershell“.

Prova questo script su NinjaOne.

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento per la fornitura di servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Per saperne di più su NinjaOne Endpoint Management, fai un tour dal vivo, o inizia la tua prova gratuita della piattaforma NinjaOne.

Categorie:

Ti potrebbe interessare anche

Guarda una demo×
×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.