OVH Cloud OVH Cloud

lancer vi et le tuer au bout de 10 minutes

8 réponses
Avatar
pierre.usenet
Bonjour =E0 tous,

malgr=E8s plusieurs recherches sur google et dans les niouzes je
n'arrive pas =E0 trouver une solution =E0 mon pb :

l'id=E9e c'est de permettre =E0 mes utilisateurs d'utiliser vi pendant 10
min maximum et pas plus.

j'ai donc essay=E9 "d'enrober" l'appel dans un script mais je butte sur
quelques pbs. Notemment le fait que quand je passe vi en tache de fond
ca plante car il n'est plus alors reli=E9 a l'entr=E9e standard.

Voici mon script :

#!/bin/sh
TIMEOUT=3D600
vi $1&
p=3D$!
(sleep $TIMEOUT; [ `ps -ef | nawk '{print $2}' | grep -wc $p` -ne 0 ]
&& kill -9 $p) &
k=3D$!
wait $p 2> /dev/null
exit=3D$?
# Les codes de sortie sont 128+signal de sortie du processus qu'on
attend cf man
case $exit in
129)
echo '(timed out)' >&2
;;
*)
kill -kill $k 2> /dev/null
;;
esac


Quelqu'un a-t-il une soluce ?
Merci

8 réponses

Avatar
pierre.usenet
on m'a filé une soluce qui marche bien.


Si ca interresse du monde :


#!/bin/sh
(
sleep 10 ; kill $$
) &
exec vi


On Oct 13, 2:36 pm, ""
wrote:
Bonjour à tous,

malgrès plusieurs recherches sur google et dans les niouzes je
n'arrive pas à trouver une solution à mon pb :

l'idée c'est de permettre à mes utilisateurs d'utiliser vi pendant 10
min maximum et pas plus.

j'ai donc essayé "d'enrober" l'appel dans un script mais je butte sur
quelques pbs. Notemment le fait que quand je passe vi en tache de fond
ca plante car il n'est plus alors relié a l'entrée standard.

Voici mon script :

#!/bin/sh
TIMEOUT`0
vi $1&
p=$!
(sleep $TIMEOUT; [ `ps -ef | nawk '{print $2}' | grep -wc $p` -ne 0 ]
&& kill -9 $p) &
k=$!
wait $p 2> /dev/null
exit=$?
# Les codes de sortie sont 128+signal de sortie du processus qu'on
attend cf man
case $exit in
129)
echo '(timed out)' >&2
;;
*)
kill -kill $k 2> /dev/null
;;
esac

Quelqu'un a-t-il une soluce ?
Merci


Avatar
moinsdespam
Dans ,
on m'a filé une soluce qui marche bien.


Si ca interresse du monde :


#!/bin/sh
(
sleep 10 ; kill $$
) &
exec vi


Et c'est quoi l'intérêt de la manip par curiosité ?


--
Frédéric
Bleu,e adj. et n. m. Qui est d'une couleur voisine du rouge, mais pas très : un
ciel bleu, des yeux bleus, les flots bleus [..]. Fig. Bouch. : un steak bleu ;
s'emploie pour désigner un steak rouge. (Pierre Desproges : D.S.U.É (et des BN))

Avatar
Sébastien Monbrun aka TiChou
Dans le message <news:,
*Frederic Dupas* tapota sur f.c.o.unix :

on m'a filé une soluce qui marche bien.

Si ca interresse du monde :

#!/bin/sh
(
sleep 10 ; kill $$
) &
exec vi


Et c'est quoi l'intérêt de la manip par curiosité ?


D'une part.

Et d'autre part, quel moyen va être mis en place pour empêcher l'utilisateur
à lancer directement /usr/bin/vi ?

--
Sébastien Monbrun aka TiChou


Avatar
Olivier Miakinen

#!/bin/sh
(
sleep 10 ; kill $$
) &
exec vi


Et c'est quoi l'intérêt de la manip par curiosité ?


D'une part.


D'empêcher les gens de bosser ? Voir dix minutes de travail foutu en
l'air parce j'aurais oublié de sauver avant 9 minutes et 59 secondes, ça
me donnerait l'envie de trucider celui qui me fait ça.

Et d'autre part, quel moyen va être mis en place pour empêcher l'utilisateur
à lancer directement /usr/bin/vi ?


Et enfin, la solution donnée tue le processus au bout de dix secondes au
lieu de dix minutes. C'est bien, on a encore moins le temps de bosser.

Ah si, je sais : en réalité, c'est pour faire la promotion d'emacs en
disant « vous voyez, vi c'est nul, il plante tout le temps ».



Avatar
pierre.usenet
On Oct 13, 5:05 pm, Sébastien Monbrun aka TiChou
wrote:
Et c'est quoi l'intérêt de la manip par curiosité ?D'une part.



Ce serait asser complexe a expliquer complétement ici mais dans les
grandes lignes voici la situation :

Certains utilisateurs d'un groupe A on la possibilitée de modifier
certains maps NIS sur le systeme.
Afin de gérer les accès concurents à ces maps j'ai enrobé vi dans
un script qui lock les bases et les fichiers lorsqu'une personne édite
ces fichiers.

D'autres utilisateurs d'un groupe B ont accès à une interface qui
permet de modifier les mêmes maps.
Une crontab dans permet de valider et compiler les modis apportées par
les utilisateurs du groupe B.

Le pb est qu'il arrive que certains utilisateurs du groupe A oublient
de quitter l'édition des maps. Ils bloquent alors tout le système
(les utilisateurs du groupe A et du groupe B).

L'idée est donc de permettre l'édition des maps que pendant 10
minutes avant de refermer automatiquement et sans sauver les modifs en
cas d'oubli.

Et d'autre part, quel moyen va être mis en place pour empêcher l'util isateur
à lancer directement /usr/bin/vi ?


les utilisateurs lancent ces commandes par op.


Avatar
pierre.usenet
On Oct 13, 7:17 pm, Olivier Miakinen <om+ wrote:
D'une part.D'empêcher les gens de bosser ? Voir dix minutes de travai l foutu en
l'air parce j'aurais oublié de sauver avant 9 minutes et 59 secondes, ça

me donnerait l'envie de trucider celui qui me fait ça.


Celui qui met ca en place agit de la sorte car il sait qu'il y a des
gens comme vous qui ne réfléchissent pas avant d'agir.

Ah si, je sais : en réalité, c'est pour faire la promotion d'emacs en
disant « vous voyez, vi c'est nul, il plante tout le temps ».


Non c'est pour bosser ... pas pour glander sur les news (ce que permet
emacs).


Avatar
Nicolas George
"" wrote in message
:
L'idée est donc de permettre l'édition des maps que pendant 10
minutes avant de refermer automatiquement et sans sauver les modifs en
cas d'oubli.


Voilà, maintenant que tu expliques ton problème, on peut t'expliquer une
solution : à l'ouverture, tu autorises ton système à forcer un verrou vieux
de plus de T, à choisir (10 mn, tu dis) ; à la fermeture, tu vérifies si le
verrou a été forcé : s'il est encore valable, tu valides la modification,
s'il a été forcé, tu en informes l'utilisateur et tu lui proposes de
relancer l'éditeur avec un merge de ses modifications et de celles qui ont
eu lieu entre temps.

Et avant d'implémenter ça, tu te dis que ce n'est pas la peine de réinventer
la roue, et tu passes les fichiers concernés sous CVS / Subversion / GIT /
whatever.

Avatar
pierre.usenet
Nicolas George wrote:

Voilà, maintenant que tu expliques ton problème, on peut t'expliquer une
solution : à l'ouverture, tu autorises ton système à forcer un verr ou vieux
de plus de T, à choisir (10 mn, tu dis) ; à la fermeture, tu vérifi es si le
verrou a été forcé : s'il est encore valable, tu valides la modific ation,
s'il a été forcé, tu en informes l'utilisateur et tu lui proposes de
relancer l'éditeur avec un merge de ses modifications et de celles qui ont
eu lieu entre temps.


C'est ce qui est fait. Merci beaucoup pour votre aide.

Et avant d'implémenter ça, tu te dis que ce n'est pas la peine de r éinventer
la roue, et tu passes les fichiers concernés sous CVS / Subversion / GI T /
whatever.


Oui oui ... sauf que comme indiqué plus haut le système est plus
complexe qu'il n'y parait : ces maps sont mises à jour par des outils
web / interface texte / à la main / shells.

Il n'est pas possible de mettre en place cvs et co (chose à laquelle
j'avais déjà pensé) ...