Introduction
J'ai un script que je crée lorsque les enfants se connectent à leurs ordinateurs dans le cadre de mon domaine personnel. Le script vérifie l'heure actuelle et, si elle est en dehors de l'heure de début et de fin, il éteint l'ordinateur automatiquement.
Le script en C
Le script que j'ai jusqu'à présent est le suivant ;
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i;
char current_time[100];
char *start;
char *finish;
if(argc>=2)
{
for(i=0;i<argc;i++)
{
if(strcmp(argv[i],"-s") == 0)
{
start = argv[i+1];
}
else if (strcmp(argv[i],"-f") == 0)
{
finish = argv[i+1];
}
}
}
time_t curr_time_value = time( NULL );
strftime(current_time, 100, "%T", localtime(&curr_time_value));
if(current_time < start && current_time > finish)
{
system("shutdown /s /t 0");
}
else
{
printf("%s\n", current_time);
}
return 0;
}
Le problème
La partie du script qui me pose problème est la comparaison du temps ;
if(current_time < start && current_time > finish)
{
system("shutdown /s /t 0");
}
Je comprends que le script est une chaîne et, à ma connaissance, il n'est pas possible de comparer deux chaînes de cette manière, comme dans lower than ou greater than. Mais ce que je dois faire, c'est changer ces valeurs en int afin d'utiliser ce type de comparaison.
Je cherchais des conseils sur la façon de procéder pour faire fonctionner cette comparaison script. J'ajouterai une boucle while à l'avenir pour lancer plusieurs fois le script afin de m'assurer que l'ordinateur s'éteint.
Ce que j'ai essayé
J'ai essayé d'autres scripts tels que powershell et des fichiers batch avec des tâches planifiées mais ce n'est pas fiable. Les enfants démarrent simplement leurs machines et se reconnectent ensuite. Donc, étant donné le peu de temps dont je dispose, j'ai besoin d'une méthode plus infaillible, ce qui m'amène ici.
Jean-François Fabre Fix
time_t curr_time_value = time( NULL );
strftime(current_time, 100, "%H:%M", localtime(&curr_time_value));
if(strcmp(current_time,start) < 0 || strcmp(current_time,finish) > 0)
{
system("shutdown /s /t 0");
}