PDA

Afficher la version complète : [Réglé] [Réglé] comment faire un script utile ?



jrev
27/12/2004, 07h59
Bonjour,
je suis sous suse 9.1 et j'ai un lecteur ZIP100 qui ne peut être monté automatiquement comme le floppy

j'aimerais faire deux scripts l'un qui ferait :

su
****
mount /dev/hdd4

l'autre ferait :
su
****
umount /dev/hdd4

pouvez-vous m'aider à réaliser la chose avec peut-être un raccourci de lancement ?
merci

devloop
27/12/2004, 13h35
tu pourrais éventuellement faire des scripts Expect (un langage d'interraction)

par exemple

#!/usr/bin/expect
spawn su -c "mount /dev/hdd4"
expect "Password:"
send "ton_password\n"

et pour le démontage il suffirait juste de changer mount par umount
pour avoir le langage expect il faut installer expect ainsi que le langage TCL (un tout petit langage de programmation qui peut etre utile pour apprendre à programmer).

jrev
27/12/2004, 17h42
Originally posted by devloop@lundi 27 décembre 2004 à 12:35
tu pourrais éventuellement faire des scripts Expect (un langage d'interraction)

je croyais pouvoir le faire en langage bin/bash http://www.alionet.org/style_emoticons/<#EMO_DIR#>/sad.gif
merci tout de même pour ta solution

jrev
28/12/2004, 17h13
voilà le script en bash :

#!/bin/bash
affichage=`/bin/mount | grep /dev/hdd4`
if test -z $affichage
then
mount /dev/hdd4
else
umount /dev/hdd4
exit
fi
le seul ennui c'est qu'il me donne une alarme au démontage :
./scriptmount: line 3: test: too many arguments

et que je ne sais pas lancer ce script à partir du bureau
à par ça tout va bien
merci de votre attention

devloop
28/12/2004, 18h09
c'est parce que ta variable affichage contient la ligne entière où se trouve la chaine '/dev/hdd4'
tu peux faire un
nbligne=`mount | grep /dev/hdd4 | wc -l`
qui te donnera le nombre de lignes correspondant à /dev/hdd4

jrev
29/12/2004, 11h18
Originally posted by devloop@mardi 28 décembre 2004 à 17:09
c'est parce que ta variable affichage contient la ligne entière où se trouve la chaine '/dev/hdd4'
tu peux faire un
nbligne=`mount | grep /dev/hdd4 | wc -l`
qui te donnera le nombre de lignes correspondant à /dev/hdd4
<div align='right'><{POST_SNAPBACK}> (index.php?act=findpost&pid=12529)[/quote]

Cette commande ne m'affiche rien du tout en console soit en user soit en root
pourquoi ?
faut-il la rajouter dans le script ? à quel endroit ?

merci http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif

devloop
29/12/2004, 17h30
hop ! pour remplacer ton script :


#!/bin/bash
nbligne=`mount | grep /dev/hdd4 | wc -l`
if test $nbligne != 0
then
mount /dev/hdd4
else
umount /dev/hdd4
fi

fredblue
30/12/2004, 21h18
Originally posted by jrev@lundi 27 décembre 2004 à 06:59
Bonjour,
je suis sous suse 9.1 et j'ai un lecteur ZIP100 qui ne peut être monté automatiquement comme le floppy
j'aimerais faire deux scripts l'un qui ferait :
su
****
mount /dev/hdd4
l'autre ferait :
su
****
umount /dev/hdd4

Bonjour,
Il existe des programmes qui font ce genre de chose : les ziptools.
Il existe un rpm SuSE.
Pour la SuSE 9.1 et il est sur le DVD de la SuSE 9.2 : ftp://ftp.gwdg.de/pub/suse/i386/9.1/suse/....0-105.i586.rpm (ftp://ftp.gwdg.de/pub/suse/i386/9.1/suse/i586/ziptool-1.4.0-105.i586.rpm)

ziptool -m /dev/sda4 /mnt/zip100 par exemple pour monter le zip.
ziptool -u /dev/sda4 pour le démonter
ziptool -e pour éjecter le média
etc.

Sinon, sudo est ton ami pour éviter de taper ton mot de passe root. Ce n'est pas très facile à utiliser au départ, mais c'est très utile.

Exemple :
il faut lancer la commande visudo pour éditer /etc/sudoers

Dans /etc/sudoers :

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

# Host alias specification

# User alias specification

# Cmnd alias specification

Cmnd_Alias ADSLON=/usr/local/bin/netup_adsl
Cmnd_Alias ADSLOFF=/usr/local/bin/netdown_adsl
Cmnd_Alias ARRET=/usr/local/bin/arret

# User privilege specification
root ALL=(ALL) ALL
fred ALL=NOPASSWD:ADSLON,NOPASSWD:ADSLOFF,NOPASSWD:AR RET
J'ai des scripts de connexion pour l'ADSL : /usr/local/bin/netup_adsl, /usr/local/bin/netdown_adsl, /usr/local/bin/arret

root a tous les droits bien sûr http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif
fred peut lancer /usr/bin/netup_adsl, /usr/bin/netdown_adsl, /usr/local/bin/arret sans mot de passe grâce aux paramètres NOPASSWD:ADSLON,NOPASSWD:ADSLOFF,NOPASSWD:ARRET

Ton script, zipmount ressemblera à :

#!/bin/bash
# montage du zip
mount -t fat /dev/hdd4 /mnt/zip100

tu le rends exécutable : chmod u+x zipmount
tu lui affectes l'utilisateur root : chown root:root zipmount
Tu le copies dans /usr/local/bin : répertoire habituel des scripts persos
et tu fais pareil pour le démontage.

Enfin, tu modifies le /etc/sudoers avec tes scripts


# Cmnd alias specification

Cmnd_Alias ZIPON=/usr/local/bin/zipmount

# User privilege specification
root ALL=(ALL) ALL
fred ALL=NOPASSWD:ZIPON

Il suffit ensuite de taper sudo zipmount pour monter ton média ZIP.

On peut encore aller plus loin en utilisant automount/autofs pout monter automatiquement le média, mais c'est une autre histoire http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif

jrev
03/01/2005, 14h44
Bonjour à tous,
mon scriptZip marche OK à partir d'un clic de user et je l'ai posté à la banque des scripts chez www.trustonme
facile à télécharger et à implémenter
merci de votre attention