Jump to content
Sign in to follow this  
clive-guilde

script temps de travail Mac

Recommended Posts

Posted (edited)

Bonjour à toute la communauté,

 

Je m'adresse spécialement à ceux qui maitrise un peu le shell. Je souhaiterai créer un script voire une application via applescript pour calculer mon temps de travail quotidien en faisant l'hypothèse que ce temps est égale au temps où mon mac est resté allumé.

J'ai donc fait le code suivant sous apple script qui utilise les commandes shell date et uptime. Cela donne :

tell application "System Events"
	do shell script "MOIS=$(date +\"%B\"); date +\"%d-%m-%y\" | cut -d \",\" -f 1 | awk '{print $1,$2,$3,$4;}'>> /Users/toto/Documents/Temps_travail/temps_travail_$MOIS.txt | uptime | cut -d \",\" -f 1 | awk '{print $3,$4;}' >> /Users/toto/Documents/Temps_travail/temps_travail_$MOIS.txt;"
	delay 3
	
end tell

tell application "Finder"
	
	shut down
	
end tell

le fichier temps_travail_MOIS.txt est sous la forme suivante (date du jour puis retour à la ligne puis le temps quotidien) :

29-03-19
2 mins

Premier problème à chaque reboot uptime se réinitialise mais bon je peux faire une addition manuelle dans ce cas car il y a redondance sur la ligne du jour.

A votre avis existe-t-il une meilleure solution ? Pensez-vous qu'il soit possible d'améliorer le script (c'est surement le cas) ? A vos propositions :)

Bon week-end.

 

EDIT : amélioration du code avec la commande date et la création d'un fichier labelisé du mois en cours.

Edited by clive-guilde

Share this post


Link to post
Share on other sites

Ca fait pas mal d'années que je n'ai plus touché au shell script. Y a certainement plus propre. Personnellement, je préférerais garder tout sur une ligne. Imaginons cette syntaxe : 

29-03-19:0002 mins

Tu pourrais peut-être faire un "tail -1 fichier_mois" (dans mon hypothèse et après une vérification que le fichier n'est pas vide) ou un "tail -2" avec la tienne et commencer par vérifier si la date du jour est égale à la date avant le double point.

Si c'est une autre date, tu ajoutes une ligne au fichier, sinon tu enlèves une ligne, tu sommes les minutes et puis tu rajoutes la ligne (regardes du côté de Sed, je pense que ça peut le faire).

Tu peux aussi compliquer en ajoutant un compteur par mois et années :

  • 29-03-19:0002 mins
  • 03-19:00002 mins
  • 19:000002 mins

Et tu "tail" les 3 dernières lignes et tu incrémentes les 3 compteurs. Note pour faire ce genre de chose, perso, je le ferais en C.

Share this post


Link to post
Share on other sites

Ok merci pour les retours.

Je vais rester pour le moment a mon script mais je vais regarder avec attention les logiciels.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×