Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

nombre réponses : 25

#0 Re : -1 »  [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...) » Le 23/05/2014, à 21:04

omnimax
Réponses : 1735

un todo avec notification


#TODOTASK
d()
{
time="$1"; shift
sleep "$time"m && notify-send "$@"
echo "$@" >> "$HOME"/Dropbox/todolist
}

usage

d 30 ne pas oublier de faire les courses

> affiche dans 30 min une notification "ne pas oublier de faire les courses" et sauve ce petit texte dans dropbox ou autre.

Voilou.

scusi c'est du zsh mais applicable facilement en bash

#1 Re : -1 »  [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...) » Le 24/05/2014, à 21:13

omnimax
Réponses : 1735

pti ajout de rien du tout qui propose un dialogue pour reporter ou pas la tâche avec --timeout 5 pour ne pas devoir cliquer si on ne veut pas reporter la tâche

#TODOTASK
d()
{
time="$1"; shift
not="$@"
sleep "$time"m && notify-send "$not" & mplayer /home/$USER/Dropbox/Print\ Complete.wav 2>/dev/null
echo "$not" >> "$HOME"/Dropbox/todolist
reponse=$(zenity --timeout 5 --question --text "Veux-tu reporter cette tache ? <b>"$not"</b>")
if [[ "$reponse?" -eq 0 ]]; then
sleep 30m && notify-send "$not" & mplayer /home/$USER/Dropbox/Print\ Complete.wav 2>/dev/null
fi
}

#2 -1 »  problème script surveillance dernier fichier » Le 29/05/2014, à 13:45

omnimax
Réponses : 26

Bonjour j'aimerai automatiser l'envoi d'un mail dès que l'on ajoute un fichier sur Dropbox.
Voilà l'ébauche de mon script.

#!/bin/bash
#dropboxalert 
empl=$HOME/Dropbox/
while inotifywait -e create "$empl"; do
sleep 10s # je rajoute ceci pour être sûr que le fichier soit correctement copié
fic=$(ls -R -c -t -I dropboxalert -I dropboxalert~ --reverse "$empl" | tail -n 1) # j'écarte avec -I le nom du script et de sa copie auto car avec les test je l'enregistre souvent
echo "$fic"
done
exit 0

inotifywait marche parfaitement et me retourne automatiquement le fichier créé.
par contre

fic=$(ls -R -c -t -I dropboxalert -I dropboxalert~ --reverse "$empl" | tail -n 1) 
echo "$fic"

ne me renvoi pas le dernier fichier mais l'avant dernier....:( on dirait que le simple fait de lister avec ls change le dernier fichier ajouté ???
si qqun peux éclairer ma lanterne ...Merci

#3 Re : -1 »  problème script surveillance dernier fichier » Le 29/05/2014, à 19:20

omnimax
Réponses : 26

j'ai essayé mais ta soluce ne fonctionne pas non plus. c'est vraiment bizarre;

d'habitude je fais souvent  pour avoir le dernier fichier:

ls -c --color=auto -l -t -h --reverse

et cela marche très bien dans ce cas mais via mon script cela ne donne pas le même résultat.

J'ai trouvé ceci plus pompeux mais qui fonctionne

#!/bin/bash
empl=$HOME/Dropbox/
coucou=$HOME/Bureau/list
while inotifywait -e create "$empl" > "$coucou"; do
list=$(cat "$coucou")
echo "$list"
done
exit 0

#4 Re : -1 »  problème script surveillance dernier fichier » Le 29/05/2014, à 20:59

omnimax
Réponses : 26

non mon ls n'a pas un alias ls

je viens de reproduire l'erreur


touch coucou
CHEMIN:  /home/omnimax   DATE:  jeu 29 mai  21:00:09       
-->  ls -c --color=auto -l -t -h --reverse -R | tail -n 1
-rw-r--r-- 1 syst syst 111M mai 28 20:16 BONUS.zip
CHEMIN:  /home/omnimax   DATE:  jeu 29 mai  21:00:11       
-->  

et coucou a bien été créé.

j'aimerai vraiment comprendre le pourquoi.

#5 Re : -1 »  problème script surveillance dernier fichier » Le 29/05/2014, à 21:09

omnimax
Réponses : 26

j'ai compris l'erreur mais sans savoir la résoudre

ls -R

va chercher récursivement mais sans trier l'ensemble des dossiers par date, seul le dernier résultat sera juste avec 

ls -c --color=auto -l -t -h --reverse

il faudrait pouvoir trier le résultat de ls -R par date puis appliquer le dernier en date

#6 Re : -1 »  problème script surveillance dernier fichier » Le 29/05/2014, à 21:10

omnimax
Réponses : 26

trouvé !

ls -c --color=auto -l -t -h --reverse -R | ls -c --color=auto -l -t -h --reverse | tail -n 1

#7 Re : -1 »  problème script surveillance dernier fichier » Le 29/05/2014, à 22:27

omnimax
Réponses : 26

merci mais cela ne fonctionne toujours pas
noté postmortem pour l'option exclude wink

#!/bin/bash
#dropboxalert
empl=$HOME
while inotifywait -e create "$empl"/* 
do
essai=$(ls -clthR --time-style=+"%s" | sort -nk6 | tail -1)
echo "$essai"
done
exit 0
touch coucou

résultat :

/home/omnimax/ CREATE coucou
-rwxr-xr-x 1 omnimax omnimax  301 1401395267 dropboxalert~

#8 Re : -1 »  problème script surveillance dernier fichier » Le 30/05/2014, à 10:02

omnimax
Réponses : 26

merci Watael, pingouinux et postmortem pour toutes vos réponses, entre temps j'avais trouvé ceci qui fonctionne (merci pingouinux pour sed)

#!/bin/bash


empl=$HOME
log=$HOME/Bureau/list
mail=maildudestinataire

while inotifywait -e create "$empl"/* > "$log"
do
list=$(cat "$log" | sed 's/ CREATE//') 
echo -e ""$list" a été ajouté à votre dropbox\n Ceci est un mail automatique" |  msmtp "$mail"}
done
exit 0

mais c'est clair que c'est bien plus joli et court la soluce de postmortem

#!/bin/bash
mail=maildudestinataire
log=$HOME/Dropbox/log
while fic=$(inotifywait -e create $HOME/ --format %w%f)
do
   echo "$fic a été ajouté à votre dropbox\n Ceci est un mail automatique" |  msmtp "$mail"
   ls -l "$fic" > $log # pour garder une trace de l'activité et c'est vrai que -c n'a plus d'intérêt
done
exit 0

#9 Re : -1 »  problème script surveillance dernier fichier » Le 02/06/2014, à 12:23

omnimax
Réponses : 26

Salut,

Voilà mon script est fonctionnel mais seulement en local, lorsque je l'exécute via le réseau il me met permission denied.
je l'ai lancé en

sudo ./dropalert 

mais résultat identique.

C'est bizarre car j'ai les droits sur ce réseau puisque je peux créer et supprimer dossiers/fichiers. J'ai consulté le man d'inotifywait mais je n'ai rien vu à ce sujet. 
Vous avez une idée ?

ps : les print$6 et print$7 doivent être ajustés en fonction du chemin réseau.


#!/bin/bash
#dropalert
mail="maildestinataire"
path="/run/user/1000/gvfs/smb-share:server=192.168.1.200,share=data/Clients/IPAD"
while fic=$(inotifywait -e create "$path" -r --format %w%f); do
#sleep 60s
rep=$(awk -F "/" '{print $6}' <<< "$fic") 
fichier=$(awk -F "/" '{print $7}' <<< "$fic") 
txt=$(echo -e "Subject : Un nouveau fichier est apparu sur votre Dropbox !\n\nDans le dossier \e[1m"$rep"\e[21m, il s'agit du fichier : \e[1m"$fichier"\n\n\e[21mCe mail est automatisé.")

echo "$txt" | msmtp "$mail"
done
exit 0

#10 Re : -1 »  problème script surveillance dernier fichier » Le 04/06/2014, à 09:16

omnimax
Réponses : 26

edit :

la mise en forme ne fonctionne pas en msmtp donc je l'ai viré
mon script fonctionne via

sudo ln -s emplacementreseau nouveau lien 

c'est pas propre et ne fonctionne qu'à partir de l'ordi du lien, mais au moins cela fonctionne !

#!/bin/bash
#dropalert
mail="maildestinataire"
path="votreemplacement"
while fic=$(inotifywait -e create "$path" -r --format %w%f); do
#sleep 60s
rep=$(awk -F "/" '{print $6}' <<< "$fic") 
fichier=$(awk -F "/" '{print $7}' <<< "$fic") 
txt=$(echo -e "Subject : Un nouveau fichier est apparu sur votre Dropbox ! \n\n Dans le dossier "$rep", il s'agit du fichier : "$fichier" \n\n Ce mail est automatisé.")

echo "$txt" | msmtp "$mail"
done
exit 0

#13 Re : -1 »  Accès Nas fstab cifs problème de droits » Le 11/06/2014, à 13:13

omnimax
Réponses : 10

toujours personne ?

sinon qqun pour me dire comment monter en ligne de commande un partage de la sorte (réalisé via nautilus > se connecter à un serveur)

/run/user/1000/gvfs/smb-share:server=192.168.1.200,share=data

sachant que

sudo mount -t smbfs 192.168.1.200 /mnt/partagessai

avec bien entendu

sudo mkdir /mnt/partagessai

ne fonctionne pas

tout comme

sudo gvfs-mount smb://192.168.1.200/data

#15 Re : -1 »  [résolu]créer un raccourci sur bureau au lieu du terminal » Le 09/06/2014, à 20:31

omnimax
Réponses : 8
ln -s ~/arduino/arduino-1.5.6-r2/arduino ~/Bureau/arduino

#17 -1 »  awk comment faire plus court » Le 31/05/2014, à 13:59

omnimax
Réponses : 5

Bonjour,

je n'arrive pas à utiliser awk sans passer par un fichier texte. N'est il pas possible d'utiliser directement une variable ?

#!/bin/bash
echo "/home/syst/Ubuntu\ One/course" > /home/syst/es
fu=$(awk -F "/" '{print $3}' /home/syst/es)
echo "$fu"
exit 0 

j'aimerai plutôt utilser qqch du genre mais ma syntaxe ne doit pas être bonne.

#!/bin/bash
fic="/home/syst/Ubuntu\ One/course"
fu=$(awk -F "/" '{print $3}' "$fic")
echo "$fu"
exit 0 

merci pour vos réponses, et bon samedi.

#18 Re : -1 »  awk comment faire plus court » Le 31/05/2014, à 17:24

omnimax
Réponses : 5

Super merci pour l'astuce. Pour le champs 3 je comprends maintenant pourquoi je récupère syst.

#19 -1 »  awk sed cut tout ce que vous voulez » Le 29/05/2014, à 22:20

omnimax
Réponses : 3

Voilà j'ai le le fichier essai qui me donne lorsque je fais
cat essai :

/home/omnimax/Bureau/ CREATE Nouveau document 10 a été ajouté à votre dropbox

j'aimerai avoir ce résultat en retirant CREATE:

/home/omnimax/Bureau/ Nouveau document 10 a été ajouté à votre dropbox

J'imagine que c'est réalisable via awk, sed, cut ou autres, mais j'avoue que ces outils sont encore obscurs pour moi et difficiles à maîtriser.
Au passage si vous avez un tuto (facile) pour ces outils de ouf...

Merci si vous passez par ici.

#20 Re : -1 »  awk sed cut tout ce que vous voulez » Le 29/05/2014, à 22:29

omnimax
Réponses : 3

tu es partout smile

merci

#21 -1 »  incrontab ne se lance pas » Le 28/05/2014, à 23:05

omnimax
Réponses : 5

Bonsoir tout le monde,

Je ne comprends pas pourquoi mon icrontab ne se lance pas alors que le script est fonctionnel.
merci pour votre aide.

mon icrontab -e

/home/omnimax/Dropbox/todolist IN_MODIFY /home/omnimax/Dropbox/SCRIPT/tildacat 

le script tildacat

#!/bin/bash

dr=$HOME/Dropbox/todolist
tilda -c "cat "$dr""

exit 0

fonction zsh pour modifier todolist qui fonctionne à merveille elle aussi

#TODOTASK
d()
{
group="$1"; shift
not="$@"
sleep "$group"m && notify-send "$not" & mplayer /home/$USER/Dropbox/Leopard\ Sounds/Print\ Complete.wav 2>/dev/null
echo "$not" >> "$HOME"/Dropbox/todolist
reponse=$(zenity --timeout 5 --question --text "Veux-tu reporter cette tache ? <b>"$not"</b>")
if [[ "$reponse?" -eq 0 ]]; then
sleep 30m && notify-send "$not" && mplayer /home/$USER/Dropbox/Leopard\ Sounds/Print\ Complete.wav 
fi
}

#22 Re : -1 »  incrontab ne se lance pas » Le 28/05/2014, à 23:31

omnimax
Réponses : 5

trouvé tout seul si ça peut aider


#!/bin/bash

dr=$HOME/Dropbox/todolist
while inotifywait -e modify $HOME/Dropbox/todolist; do
     tilda -c "cat "$dr""
done
exit 0

#23 Re : -1 »  incrontab ne se lance pas » Le 28/05/2014, à 23:37

omnimax
Réponses : 5

amélioré

#!/bin/bash

dr=$HOME/Dropbox/todolist
while inotifywait -e modify $HOME/Dropbox/todolist; do
     tilda -c "cat "$dr"" & sleep 5m && killall tilda
done
exit 0

#24 Re : -1 »  incrontab ne se lance pas » Le 29/05/2014, à 07:44

omnimax
Réponses : 5

Salut,

Je lance la commande suivante dans mon terminal

d 20 ne pas oublier de sonner à tartenpion

20 minutes plus tard, une notification s'affiche avec ce Msg en me demandant si je veux répéter la tâche ou pas.

Et en parallèle de ceci mes tâches vont dans un fichier todolist sur ma dropbox, qui lorsqu'il contient de nouvelles entrées est automatiquement affiché pour avoir un aperçu de toutes mes tâches en cours.