Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/05/2008, à 14:38

casimir

Script sh [resolut] ~

Je voudrait faire une script pour lancer une commande dvgrab.
(Un bouton sur le bureau)
Le script dans /home/justclo/cam.sh
Dois-je le mettre quelques part /usr/bin esct-ce obligé ou il peut etre placer ou il veut ?

#!/bin/bash
dvgrab -  | vlc --intf dummy - :demux=rawdv  --sout"#transcode{vcodec=mp2v,acodec=mpga,vb=4096,vt=8000,ab=128,aspect=16:9,deinterlace,croptop=60,cropbottom=60,width=720,height=576,samplerate=44100,aenc=ffmpeg}:standard{access=udp,mux=ts,url=239.255.30.60:1234,sap,name="Prise 1394 N°1"}"

j'ai plusieurs question, pourquoi #!/bin/bash et pas #!/bin/sh
dvgrab se lance avec sudo je voudrait rendre permanent /dev/raw/1394 au ieu de faire un chmod 777 a chaque fois.
J'ai déja une notion du probleme, mais bon.
http://forum.ubuntu-fr.org/viewtopic.php?id=198580
Si c'est la meme chose je pourai faire

Dernière modification par casimir (Le 09/05/2008, à 23:13)

Hors ligne

#2 Le 08/05/2008, à 14:59

farnsworth

Re : Script sh [resolut] ~

Bonjour,
Alors dans l'ordre:
le shell que tu mets au debut de ton script condionnera l'execution de ce script avec justement ce shell, en ce qui te concerne pour une simple ligne de commande ca ne change pas grand chose, mais tant qu'a faire autant utiliser bash, c'est le plus repandu/utilise par defaut sous les gnu/linux.
ensuite poste voir un "ls -l /dev/raw/1394" afin de voir si tu n'as pas simplement a te rajouter dans un groupe.
je connais pas ton appli ni ce que tu fais, mais generalement les devices appartiennent a un groupe, il suffit que tu fasses parti de ce groupe pour avoir les acces dessus (genre video/scanner/...).
sinon tu as aussi la solution de faire avec sudo comme tu l'as indique via une conf dans sudoers.
et encore une autre solution avec udev, mais c'est plus complique et comme ca fait tres longtemps que j'y ai pas touche je ne pourrais t'expliquer le truc.

edit: j'ai loupe l'emplacement du script wink
en fait si tu veux l'executer avec tous les users de ta machine, le plus propre est de le mettre dans /usr/local/bin, maintenant si c'est du temporaire ou que c'est a n'utiliser que par un seul compte, tu peux tres bien le mettre ou tu veux dans le home dir de ton user (tu crees un repertoire script ou bin sous ton /home/"user").

Dernière modification par farnsworth (Le 08/05/2008, à 15:03)

Hors ligne

#3 Le 08/05/2008, à 15:22

casimir

Re : Script sh [resolut] ~

ls -l /dev/raw1394
crwxrwxrwx 1 root disk 171, 0 2008-05-08 15:12 /dev/raw1394

A oki j'y comprend si c'est un script pour mon user je le met dans mon /home
si je veux qu'il puisse étre accessible avec les meme droit a tout les utilisateur, je le met ailleur, mais pas obligatoirement dans un répertoire spécifique.
Il pourait etre dans /usr tout court.
Donc comme c'est root dans le code ci-dessus qui y a un acces seul.
Il faut que je modifie ca comme le lien que j'ai donné. dans /etc/sudoers
mais j'ai eu chaud un moment quand je l'avais fait avec vi, je m'était trompé dans le script et n'avais meme plus acces  a  /etc/sudoers
Donc si il y a plus simple je suis preneur, sinon j'vais y aller tout doux.
Le script a pout but de laisser (l'utilisateur de l'ordi) libre l'acces a /dev/raw1394

Hors ligne

#4 Le 08/05/2008, à 15:39

farnsworth

Re : Script sh [resolut] ~

Pas vraiment, tu peux effectivement mettre un executable n'importe ou, seulement il faut que ceux qui doivent l'executer aient acces au repertoire ou il se trouve, et il faut que ce repertoire soit declare dans leur variable PATH.
Il y a un certaine normalisation sur les repertoires, les scripts et autres executables persos partent en general dans /usr/local/bin qui est un repertoire que tout le monde a normalement dans sont PATH (une variable propre a chaque utilisateur qui contient la liste des repertoires ou chercher des fichiers executables, en gros, quand tu tapes une commande, le shell regarde ta variable PATH (tu peux faire 'echo $PATH' pour l'afficher) et va chercher dans les repertoire (un par un et dans l'ordre ou ils sont declares dans $PATH) s'il trouve un executable du nom de ta commande, quand il le trouve il l'execute, s'il arrive au bout sans avoir rien trouve il te dit que la commande est introuvable (introuvable dans le PATH, mais ton executable peut tres bien etre quelque part ailleurs sur ton systeme))
bref, met le dans /usr/local/bin, c'est plus propre et tu sais ou il est.
si tu le mets dans le home dir de ton user tu vas devoir pour l'executer: soit modifier ton PATH, soit taper le chemin d'acces complet (/home/toto/script/monshell.sh), soit aller dans le repertoire et le lancer depuis ce repertoire, donc c'est pas tres commode.

Pour le device, quels sont ses droits avant que tu fasses le chmod?
effectivement le groupe disk est un groupe plutot systeme, donc ne te rajoute pas dedans ca n'est pas propre.
donc il te reste la solution de sudo (ou udev si quelqu'un veut bien passer expliquer comment faire (en gros ca te permettrait de n'avoir ni chmod ni sudo a faire, au demarrage ton device aurait direct les bons droits).

le fichier sudoers s'edite avec vi mais pas directement, passe plutot par la commande 'visudo' c'est plus propre, ca controle la syntaxe du fichier, ca evite les conneries.
puis pense a le copier avant de le modifier.

Dernière modification par farnsworth (Le 08/05/2008, à 15:42)

Hors ligne

#5 Le 08/05/2008, à 16:37

casimir

Re : Script sh [resolut] ~

Tu est trop bon avec moi, ce sont des explications que certes, j'aurait pu lire quelques part, mais si on n'a pas le besoin, ou pris par d'autres applications, on passe !
Effectivement je vois ce que donne "echo $PATH"
Donc si j'install un script je ne suis meme pas obligé de l'appeler "cam.sh"
mais "cam", comme ca je tape "cam" dans un terminal et le script se lance.
Bon si j'ai compris ca, c'est une bonne base pour mes script aussi petit soit t'ils, je faissait des choses avant sans vraiment les comprendre comme ca.
Donc je metait bien dans /usr/local/bin
Je ne suis pas fort en script, je ne connait que le php, donc les syntax bash, je commence, jusqu'a lors je n'ai fait que modifié des scripts existant.
Dans le cas de la ligne de comande j'ai déja ca.

sudo mv /home/justclo/cam.sh /usr/local/bin
sudo mv /usr/local/bin/cam.sh /usr/local/bin/cam
sudo chmod 777 /usr/local/bin/cam

je fait $cam et ca se lance. c'est vraiment top
Je vais voir aprés pour les droits /etc/sudoers

Hors ligne

#6 Le 08/05/2008, à 16:53

farnsworth

Re : Script sh [resolut] ~

yep, le .sh c'est uniquement pour retrouver visuellement le type de script, mais c'est pas tres important, et puis pour ca il y a la commande file 'fichier' (ca te donne le type de fichier (binaire, shell script, ...)
sinon tout a l'air bon, sauf que:
tu donnes les droits d'ecriture a tout le monde a ton fichier, et il est executable surement par tout le monde via sudo, donc n'importe qui (bon, c'est de la parano mais on sait jamais) peut le modifier et mettre ce qu'il veut dedans et ensuite l'executer via sudo avec les droits root... c'est pas tres top wink
donc fait plutot un chmod 755 que 777.
sinon ca devrait etre OK!

edit: detail wink la commande:

sudo mv /home/justclo/cam.sh /usr/local/bin
sudo mv /usr/local/bin/cam.sh /usr/local/bin/cam

peut etre plus courte:

sudo mv /home/justclo/cam.sh /usr/local/bin/cam

Dernière modification par farnsworth (Le 08/05/2008, à 16:55)

Hors ligne

#7 Le 08/05/2008, à 17:42

casimir

Re : Script sh [resolut] ~

oui plus courte sans probleme c'était pour te montrer les commandes que j'avais executé puisque au tout début je l'avis mis dans /urs/local/bin
et comme tu m'a fait comprendre il pouvait s'appeler cam j'ai juste passer une autre commande aprés.
Bien je vais allez voir /etc/sudoers
Je vais faire

# Cmnd alias specification
Cmnd_Alias raw1394=/dev/raw1394
Cmnd_Alias APACHE=/etc/init.d/apache2

Defaults        !lecture,tty_tickets,!fqdn


# User privilege specification
root    ALL=(ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL, NOPASSWD:raw1394,APACHE

Est-ce que quelqu'un y voit une anomalie.
/etc/init.d/apache2 devrait me permettre d'utiliser "start, stop, reload"
NOPASSWD:raw1394,APACHE (virgule san espace) je suis pas obligé de répeter NOPASSWD:raw1394,NOPASSWD:APACHE
et raw est en miniscule, est-ce important ?

Hors ligne

#8 Le 08/05/2008, à 17:44

casimir

Re : Script sh [resolut] ~

suis-je obligé d'étre en mode shell ou alors je peut le modifié
sous gnome

sudo nano /etc/sudoers

Hors ligne

#9 Le 08/05/2008, à 17:59

farnsworth

Re : Script sh [resolut] ~

nano c'est un editeur texte terminal tout comme vi.
tu parlais peut-etre de gedit?
sinon oui, tu peux l'editer avec n'importe quel outil, la seule difference avec la commande visudo, c'est qu'avant de sauvegarder elle verifie que ton fichier est en bon etat, ca evite les betises. mais si tu sais pas utiliser vi, passe efefctivement par autre chose.

Hors ligne

#10 Le 08/05/2008, à 18:05

farnsworth

Re : Script sh [resolut] ~

Pour les minuscules/majuscules, tu es tout bon comme ca: les alias declares en minuscule doivent etre appelles en minuscule (raw1394), pareil pour les alias en majuscules (APACHE), en fait tu peux les appeler comme tu veux du moment que tu respectes la casse ensuite.
pour apache, je sais plus trop, je crois que si tu veux faire du stop start... il faut declarer comme ca:

Cmnd_Alias APACHE=/etc/init.d/apache2 *

Mais pas certain a 100%, teste sans, si ca marche pas c'est qu'il faut l'etoile wink

Dernière modification par farnsworth (Le 08/05/2008, à 18:07)

Hors ligne

#11 Le 08/05/2008, à 18:13

casimir

Re : Script sh [resolut] ~

Je pensais qu'il me fallait etre en mode console taper je sais plus quoi pour export visudo , je me rappel plus pourquoi on m'avait indiqué une méthode qui me paraissait lourde juste pour un fichier.
j'essai sous gnome de toute facon au pire il ne s'enregistre pas.
et de toute facon chuis obligé de rebooter.
Je vais cherché pour le *
merci vraiment de ton aide

Hors ligne

#12 Le 08/05/2008, à 20:45

Yannick_LM

Re : Script sh [resolut] ~

sudo nano /etc/sudoers

ARG !

La seule et unique commande à utiliser pour moidfier /etc/sudoers, c'est :

sudo visudo

Avec éventuellement :

 EDITOR="/chemin/vers/éditeur/" sudo visudo

C'est pourtant marqué noir sur blanc au début du fichier en question yikes


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

#13 Le 09/05/2008, à 08:01

casimir

Re : Script sh [resolut] ~

Bien sur que c'est ecrit , oups ! sorry .
J'essyerai plus tard, c'erst pas pour rien que ca me disait quelques choses.

Hors ligne

#14 Le 09/05/2008, à 10:43

casimir

Re : Script sh [resolut] ~

du coup je ne sais pas si j'ai pas fait une erreur quelques part.
pas habituié a vi
Ci-dessous ce qui me donne visudo


Ci dessous ce que je veux faire.

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset

# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

Mais quand je l'appel il me fait ca

E325: ATTENTION
Found a swap file by the name "/etc/.sudoers.tmp.swp"
          owned by: root   dated: Fri May  9 08:57:33 2008
         file name: /etc/sudoers.tmp
          modified: YES
         user name: root   host name: justclo-desktop
        process ID: 6919
While opening file "/etc/sudoers.tmp"
             dated: Fri May  9 11:42:53 2008
      NEWER than swap file!

(1) Another program may be editing the same file.
    If this is the case, be careful not to end up with two
    different instances of the same file when making changes.
    Quit, or continue with caution.

(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r /etc/sudoers.tmp"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file "/etc/.sudoers.tmp.swp"
    to avoid this message.
"/etc/sudoers.tmp" 23 lines, 470 characters
Press ENTER or type command to continue

C'est pas grave ?

Quand j'edite avec gedit par exemple sudoers.temp est vide, donc y a rien de grave ?

////////        Ca c'est ce que je faire......

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset

# Uncomment to allow members of group sudo to not need a password
# %sudo ALL=NOPASSWD: ALL

# Host alias specification

# User alias specification

# Cmnd alias specification
Cmnd_Alias raw1394=/dev/raw1394
Cmnd_Alias APACHE=/etc/init.d/apache2




# User privilege specification
root    ALL=(ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL, NOPASSWD:raw1394,APACHE

Mais si je l'enregistre

>>> sudoers file: syntax error, line 17 <<<
>>> sudoers file: syntax error, line 27 <<<
What now? e
>>> sudoers file: syntax error, line 17 <<<
>>> sudoers file: syntax error, line 27 <<<
What now?

Dernière modification par casimir (Le 09/05/2008, à 11:04)

Hors ligne

#15 Le 09/05/2008, à 11:04

yohann

Re : Script sh [resolut] ~

non c'est pas grave c'est juste que vim te previent qu'il q une copie de ton document:
Found a swap file by the name "/etc/.sudoers.tmp.swp"
vim fait ce genre de copie en cas de plantage (ca peut aller de la coupure de courant a la fermeture "brutale du termial" ou la modification du fichier alors qu'il est deja ouvert dans un autre term).
pour s'en sortir fait comme vim te dit:


vim a écrit :

(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r /etc/sudoers.tmp"
    to recover the changes (see ":help recovery").

vim -r /etc/sudoers.tmp pour recuperer la sauvegarde d'urgence

vim a écrit :

If you did this already, delete the swap file "/etc/.sudoers.tmp.swp"
    to avoid this message.
"/etc/sudoers.tmp" 23 lines, 470 characters

rm /etc/.sudoers.tmp.swp pour ne plus avoir ce message (supprime la copie d'urgence de vim)


j.vachez, le génie du net | Soirées jeux sur Lyon | 441
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++
..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

Hors ligne

#16 Le 09/05/2008, à 11:08

casimir

Re : Script sh [resolut] ~

Oups post croisé, j'ai modifié le post précédent, les erreurs ne serait pas du aux miniscules ?

Dernière modification par casimir (Le 09/05/2008, à 11:08)

Hors ligne

#17 Le 09/05/2008, à 11:10

casimir

Re : Script sh [resolut] ~

Ca devait etre ca, j'ai mis en majuscules. et ca c'est enregister.
et je n'ai plus de /etc/sudoers.temp
J'ai peur de rebooter, faudra bien poutant.

Par conter j'ai rien trrouvé sur

Cmnd_Alias APACHE=/etc/init.d/apache2 *

Au lieu de

Cmnd_Alias APACHE=/etc/init.d/apache2

Dernière modification par casimir (Le 09/05/2008, à 11:15)

Hors ligne

#18 Le 09/05/2008, à 17:08

casimir

Re : Script sh [resolut] ~

Bon j'ai modifié pour l'instant sans apache

....
Cmnd_Alias RAW=/dev/raw1394
%admin ALL=(ALL) ALL
%justclo ALL=(ALL) ALL, NOPASSWD:RAW

La ca marche, on s'était un peu égaré, mais mon script que l'on parlait plus haut n'est pas parfait.
Puisque s'il ne detecte plus le flux, il ne réenclenche pas.
La ci dessous tout vas bien enfin y a des erreurs mais le flux fonctionne.

 stream_out_transcode private debug: late picture skipped (64544)
[00000301] stream_out_transcode private debug: late picture skipped (45199)
[00000301] stream_out_transcode private debug: late picture skipped (18682)

mais la j'ai débranché puis rebrancher la prise dv

main private warning: late buffer for mux input (12531783)
[00000301] stream_out_transcode private debug: late picture skipped (12585738)
[00000309] main private warning: late buffer for mux input (12568298)
[00000301] stream_out_transcode private debug: late picture skipped (12608341)
[00000309] main private warning: late buffer for mux input (12547099)
[00000301] stream_out_transcode private debug: late picture skipped (12600619)
[00000309] main private warning: late buffer for mux input (12552383)
[00000301] stream_out_transcode private debug: late picture skipped (12590802)
[00000309] main private warning: late buffer for mux input (12531268)
[00000301] stream_out_transcode private debug: late picture skipped (12582086)
[00000309] main private warning: late buffer for mux input (12567721)
[00000301] stream_out_transcode private debug: late picture skipped (12604771)
[00000309] main private warning: late buffer for mux input (12546546)
[00000301] stream_out_transcode private debug: late picture skipped (12595933)
[00000309] main private warning: late buffer for mux input (12551878)

Il faudrait que le script se relance dès que l'on rebranche, mais la je ne sais pas faire.

Dernière modification par casimir (Le 09/05/2008, à 20:57)

Hors ligne

#19 Le 09/05/2008, à 23:12

casimir

Re : Script sh [resolut] ~

Ce serait trop bien si on pouvait lancer le script dés que l'on branche, la prise dv, je vait creer un autre fils pour ca ici on va se perdre.

Hors ligne