Aller au contenu

Probl


maitryoda

Messages recommandés

Bonjour,

Je souhaite forcer l'allumage de mon PC qui sert de serveur de sauvegarde au syno à l'ide du script ci-dessous. Ce script fonctionne en ssh, mais une exécution via le planificateur de tâche ne rallume pas le PC.

Y aurait-il une âme charitable pour m'aider à résoudre mon problème?

le script:

#!/usr/local/python/bin/python

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto('xff'*6 + 'x00x00x00x00x00x00'*16, ('192.168.x.x', 9))
Lien vers le commentaire
Partager sur d’autres sites

A priori oui.

J'espérais une simple réponse "oui" ou "non" mais bon ...

De pplus le script fonctionne en ssh

je suppose que tu veux dire en ligne de commande?

Comment le lances-tu ce script?

Si c'est en tapant "python <nom du script>", il n'est pas étonnant qu'il ne marche pas en batch (cron ou planificateur de tache, c'est kif kif) car la commande "python" n'est pas dans le PATH par défaut.

Assure-toi que le script est exécutable (chmod +x) et, comme ligne de commande du planificateur de tache, met uniquement son chemin complet (sans la préfixer de "python")

Lien vers le commentaire
Partager sur d’autres sites

Je viens de refaire un essai, connecté en ssh, en lançant le script par un

cd /volume1/Sripts
./Wol2PC.py 

Le fonctionnement est ok, le pc s'est allumé.

Dans le planificateur de tâches, j'ai saisi:

utilisateur: root

Script défini par l'utilisateur: /volume1/Scripts/Wol2PC.py

Modifié par maitryoda
Lien vers le commentaire
Partager sur d’autres sites

Je ne vois pas ce qui ne va pas, le chemin de python est correct, le chemain d'accès au script également. Je sêche...

Si quelqu'un a une idée, je suis preneur

dans le planificateur, le champ de formulaire "script défini par l'utilisateur" est multiligne.

Suffit donc de remplacer

/volume1/Scripts/Wol2PC.py

par (une commande par ligne):

exec >/tmp/wol.log 2>&1
/volume1/Scripts/Wol2PC.py

ce qui permettra de voir dans "/tmp/wol.log" ce qui coince

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

Le fichier de log est bien créé suite à vérification par un dir /tmp en ssh, mais ce dernier est vide

Nous voila peu avancés alors

Dernier essai et apres je sèche (faudra attendre qu'un spécialiste python passe par ici)

En ligne de commande, en lançant le script de cette façon:

env - /volume1/Scripts/Wol2PC.py

est-ce que ça fonctionne aussi?

Lien vers le commentaire
Partager sur d’autres sites

Il a marché.

Connecté en ssh, je faisais cd /volume1/Scripts puis ./Wol2PC.py et le PC démarrait

Mais je viens de me rendre compte que le Wol ne fonctionnait plus du tout sur mon PC donc ... Je refais fonctionner le Wol du PC et je me refais tous les essais

Ok, a suivre donc

Lien vers le commentaire
Partager sur d’autres sites

Eureka j ai trouvé en fait l'origine du problème:

la config du pc

En fait il n'acceptait plus que les réveils par broadcast.

Du coup le script ne pouvait plus fonctionner.

J'ai trouvé un scripts sympa sur le net qui a parfaitement fonctionné en ssh et par le planificateur de tâches. Je le posterai demain au cas où quelqu'un est intéressé.

Du coup je ne sais pas pourquoi le script d'origine a fonctionné plusieurs fois... peu être une mise à jour de mon pc...

Modifié par maitryoda
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Voici le script fonctionnel si cela peut intéresser quelqu'un:

#!/usr/local/python/bin/python
# wol.py

import socket
import struct

def wake_on_lan(macaddress):
    """ Switches on remote computers using WOL. """

    # Check macaddress format and try to compensate.
    if len(macaddress) == 12:
        pass
    elif len(macaddress) == 12 + 5:
        sep = macaddress[2]
        macaddress = macaddress.replace(sep, '')
    else:
        raise ValueError('Incorrect MAC address format')
 
    # Pad the synchronization stream.
    data = ''.join(['FFFFFFFFFFFF', macaddress * 20])
    send_data = '' 

    # Split up the hex values and pack.
    for i in range(0, len(data), 2):
        send_data = ''.join([send_data,
                             struct.pack('B', int(data[i: i + 2], 16))])

    # Broadcast it to the LAN.
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    sock.sendto(send_data, ('192.168.0.255', 7))
    

if __name__ == '__main__':
    # Use macaddresses with any seperators.
    wake_on_lan('0F:0F:DF:0F:BF:EF')
    wake_on_lan('0F-0F-DF-0F-BF-EF')
    # or without any seperators.
    wake_on_lan('0F0FDF0FBFEF')

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

Bonjour à tous

Me retrouvant coincé avec le paquet de TontonGlen et la version revue et corrigée (qui fonctionnait sous DSM 4.2) j'aimerais bien tenter cette solution.

En revanche je suis une bille en ligne de commande Linux, mais si on m'explique clairement et avec des étapes, je vais pouvoir m'en sortir avec votre aide.

Une âme charitable pourrait-elle m'indiquer pas à pas comment mettre ce script en place et comment le lancer (si possible depuis DSM) ?

Lien vers le commentaire
Partager sur d’autres sites

  • 11 mois après...

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.