Aller au contenu

Wake On Wan / Lan Via Crontab


Chamaille

Messages recommandés

Bonjour à tous,

Je suis actuellement entrain d'essayer de mettre en place le scénario suivant :

-Réveiller d'un PC distant à travers internet depuis le syno avec un "magic packet"

-Lancer un backup ensuite.

Jusqu'ici j'ai réussi à installer ipkg, puis le paquet wakelan qui fait très bien sont boulot en ligne de commande. Je parviens donc à reveiller le PC distant avec cette commande :

wakelan -m FFFFFFFFFFFF -b mon-ip-distante.fr -p 9
-m pour l'adresse mac -b pour le broadcast -p port distant J'essaye maintenant d'automatiser tout cela en ajoutant une entrée dans la crontab mais sans succès. Dans la tabulation commande je ne sais pas quoi mettre? Quel est le chemin ou doit s’exécuter wakelan?
#minute hour    mday    month   wday    who      command

20        18      *        *       1,4   root   [color=#ff0000]wakelan -m FFFFFFFFFFFF -b mon-ip-distante.fr[/color] -p 9[/code]






C'est surement très anodin mais j'ai un autre soucis par ailleurs, surement du à mon ignorance du monde linux.



Apres avoir installé ipkg et wakelan en root via une session terminal j'arrivais sans problème à lancer des commandes pour ces paquets.

Désormais lorsque je lance par exemple en root 
[CODE]wakelan -?[/code]

il me dit "not found" alors que lorsque je suis connecté en admin il trouve bien mais seulement je n'ai plus assez de privilèges pour certaines actions.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour l'info, ça fonctionne en effet en ligne de commande avec le prefixe mais j'ai toujours mon soucis pour faire fonctionner le wakelan dans la crontab

Voici ce que j'ai mis:


#minute hour mday month wday who command

7 8 * * 1,4 root /usr/syno/bin/synopkg chkupgradepkg

0 0 * * 0 root /usr/sbin/ntpdate -b time.nist.gov

0 1 * * 0,6 root /var/packages/AntiVirus/target/bin/synoavscan --all

0 13 * * 3 root /usr/syno/bin/smartctl -d ata -t long /dev/sdb > /dev/null 2>&1

30 12 * * 3 root /usr/syno/bin/smartctl -d ata -t long /dev/sda > /dev/null 2>&1

1 15 * * * root /opt/bin/wakelan -m FFFFFFFFFFF -b adresse-ip.fr -p 9

Une idée?

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

Merci pour l'info, ça fonctionne en effet en ligne de commande avec le prefixe mais j'ai toujours mon soucis pour faire fonctionner le wakelan dans la crontabVoici ce que j'ai mis:

#minute hour mday month wday who command7 8 * * 1,4 root /usr/syno/bin/synopkg chkupgradepkg0 0 * * 0 root /usr/sbin/ntpdate -b time.nist.gov0 1 * * 0,6 root /var/packages/AntiVirus/target/bin/synoavscan --all0 13 * * 3 root /usr/syno/bin/smartctl -d ata -t long /dev/sdb > /dev/null 2>&130 12 * * 3 root /usr/syno/bin/smartctl -d ata -t long /dev/sda > /dev/null 2>&11 15 * * * root /opt/bin/wakelan -m 000000000000 -b adresse-ip.fr -p 9[/CODE]

Une idée?

Tout ca sur une seule ligne?

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

Il y a eu un petit problème de formatage du message en effet. J'ai édité le post ;)

Ajoute a la fin de la ligne wakelan ceci:

>> /tmp/wakelan.log 2>&1

ce qui va donc donner


1 15 * * * root /opt/bin/wakelan -m FFFFFFFFFFF -b adresse-ip.fr -p 9 >>/tmp/wakelan.log 2>&1

Et viens poster le contenu de /tmp/wakelan.log des que cela se sera exécuté N'oublie pas aussi qu'il est nécessaire de relancer le cron pour que les modifications soient prises en compte Cela doit se faire comme ceci:
env - /usr/syno/etc.defaults/rc.d/S04crond.sh

(copier/coller si possible)

**EDIT**

Et le "env -" n'est pas la pour faire joli !

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

N'oublie pas aussi qu'il est nécessaire de relancer le cron pour que les modifications soient prises en compte

Cela doit se faire comme ceci:

env - /usr/syno/etc.defaults/rc.d/S04crond.sh

(copier/coller si possible)

**EDIT**

Et le "env -" n'est pas la pour faire joli !

/usr/syno/etc/rc.d/S04crond.sh restart n'est pas suffisant ?

Lien vers le commentaire
Partager sur d’autres sites

/usr/syno/etc/rc.d/S04crond.sh restart n'est pas suffisant ?

Sans le "env -" les programmes lancés en crontab vont hériter de tout ton environnement actuel (ton PATH, les caractéristiques de ta connexion SSH, etc ...) au moment ou la commande "S04crond.sh restart" est passée

Ceci peut créer des problèmes bien velus (j'ai buté pendant une semaine sur un plantage de time backup du a ce genre de sketch)

Normalement S04crond.sh devrait se charger de la chose (lancer le cron avec un environnement "nettoyé") malheureusement il ne le fait pas (en fait ça à peut-être été corrigé depuis DSM 4.1, suis pas allé vérifier)

Lien vers le commentaire
Partager sur d’autres sites

J'ignorais qu'il fallait redémarrer la table cron. Après un restart ca marche impec. :)

Pour info

/usr/syno/etc/rc.d/S04crond.sh restart

ne fonctionne pas. J'ai du faire


/usr/syno/etc/rc.d/S04crond.sh stop

/usr/syno/etc/rc.d/S04crond.sh start

Merci beaucoup !

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

ne fonctionne pas. J'ai du faire


/usr/syno/etc/rc.d/S04crond.sh stop

/usr/syno/etc/rc.d/S04crond.sh start

Merci beaucoup !
En effet mon exemple était incomplet, Je te conseille pour ne pas risquer des bug tordus de le refaire comme ceci: (avec le "env -")
env - /usr/syno/etc.defaults/rc.d/S04crond.sh stop

env - /usr/syno/etc.defaults/rc.d/S04crond.sh start

Lien vers le commentaire
Partager sur d’autres sites

Si ça peut être utile j'utilise un petit script à ma sauce pour manipuler la crontab en toute sécurité

Il suffit de maintenir quelque part un fichier crontab contenant uniquement les entrées "perso"

Le nom de ce fichier est a substituer dans le script (ligne suivant le commentaire "ligne à modifier a sa convenance")

S'exécute en 3 modes:

  • "preview": visualise la crontab générée, lancé par la commande "cronupdate -p"
  • "diff": compare avec la conf actuelle sans l'appliquer, lancé par la commande "cronupdate -d"
  • "apply": applique les modif, lancé par la commande "cronupdate" (sans parametre)

Mon script est ici: http://pastebin.com/SmFHxehg

Lien vers le commentaire
Partager sur d’autres sites

Sans le "env -" les programmes lancés en crontab vont hériter de tout ton environnement actuel (ton PATH, les caractéristiques de ta connexion SSH, etc ...) au moment ou la commande "S04crond.sh restart" est passée

Ceci peut créer des problèmes bien velus (j'ai buté pendant une semaine sur un plantage de time backup du a ce genre de sketch)

Normalement S04crond.sh devrait se charger de la chose (lancer le cron avec un environnement "nettoyé") malheureusement il ne le fait pas (en fait ça à peut-être été corrigé depuis DSM 4.1, suis pas allé vérifier)

Merci pour l'explication CoolRaoul, je me coucherais moins con ce soir ! :)

J'arrête de squatter maintenant. ;)

Lien vers le commentaire
Partager sur d’autres sites

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.