IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Exécution d'un script à la fermeture de Windows 7


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Par défaut Exécution d'un script à la fermeture de Windows 7
    Bonjour,

    Lors de la fermeture de Windows 7, j'exécute un script afin d'envoyer une commande de shutdown à un NAS.

    J'utilise la commande suivante : plink -ssh -pw passwd root@nas.local shutdown -p now

    Lorsque j'exécute cette commande en dehors du processus de fermeture, j'obtiens bien le résultat espéré : le NAS s'éteint.

    Lorsque la même commande est exécutée suite à l'opération de fermeture de Windows, Windows reste bloqué sur son écran de fermeture comme si la commande ne se terminait pas et bloquait Windows.

    Le problème est que l'écran de fermeture m'empêche de voir le résultat de la commande et je ne sais donc pas comment débugger le script.

    Quelqu'un a-t-il une idée de pourquoi cette commande s'exécute correctement en dehors de la fermeture et ne s'exécute pas correctement durant le processus de fermeture?

    Si non, existe-t-il un moyen de désactiver l'écran de fermeture pour voir apparaître les opérations effectuées pendant la fermeture?

    Ou alors, existe-t-il un moyen pour logger le résultat de la commande?

    Merci.

  2. #2
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Par défaut
    Voilà, j'ai progressé un peu, mais je n'arrive pas à résoudre le problème.

    J'ai redirigé la sortie du programme dans un fichier .log.
    Lorsque le script est effectué à la fermeture de Windows, plink sort le message suivant :

    The server's host key is not cached in the registry. You
    have no guarantee that the server is the computer you
    think it is.
    Normalement, pour ne plus avoir ce messaged'erreur, il faut exécuter une première fois la connexion ssh avec putty ou plink. Le logiciel demande alors si on accepte la clé et si oui, il l'enregistre dans le registre de Windows, ce qui lui permet de reconnaître le serveur lors des prochaines connexions.

    Cette étape a été faite et lorsque j'exécute le script en direct ou lorsque je tape la commande dans un command shell, cela fonctionne.
    par contre, le même script exécuté lors de la fermeture de Windows donne le message ci-dessus. Comme si le logiciel ne pouvait plus retrouver l'information dans le registre.

    Comment pourrais-je résoudre le problème?

    Merci.

  3. #3
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    TU as ce problème probablement parce qu'au moment ou tu exécute cette commande, la base de registre est déjà en partie déchargée, certaines clés ne sont déjà plus accessible.

    Je ne sais pas comment tu lance ton script, mais avec l'éditeur de stratégie de windows tu mettre des scripts au démarrage ou à l'arrêt de windows.

    Lancer GPEdit.msc, dérouler Stratégie Ordinateur local/Configuration ordinateur/Paramètres Windows/Scripts (démarrage/arrêt)

  4. #4
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Par défaut
    Oui, c'est ce que j'ai fait.
    J'ai placé le script dans C:\Windows\System32\GroupPolicy\Machine\Scripts\Shutdown et avec GPEdit.msc, j'ai demandé à charger le script (Configuration ordinateur - Paramètres Windows - Script (démarrage/arrêt) - Arrêt du système)

    Mais je pense que je commence à comprendre ce qui se passe.
    Le logiciel plink (basé sur PuTTY) stocke la "host key" nécessaire à la connexion dans la section HKEY_CURRENT_USER.
    Je ne suis pas du tout expert, mais j'en viens à penser que lorsque le script est lancé, la session utilisateur est déjà fermée -> se pourrait-il que le CURRENT_USER n'est plus définit à ce moment là et que le logiciel ne trouve plus la clé?
    Que vaut le CURRENT_USER lorsque la session est fermée?

    Si c'est le cas, existe-t-il une méthode pour corriger le problème?

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    Oui c'est probablement quelque chose comme ça.

    Il faudra que la clé soit stockée plutôt dans la branche LocalMachine.

    Ou alors que tu lance le script, non pas à la fermeture de Windows, mais à la fermeture de session. L'inconvénient, c'est si tu ferme ta session pour en ouvrir une autre sous u autre utilisateur mais sans relancer Windows, ton script sera lancé

  6. #6
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 47
    Par défaut
    Pour la session, je suis d'accord.
    Je ne peux pas lancer le script lors de la fermeture de la session, cela ne donnerais pas le résultat que je recherche.

    J'ai déjà essayé de replacer la clé dans la section HKEY_LOCAL_MACHINE avec la même arborescence que celle placée dans HKEY_CURRENT_USER, mais ca ne fonctionne pas.
    Je présume que le programme plink cherche la clé dans une section bien déterminée.

    Ce qu'il faudrait, c'est que le script soit exécuté avant la fermeture de la session. Mais est-ce réalisable, existe-t-il une option qui permette de faire cela?

    Je pense de plus en plus que je ne vais pas m'en sortir avec le programme plink.

Discussions similaires

  1. Exécuter commande à la fermeture de Windows
    Par rabobsky dans le forum Autres Logiciels
    Réponses: 12
    Dernier message: 19/02/2014, 11h06
  2. Exécution d'un script VB sur un serveur Windows
    Par mahmoud_arwa dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 29/01/2013, 21h51
  3. [EasyPHP] Exécuter script genre cron sous windows en local
    Par nathalie16 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 01/11/2010, 13h18
  4. Exécution d'un script JS sous windows
    Par harlock59 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/06/2009, 18h59
  5. [Configuration] Exécution d'un script chaque jour sur windows
    Par tiger360 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 20/02/2008, 18h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo