Comment puis-je avoir un script de définir l'heure au démarrage sur Intel Mac OSX

0

La batterie de mon ordinateur est mauvaise, mais je ne veux pas vraiment dépenser de l'argent pour la remplacer car elle dure encore plusieurs heures. Mais quand il tombe à environ 10%, il arrive parfois que l'ordinateur s'éteigne complètement sans prévenir. Lorsque cela se produit, l'horloge interne est réinitialisée au 31 décembre 2000. Je ne pense pas que l'horloge soit maintenue par une pile de montre comme celle d'un PC, sinon je changerais simplement cela.

Quoi qu'il en soit, une fois le système d'exploitation chargé, je reçois un avertissement indiquant que la date est définie sur avant 2008 et que certaines applications peuvent ne pas fonctionner correctement, mon réseau Wi-Fi en étant un. Je dois ensuite effectuer quelques étapes pour changer l'heure, la sauvegarder, vous déconnecter et vous reconnecter. C'est juste une douleur mineure dans les fesses, mais j'aimerais avoir un script similaire au fichier autoexec.bat d'un PC faire le travail pour moi.

Pendant le démarrage, j'aimerais qu'un script vérifie l'heure. Si c'est avant 2008, définissez une date au-delà de 2008. Si la date est postérieure au 1er janvier 2008, mon WiFi fonctionnera et le système corrigera automatiquement l'heure dans quelques instants.

J'utilise OSX 10.6.8 sur un Mac à processeur Intel.

Merci d'avance pour votre aide, Pete

Peter Holtan
la source
1
Je vous laisse faire le script puisque vous ne nous avez pas dit ce que vous avez essayé, mais pour ce que vous devez exécuter au démarrage - crontab serait probablement le plus facile. Dans un type de terminal crontab -e et pour la commande, vous voudrez @reboot /path/to/my/script. Remarque: Étant donné que sur certains environnements * nix, le temps est un droit imposé - vous devrez peut-être le faire à partir d'un terminal racine.
nerdwaller
Je n'ai rien essayé. Contrairement aux PC sous Windows, je ne connais absolument rien des Mac et je ne trouvais pas grand chose à faire pour l'aider. Je ne sais pas quel fichier éditer ni quelle est la syntaxe du script, mais je pourrais probablement le comprendre. Cette commande crontab fera-t-elle exécuter mon fichier à chaque redémarrage ou juste au prochain redémarrage. Je veux faire cette vérification à chaque fois. Terminal radiculaire ??? Merci.
Peter Holtan

Réponses:

0

Calendrier

Pour exécuter une commande selon un calendrier, votre meilleur pari est probablement d'utiliser crontab

Cron est un planificateur de travaux basé sur le temps utilisé par les ordinateurs de type Unix.   systèmes. Le nom cron vient du mot "chronos", grec pour   "temps". Cron permet aux utilisateurs de planifier des tâches (commandes ou shell   scripts) à exécuter périodiquement à certaines heures ou à certaines dates.

Ainsi, vous pouvez configurer des scripts et / ou des programmes, etc. pour exécuter un programme avec cela. Pour vos utilisations, le plus applicable minuteur est @reboot qui fonctionnera à chaque redémarrage. La syntaxe réelle pour cela serait la suivante:

@reboot /path/to/my/script

Étant donné que sur certains systèmes unixy, le contrôle du contrôle de la date est la racine - vous devrez peut-être modifier crontab depuis un terminal root - faites-le (vous devez avoir les droits admin / sudo):

  1. Ouvrir un terminal
  2. type sudo -i ou su -
  3. Type crontab -e (cela ouvre crontab dans votre éditeur de texte environnemental
  4. Mettez ce qui précède sur sa propre ligne ( @reboot /path/to/my/script )
  5. Exit and Save (les commandes réelles dépendent de l'éditeur que vous utilisez)
  6. Assurez-vous que le script est marqué comme exécutable ( chmod +x /path/to/my/script )

Le script réel

Donc, comme je l’ai dit plus haut - j'aimerais vous voir faire le travail sur les pieds depuis que nous ne sommes pas un service de rédaction de scripts , mais je peux aussi bien vous donner un début.

Vous pouvez utiliser le date commande avec des paramètres pour obtenir l'heure système actuelle - vous pouvez le faire avec date '+%Y'

Donc, voici une comparaison basée sur l'année:

#!/usr/bin/env bash

sysYr=$(date '+%Y')
cutoff=2008

if [[ $sysYr -lt $cutoff ]]; then
    echo "It's before ${cutoff}!"
else
   echo "It's ${cutoff} or greater!"
fi

Ventilation de ce qui précède:

  1. Cela indique simplement au système où chercher le programme qui exécute le script, ce qui est plus portable que /usr/bin/bash comme l'habitude d'être commun. Je crois que ça marche aussi sur mac. Si non, tapez which bash et vous pouvez y pointer directement.
  2. le $( something ) est substitution de commande qui remplace la commande par le résultat de la commande. Dans ce cas, nous courons date '+%Y' qui s'étendra (actuellement) à l'entier 2013
  3. Définir une autre variable pour le cutoff, juste pour bon code Saké.
  4. Comparez et faites des commandes conditionnelles. En règle générale, il est préférable de citer les articles comparés pour se protéger contre les espaces et autres; cependant, ce sont des chiffres et il n'y a aucune raison pour qu'ils ne devraient pas être, aussi -lt est la comparaison bash pour un chiffre "inférieur à".
  5. Le reste est assez explicite - echo affiche le texte suivant.
nerdwaller
la source
1
Hey nerdwaller, merci beaucoup pour votre aide. Votre réponse était claire et concise, et surtout, ça marche !!! :) J'ai beaucoup appris sur les scripts Apple ces derniers jours, mais cela devient habituel.
Peter Holtan