Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/09/2010, à 14:53

Alex0_^

Crontab /x minutes

Bonjour smile

Edit : il reste le problème du script que ne se lance pas tout seul en boucle.
La configuration de crontab pose problème, voir mon dernier post.



Je cherche un moyen de faire allumer mon serveur quand quelqu'un se connecte sur le réseau et à l'éteindre quand il n'y a plus personne.

J'ai fait des recherches et j'ai trouvé ça pour l'extinction (que j'ai modifié pour mes besoins) :

#!/bin/bash

export LANG="fr_FR.UTF-8"
PATH=/usr/sbin:/usr/bin:/sbin:/bin

# /etc/cron.daily/stopifnotuse
# sudo chmod +x /etc/cron.daily/stopifnotuse
# sudo crontab -e

#SHELL=/bin/sh
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# * /10 * * * * /etc/cron.daily/stopifnotuse

# Debit limite en dessous duquel le pc sera eteint, en ko/s
# si (stopserveur == 0) alors serveur reste en fonction
# si (stopserveur == 1) alors serveur s eteint
# les adresses ip testees sont 192.168.0.2 192.168.0.11

debit='10' ;
stopserveur='1' ;

for i in 2 22 
do
adresse="192.168.0.${i}"
ping -c 2 $adresse
if [ "$?" -eq 0 ] ;
    then stopserveur='0';
    fi
done

if [ "$stopserveur" -eq "1" ] ;
then echo "aucun pc connu sur le reseau" ;
# Debit actuel sur eth
packets1=$(/sbin/ifconfig eth | awk -F'[ :]' '/Octets transmis/ {print $18}') ;
sleep "2" ;
packets2=$(/sbin/ifconfig eth | awk -F'[ :]' '/Octets transmis/ {print $18}') ;
soustraction=$(( $packets2-$packets1 )) ;
if [ "$soustraction" -ne "0" ] ;
then speed=$(( $soustraction/2048 )) ;
# Avant d'eteindre le pc, on va verifier qu'il n'y a pas d'activite importante sur eth0
echo "Det actuel sur eth: ${speed} Ko/s" ;
else speed="0";
fi 

if [ "$speed" -le "$debit" ] ;
then echo "debit faible et aucun PC sur le reseau donc extinction server" ;
sudo /sbin/shutdown -h now ;
else echo "debit trop important le serveur reste en fonction" ;
fi
else echo "un ou plusieurs pc sont sur le reseau" ;
fi

Ensuite pour le démarrage je bloque un peu ...
Les autres pc sont sous windows donc c'est difficile de faire un script ...
Mon serveur supporte le WakeOnLan et ca fonctionne bien avec un logiciel sous windows.
J'ai trouvé un logiciel qui fonctionne en ligne de commande :
(une fois dans le dossier du prog, sous windows je fais : ) WakeOnLanBatch /w:NomDuPc
Et cela fonctionne.

Mais je n'arrive pas à l'executer à l'aide d'un script sous windows.
Script qui se lancerai tout seul au démarrage d'un des pc sous windows.

Merci de m'aider smile

Edit :

Pour le moment j'arrive à le faire en utilisant un petit code C++ que j'ai fait :

#include <iostream>
#include "main.h"
using namespace std;

int main()
{
    system("WakeOnLanBatch /w:Serveur");
    return 0;
}

Mais il doit y avoir mieux ..

Dernière modification par Alex0_^ (Le 19/09/2010, à 16:52)

Hors ligne

#2 Le 18/09/2010, à 23:00

wido

Re : Crontab /x minutes

Bonjour,
tu peux passer par cette commande pour éteindre un pc:

dbus-send --system --print-reply --dest="org.freedesktop.Hal" /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

ça t'évite d'utiliser le sudo.

Hors ligne

#3 Le 19/09/2010, à 16:49

Alex0_^

Re : Crontab /x minutes

Enfait le script fonctionne lorsque je le lance tout seul.

Mais je n'arrive pas à l'intégrer correctement à cron.

J'essaye de configurer crontab -e comme ça :

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h  dom mon dow   command
/5 * * * * /etc/cron.daily/stopifnotuse

Mais :

crontab: installing new crontab
"/tmp/crontab.dMwpnf/crontab":3: bad minute
errors in crontab file, can't install.

Dernière modification par Alex0_^ (Le 19/09/2010, à 16:53)

Hors ligne