Programmation multiple dans économies d'énergie

=> personnellement > je ne laisse jamais le SIP activé > parce que je suis tout le temps en train de manipuler expérimentalement des fichiers du Système > il me faut donc avoir quartier libre pour mes petites opérations.

OK, pour le mien, cela ne me dérangerait pas (bien que je laisse le SIP activé, pas l'utilité de le retirer). Par contre, et j'aurais dû tout dire dès le début, il s'agit là de l'ordinateur de madame. Je ne voudrais pas qu'elle puisse tout "péter" sur une fausse manip.
Quel genre de manip pourrait être dangeureuse, avec le SIP désactivé?
 
Bonjour drs

Tu démarres le mac sur la recovery (cmd+R)
tu ouvres le terminal et tu désactives le SIP en passant la commande csrutil disable
Tu redémarres normalement
Tu ouvres le terminal et tu passes la commande sudo chmod 4755 /usr/bin/pmset
Tu redémarres sur la recovery, dans le terminal tu réactives le SIP en passant la commande csrutil enable
Tu redémarres normalement.
Tu ne prends donc aucun risque puisque le SIP est de nouveau actif.

Pour le script:
Tu fais un copier coller dans l’éditeur de script
Tu l’enregistres au format script pour conservation et modification ultérieure.
Tu l’enregistres aussi au format application pour son utilisation.
Dans préférences système—> Utilisateurs et groupes—>ton compte utilisateur—> ouverture—>le petit + sous la fenêtre ouverture automatique à l’ouverture de la session —> tu choisis cette application

A chaque ouverture de ta session ce script va se lancer et reprogrammer l’ extinction et le démarrage suivant en fonction du jour. (tu peux vérifier cela en allant dans préférence système—>économie d’énergie—> Programmer.

Edit : Macomaniac est allé bien plus vite que moi ... :coucou:
 
Bonjour drs

Tu démarres le mac sur la recovery (cmd+R)
tu ouvres le terminal et tu désactives le SIP en passant la commande csrutil disable
Tu redémarres normalement
Tu ouvres le terminal et tu passes la commande sudo chmod 4755 /usr/bin/pmset
Tu redémarres sur la recovery, dans le terminal tu réactives le SIP en passant la commande csrutil enable
Tu redémarres normalement.
Tu ne prends donc aucun risque puisque le SIP est de nouveau actif.

OK, je n'avais pas vu que la désactivation du SIP servait uniquement pour rentrer la commande :)

Pour le script:
Tu fais un copier coller dans l’éditeur de script
Tu l’enregistres au format script pour conservation et modification ultérieure.
Tu l’enregistres aussi au format application pour son utilisation.
Dans préférences système—> Utilisateurs et groupes—>ton compte utilisateur—> ouverture—>le petit + sous la fenêtre ouverture automatique à l’ouverture de la session —> tu choisis cette application

A chaque ouverture de ta session ce script va se lancer et reprogrammer l’ extinction et le démarrage suivant en fonction du jour. (tu peux vérifier cela en allant dans préférence système—>économie d’énergie—> Programmer.

OK. Et quid de mon petit code de vérification? Je l'insère à quel endroit?

Edit : Macomaniac est allé bien plus vite que moi ...
mouais....à mon avis, ce n'est pas un humain. Pour être aussi rapide, c'est un bot :)
 
Pour ton script d'envoi de mail, je te conseille de ne pas l'insérer dans le mien.
Laisse le plutôt en autonome qui fasse le boulot comme il le fait actuellement.

Edit: si tu veux vraiment insérer ce script tu le rajoutes simplement à la fin aprés le dernier end if.
 
Dernière édition:
OK. Ce que je vais faire, c'est créer un nouveau script qui enverra la requête HTTP au démarrage. Si je le recois, c'est qu'il s'était éteind auparavant, et je pourrais donc voir l'heure d'allumage.
Allez, c'est parti pour la mise en place, je vous tiens au jus.

A tout à l'heure :)
 
Dans son script > zeltron t'a mis partout 8H et 11H comme heures d'allumage et d'extinction. N'oublie pas d'éditer ces valeurs en fonction des jours si tu veux qu'il y ait des variations.

Pour être aussi rapide, c'est un bot
C'est simplement qu'on est samedi et qu'il pleut > j'habite en lisière de Forêt de Fontainebleau > je ne peux donc pas être en train de grimper sur les blocs de grès...

il s'agit là de l'ordinateur de madame. Je ne voudrais pas qu'elle puisse tout "péter" sur une fausse manip.
Quel genre de manip pourrait être dangeureuse, avec le SIP désactivé?
Benner des fichiers ou dossiers du Système > propager récursivement des permissions farfelues aux même dossiers/fichiers du Système... Le SIP est le gardien de l'intégrité du Système démarrable.
 
Dernière édition par un modérateur:
Dans son script > zeltron t'a mis partout 8H et 11H comme heures d'allumage et d'extinction. N'oublie pas d'éditer ces valeurs en fonction des jours si tu veux qu'il y ait des variations.

oui, j'ai vu ça, je l'ai édité. Le mien donne donc ceci:
Bloc de code:
set ladate to (current date) as string -- recupère la date du jour
set lejour to word 1 of ladate -- recupère le jour

if lejour is "lundi" then
    tell application "Terminal"
        set lundi to "pmset repeat shutdown M 23:00:00 wakeorpoweron T 17:00:00"
        do script lundi
    end tell
end if
if lejour is "mardi" then
    tell application "Terminal"
        set mardi to "pmset repeat shutdown T 23:00:00 wakeorpoweron W 12:30:00"
        do script mardi
    end tell
end if
if lejour is "mercredi" then
    tell application "Terminal"
        set mercredi to "pmset repeat shutdown W 23:00:00 wakeorpoweron R 17:00:00"
        do script mercredi
    end tell
end if
if lejour is "jeudi" then
    tell application "Terminal"
        set jeudi to "pmset repeat shutdown R 23:00:00 wakeorpoweron F 17:00:00"
        do script jeudi
    end tell
end if
if lejour is "vendredi" then
    tell application "Terminal"
        set vendredi to "pmset repeat shutdown F 23:00:00 wakeorpoweron S 10:00:00"
        do script vendredi
    end tell
end if
if lejour is "samedi" then
    tell application "Terminal"
        set samedi to "pmset repeat shutdown S 23:00:00 wakeorpoweron U 10:00:00"
        do script samedi
    end tell
end if
if lejour is "dimanche" then
    tell application "Terminal"
        set dimanche to " sudo pmset repeat shutdown U 23:00:00 wakeorpoweron M 17:00:00"
        do script dimanche
    end tell
end if
 
Et voilà, c'est en place. Un peu galéré pour démarrer sur la partition recovery (il faut lacher le cmd-r à l'apparition de la pomme), mais c'est bon.
Donc, pour résumer:
1. Désactivation du SIP en recovery, avec csrutil disable
2. Reboot sur l'OS et entrée de la commande sudo chmod 4755 /usr/bin/pmset
3. Vérification avec ls -al /usr/bin/pmset, qui donne bien -rwsr-xr-x root wheel
4. Reboot en recovery pour réactivation du SIP (csrutil enable)
5. Reboot sur l'OS et vérif de l'état du SIP et du pmset (qui donne toujours -rwsr-xr-x root wheel)
6. Création des applications (script enregistré en app, et en script pour modifs ultérieures)
7. Dans le user, ajout des deux scripts en démarrage (un script pour la programmation, et un autre pour mon alerte au boot)
8. Dans les prefs systèmes, désactivation de la programmation de mac os
9. Reboot pour exécuter les scripts au démarrage

Au reboot, je reçois bien mon message comme quoi l'imac a rebooté. Ensuite, la commande sudo pmset -g sched donne le résultat suivant:
Bloc de code:
Repeating power events:
  wakepoweron at 10:00AM Sunday
  shutdown at 11:00PM Saturday

Ce qui semblerait vouloir dire que le script a bien été pris en compte.

Un ENORME merci à vous deux pour votre super boulot et le temps que vous y avez passé!
 
:coucou: drs

Tu as magnifiquement manœuvré.

Tu n'as plus besoin d'appeler pmset en mode sudo > dès lors qu'il y a le setuid_bit en place sur le fichier exécutable (at: /usr/bin/pmset) --> tu n'auras qu'à passer demain la commande informative brute :
Bloc de code:
pmset -g sched
afin de vérifier si les « power events » programmés ont bien été mis à jour conformément aux instructions du script (ce qui te permettra de vérifier du même coup que les commandes pmset passent automatiquement sans sudo).
 
Coucou :coucou:

Il faudra une semaine de surveillance, car je n'est pas tester pour chaque jour :D si le nom du jour récupéré est bien le même que celui de la commande (if lejour is "xxxxxx" then)

A Macomaniac je sais que les commandes terminal sont pratiques et utiles, mais là , pour le coup, juste aller voir dans les préférences système --> Economie d'énergie --> programmer devrais suffire ! :)
 
@macomaniac
OK, noté pour le plus besoin du sudo :)

@Zeltron
Et oui, je n'avais pas percuté sur le fait que le script allait modifié la configuration des préférences de programmation!
Et effectivement, je l'avais désactivé avant le reboot, et il s'est réactivé avec:
- démarrer ou activer: dimanche à 10h
- éteindre: samedi à 23h

Donc programmation bien prise en compte :)

PS: du coup, là, je fais comment pour choisir la meilleure réponse du post? Je peux pas vous départager!
 
Bonjour les gars :)

Je reviens ce matin, pour un comportement curieux. J'ai vérifié ce matin la programmation, et elle n'avait pas été prise en compte.
J'ai donc lancé le script à la main, et deux choses:
- une fenêtre de terminal était déjà ouverte, attendant l'entrée du mot de passe sudo
- lorsque je l'ai lancé à la main, il m'a ouvert le terminal, me demandant le mot de passe.

Il y a eu une coupure de courant cette nuit à 2h, mais théoriquement, aucune incidence puisque le mac s'était normalement éteint à 23h (chose que je n'ai pas pu vérifier). Quand au boot auto de ce matin, impossible de savoir, puisque madame l'a allumé avec le bouton avant l'heure programmée du boot.

Le fait qu'il demande le mot de passe est curieux, ça ne m'a pas fait ça hier. A noter que les scripts sont dans le répertoire Users>(nom-user)>Documents>Scripts

Une idée?
 
Bonjour,
Pour voir pourquoi il demande le mot de passe il faudrait vérifier si le SETUID_bit sur le binaire pmset est toujours bon voir #13
edit: Commande ls -al /usr/bin/pmset
le retour doit-être -rwsr-xr-x 1 root wheel
pas -rwxr-xr-x 1 root wheel
 
Ok trouvé ! !:D

En regardant ton script modifié en #27, tu as oublié d'enlever le sudo pour le jour dimanche.

Voilà tu sais ce qui te reste à faire. ;)
Tien nous au courant !:coucou:
 
Bien vu :)
Modif, test en live et test avec reboot, plus de mot de passe demandé :)
Dernier détail: l'application terminal reste ouverte (on la voit dans le dock). Ce n'est certes pas gênant, mais je sens venir les questions de madame: c'est quoi ce truc? pourquoi c'est ouvert?

Y'a moyen que le terminal se referme?
 
Pour quitter le terminal la commande est : quit

Ce quit est à ajouter 7 fois avant le end tell de chaque jour.
 
Finalement on peut appeler le terminal 1 seule fois avant les test du jour et le quitter en fin, ce qui revient au même soit :
set ladate to (current date) as string -- recupère la date du jour
set lejour to word 1 of ladate -- recupère le jour

tell application "Terminal"
if lejour is "lundi" then
set lundi to "pmset repeat shutdown M 23:00:00 wakeorpoweron T 17:00:00"
do script lundi
end if
if lejour is "mardi" then
set mardi to "pmset repeat shutdown T 23:00:00 wakeorpoweron W 12:30:00"
do script mardi
end if
if lejour is "mercredi" then
set mercredi to "pmset repeat shutdown W 23:00:00 wakeorpoweron R 17:00:00"
do script mercredi
end if
if lejour is "jeudi" then
set jeudi to "pmset repeat shutdown R 23:00:00 wakeorpoweron F 17:00:00"
do script jeudi
end if
if lejour is "vendredi" then
set vendredi to "pmset repeat shutdown F 23:00:00 wakeorpoweron S 10:00:00"
do script vendredi
end if
if lejour is "samedi" then
set samedi to "pmset repeat shutdown S 23:00:00 wakeorpoweron U 10:00:00"
do script samedi
end if
if lejour is "dimanche" then
set dimanche to "pmset repeat shutdown U 23:00:00 wakeorpoweron M 17:00:00"
do script dimanche
end if
quit
end tell
 
Je vois que ce fil a connu du travail de reprise, tandis que je vaquais hors ligne...
361608_original.png
 
Bizarrement, ça ne semble pas fonctionner...après quelques recherches et tests, j'ai compris pourquoi.
J'ai eu le même problème avec mon script de boot qui déclenche une requête web.
Ce qu'il se passe, c'est que ça va trop vite: le terminal s'ouvre et se ferme trop rapidement, et je pense que le script n'a pas le temps de s'exécuter. En rajoutant un delay, ça fonctionne.

Au final, le script modifié donne ceci:

Bloc de code:
set ladate to (current date) as string -- recupère la date du jour
set lejour to word 1 of ladate -- recupère le jour

tell application "Terminal"
    if lejour is "lundi" then
        set lundi to "pmset repeat shutdown M 23:00:00 wakeorpoweron T 17:00:00"
        do script lundi
    end if
    if lejour is "mardi" then
        set mardi to "pmset repeat shutdown T 23:00:00 wakeorpoweron W 12:30:00"
        do script mardi
    end if
    if lejour is "mercredi" then
        set mercredi to "pmset repeat shutdown W 23:00:00 wakeorpoweron R 17:00:00"
        do script mercredi
    end if
    if lejour is "jeudi" then
        set jeudi to "pmset repeat shutdown R 23:00:00 wakeorpoweron F 17:00:00"
        do script jeudi
    end if
    if lejour is "vendredi" then
        set vendredi to "pmset repeat shutdown F 23:00:00 wakeorpoweron S 10:00:00"
        do script vendredi
    end if
    if lejour is "samedi" then
        set samedi to "pmset repeat shutdown S 23:00:00 wakeorpoweron U 10:00:00"
        do script samedi
    end if
    if lejour is "dimanche" then
        set dimanche to "pmset repeat shutdown U 23:00:00 wakeorpoweron M 17:00:00"
        do script dimanche
    end if
    delay 10
    quit
end tell

Alors 10 c'est peut être trop, mais comme ça je suis sûr que ça fonctionne. J'ai testé plusieurs fois, et à chaque fois les paramètres sont modifiés. Comme en plus, le script dimanche est le dernier de la liste, je suis sûr que tout le script est passé :)

A nous tous, on y arrive (enfin vous plus que moi quand même) :)