logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 30-05-2018 16:05:48

Maximix
Membre
Inscription : 30-05-2018

Synchronisation de fichier lors de l'ouverture

Bonjour,

Depuis peu je tente de lancer le transfert de fichier d'un serveur distant sur un serveur local lors de l'ouverture de ce fichier.

J'ai d’abord regardé une solution autour de incron mais les script que peut lancer incron se lance en même temps que l’accès au fichier.

Y aurait-il un moyen d'autoriser l’accès au fichier uniquement après la fin de l’exécution du script lancer par incron ou un autre service.

Cordialement Maximix.

Hors ligne

#2 30-05-2018 20:51:38

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-13-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : Synchronisation de fichier lors de l'ouverture

Pas clair ton explication.

Si tu veux modifier les autorisation d'accès d'un fichier, utilises chmod.

Tousse antique Ovide !

Hors ligne

#3 30-05-2018 23:04:54

otyugh
CA Debian-Facile
Lieu : Quimperlé/Arzano
Distrib. : Debian Stable
Inscription : 20-09-2016
Site Web

Re : Synchronisation de fichier lors de l'ouverture

Ou alors tu fais juste un renommage, pendant que ça copie tu fais "dossier.lock" qui redevient "dossier" seulement quand c'est fini. Je pense que c'est le plus simple, les autres solutions impliquent de créer un autre utilisateur qui aura pas les mêmes droits pour te bloquer toi, mais permetre la syncro...
Tordu. Puis pas pratique si t'es pressé et que la syncro bloque.

Je prenderai la phrase fétiche de Archlinux "Keep It Simple Stupid" : un bon fonctionnement logiciel c'est quand il est compréhensible par un enfant de trois ans, un type bourré, et ma grand mère, en temps de pluie, de coupure internet, et... Fin tu vois l'idée.

Dernière modification par otyugh (30-05-2018 23:08:20)


virtue_signaling.pngpalestine.png

En ligne

#4 31-05-2018 02:08:23

Severian
Membre
Distrib. : Debian GNU/Linux 9.4 (stretch)
Noyau : Linux 4.14.0-0.bpo.3-amd64
(G)UI : Openbox 3.6.1-4
Inscription : 13-12-2014

Re : Synchronisation de fichier lors de l'ouverture

bonsoir
pas trop de temps ce matin, mais tu as regardé du coté de inotifywait ?
http://manpagesfr.free.fr/man/man7/inotify.7.html

Hors ligne

#5 31-05-2018 07:22:40

Maximix
Membre
Inscription : 30-05-2018

Re : Synchronisation de fichier lors de l'ouverture

Merci les gars mais je crois avoir mal formuler et surtout le fait d'avoir utiliser "autorisation" a du vous faire pencher vers une histoire de droit .

pour être plus précis et pour reprendre un exemple avec inotifywait.

en surveillant un fichier test avec la commande suivante :

while inotifywait test;do while true; do echo 1; done; done


j'aimerais que si j'effectue un cat sur test le cat soit bloquer dans boucle infini .
en gros je veux qu'un script soit exécuté strictement avant l'ouverture du fichier
Cdt Maximix

Hors ligne

#6 31-05-2018 13:41:02

Erutluc
Membre
Inscription : 25-12-2017

Re : Synchronisation de fichier lors de l'ouverture

Salut

#! /bin/sh
# Exécute une commande avant d'éxécuter la commande du même nom que ce fichier
# Si ce fichier ce nomme less alors less sera lancé. Si c'est x alors x sera lancé
# Placez ce fichier dans /usr/bin/local
# Vérifiez dans votre $PATH que /usr/local/bin est en premier (car les fichiers sont recherchés dans l'ordre)
command_name=$(basename "$0")
notify-send "$command_name" # À remplacer par votre commande
/usr/bin/env $command_name $@

Hors ligne

#7 31-05-2018 14:44:02

Maximix
Membre
Inscription : 30-05-2018

Re : Synchronisation de fichier lors de l'ouverture

Salut Erutluc,

Donc si j'ai bien compris pour lancer un sricpt avec 

cat test


il faut donc que j'ai un fichier script test dans mon dossier /usr/local/bin

Hors ligne

#8 01-06-2018 13:27:07

Erutluc
Membre
Inscription : 25-12-2017

Re : Synchronisation de fichier lors de l'ouverture

Salut. Le script précédent s'appelle lui-même de manière récursif. Il faut pas l’utiliser.

Supposons qu'on veut ouvrir un fichier nommé lecture.txt avec nano.
L’idée c’est de créer un script shell qui lance nano et d’autre programme avant lui.
On nomme ce script nano et on le place dans /usr/local/bin pour qu’il puisse être appelé dans un script ou un terminal (comme /usr/local/bin est en premier dans la variable d'environnement $PATH ce sera /usr/local/bin/nano qui sera lancé lors d'un appel de nano et pas /usr/bin/nano)

Maintenant si on veut faire ça avec emacs, vi , vim, pico, more, less, cat, … , l’idée c’est de créer un script générique nommée rw_wrapper  puis de créer des liens symboliques vers lui du même nom que les commandes ci-dessus. rw_wrapper devine la commande à appeler grâce au nom du lien symbolique.

Ci-dessous le script corrigé

#! /bin/sh
set -eu
script_name=$(basename "$0")
script_path=$(realpath -s "$0")
command_path=$(whereis -b "$script_name" | grep -o "[^ ]*bin[^ ]*" | sed "s|$script_path||g;/^[[:space:]]*$/d")
echo "Starting some command before $script_name ($command_path)"
echo "Starting $script_name ($command_path)" ; $command_path "$@"
echo "Starting some command after $script_name ($command_path)"

Hors ligne

Pied de page des forums