J'essaie de faire en sorte que les Macs de mon lieu de travail se mettent tous à jour à un moment précis. Pour ce faire, j'exécute un script bash à partir d'un Macbook de rechange exécutant OS X Server. J'ai un problème mineur et un gros problème avec mon script actuel, et j'aurais besoin de votre aide.
Le script est très simple, et je n'ai pas besoin qu'il soit trop robuste pour mes besoins :
#!/bin/bash
for host in 192.blah.blah.blah 192.blah.blah.blah 192.blah.blah.blah
do
ssh -t $host sudo softwareupdate -ia
ssh -t $host sudo shutdown -r now
done
Le problème mineur : pour une raison quelconque, si j'essaie de placer ces deux commandes sur la même ligne en utilisant la commande ;
o &&
comme ça :
ssh -t $host sudo softwareupdate -ia;sudo shutdown -r now
ou
ssh -t $host sudo softwareupdate -ia && sudo shutdown -r now
il redémarre le serveur actuel à la place. Je ne sais pas où je me trompe dans la syntaxe.
La grande question : Malgré la mise en place de ssh avec une clé ssh publique (en utilisant les instructions que j'ai trouvé aquí ), on me demande toujours de saisir un mot de passe deux fois par machine lorsque le script s'exécute. Je suis certain que c'est dû à notre ami sudo
mais les commandes ne fonctionnent pas du tout sans elle. Idéalement, je vais mettre en place une tâche cron à un moment précoce de la matinée et lui faire exécuter ce script automatiquement, de sorte que lorsque je suis au travail, les Macs auront mis à jour et redémarré. Je suis sûr qu'il existe un moyen de le faire, mais mon Google-Fu me fait défaut.
EDIT/PARTIAL ANSWER Il s'avère que, même si vous mettez TextEdit en mode texte brut, il utilise toujours les "guillemets intelligents". En tapant et en sauvegardant le script dans le Terminal, puis en l'exécutant, ça a marché comme sur des roulettes.
0942v8653 a eu la gentillesse de m'aider en chat, et a également fourni une commande pour désactiver cette 'fonctionnalité' : defaults write NSGlobalDomain NSAutomaticQuoteSubstitutionEnabled -bool false
Je cherche toujours une solution au problème du mot de passe.