1 votes

Bash script pour mettre à jour automatiquement (et redémarrer) toutes les mises à jour de Mavericks et Yosemite ?

Je cherche un script que je puisse exécuter sur un ordinateur Mavericks ou Yosemite nouvellement installé, qui installera toutes les mises à jour, en redémarrant si nécessaire et en recommençant automatiquement.

Par exemple, j'aimerais :

sudo curl https://gist.githubusercontent.com/ChristopherA/0ddc4c27f8ec7d5a0aed/raw/2e694c616c728593c2af155d18aeeff68b25a222/gistfile1.txt | sh

Cela va ensuite dans mon gist, envoie le contenu à mon shell, puis est le script suivant (qui existe actuellement dans mes gists) :

#!/bin/bash

# Installs all system updates, reboot and does it again if necessary.

# Execute on a new mac via:

# sudo curl https://gist.githubusercontent.com/ChristopherA/0ddc4c27f8ec7d5a0aed/raw/2e694c616c728593c2af155d18aeeff68b25a222/gistfile1.txt | sh

# Initially, based on https://jamfnation.jamfsoftware.com/discussion.html?id=7827 which works on 10.8 and untested on 10.9 or 10.10

SWUL=`/usr/sbin/softwareupdate -l | /usr/bin/awk '{printf "%s", $0}'`
SWULER=`/usr/sbin/softwareupdate -l 2>&1 | /usr/bin/head -1`
NoRestartUpdates=`/usr/sbin/softwareupdate -l | /usr/bin/grep -v restart | /usr/bin/grep -B1 recommended | /usr/bin/grep -v recommended | /usr/bin/awk '{print $2}' | /usr/bin/awk '{printf "%s ", $0}'`
osvers=`sw_vers -productVersion | awk -F. '{print $2}'`

if [[ $osvers -lt 8 ]]; then
/bin/echo "Script only for 10.8+ ONLY"
exit 1
elif [ "$SWULER" == "No new software available." ]; then
/bin/echo "$SWULER"
exit 1
elif [[ "$SWUL" == *"[restart]"* ]]; then
echo "Installing Updates that require Restart"
/usr/bin/sudo /usr/sbin/softwareupdate -d -a
/usr/libexec/PListBuddy -c "Copy CompletedProducts InstallAtLogout" /Library/Updates/index.plist
/usr/bin/touch /var/db/.SoftwareUpdateAtLogout
/bin/chmod og-r /var/db/.SoftwareUpdateAtLogout
/usr/libexec/PListBuddy -c "Add -RootInstallMode STRING YES" /var/db/.SoftwareUpdateOptions
/usr/libexec/PListBuddy -c "Add -SkipConfirm STRING YES" /var/db/.SoftwareUpdateOptions
/bin/chmod og-r /var/db/.SoftwareUpdateOptions
elif [[ "$SWUL" == *"[recommended]"* ]]; then
/bin/echo "Installing Updates that does not require Restart"
/usr/bin/sudo /usr/sbin/softwareupdate -i $NoRestartUpdates
fi

exit 0

```

Malheureusement ce script de https://jamfnation.jamfsoftware.com/discussion.html?id=7827 ne fonctionne pas sur 10.9 ou 10.10.

Les résultats :

Installing Updates that require Restart
Software Update Tool
Copyright 2002-2012 Apple Inc.

Finding available software

Downloaded iTunes
Downloaded iTunes
Downloaded OS X Yosemite Developer Preview 8
Downloading Yosemite Recovery Update
Downloaded Yosemite Recovery Update
Done.
Copy: Entry, "CompletedProducts", Does Not Exist
touch: /var/db/.SoftwareUpdateAtLogout: Permission denied
chmod: /var/db/.SoftwareUpdateAtLogout: No such file or directory
File Doesn't Exist, Will Create: /var/db/.SoftwareUpdateOptions
File Doesn't Exist, Will Create: /var/db/.SoftwareUpdateOptions
chmod: /var/db/.SoftwareUpdateOptions: No such file or directory
$

Il y a quelques indices dans les commentaires de ce billet, et aussi à l'adresse suivante http://hints.macworld.com/article.php?story=20080916220249270

Cependant, je ne suis pas en mesure de trouver quelque chose qui puisse être juste un bash script.

  • Christopher Allen

1voto

kevin Points 248

Pourquoi ne pas simplement

sudo softwareupdate -i -a
sudo reboot

Au fait, à propos du script que vous avez posté, essayez d'ajouter sudo devant les commandes ci-dessous :

/usr/bin/touch /var/db/.SoftwareUpdateAtLogout
/bin/chmod og-r /var/db/.SoftwareUpdateAtLogout
/usr/libexec/PListBuddy -c "Add -RootInstallMode STRING YES" /var/db/.SoftwareUpdateOptions
/usr/libexec/PListBuddy -c "Add -SkipConfirm STRING YES" /var/db/.SoftwareUpdateOptions
/bin/chmod og-r /var/db/.SoftwareUpdateOptions

0 votes

Le problème avec un simple sudo softwareupdate -ia est que plusieurs redémarrages et installations peuvent être nécessaires. J'aimerais arriver au point où il rapporte No updates are available. et ensuite cloner mon dépôt .dotfiles puis exécuter un script pour installer plus d'outils, d'applications, et mes préférences de configuration.

0 votes

Je vais essayer de mettre sudo avant d'autres commandes pour voir si cela fonctionne.

0 votes

L'ajout de sudo aux commandes n'a pas aidé du tout. Recherche des logiciels disponibles Copie : L'entrée, "CompletedProducts", n'existe pas touch : /var/db/.SoftwareUpdateAtLogout : Permission refusée chmod : /var/db/.SoftwareUpdateAtLogout : No such file or directory Le fichier n'existe pas, sera créé : /var/db/.SoftwareUpdateOptions Le fichier n'existe pas, il sera créé : /var/db/.SoftwareUpdateOptions chmod : /var/db/.SoftwareUpdateOptions : Aucun fichier ou répertoire de ce type

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X