Script attach de hotplug
#1

Je propose qu'on partage ici diverses astuces pour le script "attach" qui permet des manipulations lors de l'insertion d'un périphérique USB.

Je commence avec une partie relative aux imprimantes, pour pouvoir l'utiliser directement :

Code :
case "${DEVCLASS}" in
                0)
                        if [ -n "$(echo $DEVNAME | grep -o "ugen[0-9]")" ]; then
                                addr=$(usbdevs -vd | \
                                        grep -B4 $DEVNAME | \
                                        head -n1 | \
                                        cut -d' ' -f 2)
                                chown _cups /dev/${DEVNAME}.* $addr
                        fi
                ;;

...
Oui, c'est du bricolage, mais ça fonctionne.

Sinon, une partie pour montrer mon disque dur de musiques en un point particulier :
Code :
2)
        MOUNTROOT="/mnt"
        diskname="$(/sbin/disklabel $DEVNAME 2>&1 | sed -n '/^label: /s/^label: //p')"
        case $diskname in
                "HITACHI HTS72323" )
                        # ZIC DD
                        mkdir -p -m 1777 $MOUNTROOT/ZIC
                        mount -o nodev,nosuid,noatime /dev/"$DEVNAME"i $MOUNTROOT/ZIC
                ;;
Répondre
#2

Bonne initiative ! Wink

Concernant ta gestion de l'imprimante USB avec Cups, étant donné ce qu'il est dit dans le fichier pkg-readme, que j'ai reproduit dans notre page wiki cups, tu as dû modifié le kernel ?

Tu voudrais bien me publier une sortie complète de la commande ''usbdevs -vd'' ; histoire de voir s'il ne serait pas faisable d'obtenir l'info recherchée, en moins de commande ! :p

Hummm, un point de montage en mode 1777... tu ne peux pas faire un point de montage directement en 0700, avec tes droits utilisateurs dessus, au lieu de les offrir à tout le monde ?!

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#3

Pour monter un périphérique clé USB, disque dur USB en utilisant hotplug-diskmount - qui a l'avantage de fonctionner autant en tty* qu'en mode graphique !

Dans un premier temps, je l'oblige à monter le répertoire là où je désire, et non pas celui par défaut '/vol', c'est-à-dire dans ''/mnt/$USER"...

je "reproduis" ainsi le comportement habituel sous Linux, mais dans "/mnt" puisque nous n'avons pas "/media" <= ce qui peut très bien être fait, aussi... Wink

Je ne veux pas de ce "/vol"... et comme "/media" n'existe pas officiellement... j'utilise logiquement "/mnt" puisque c'est normalement le point de montage légitime pour les périphériques "extérieur" !

Dans un second temps, il le monte là où désiré avec les seuls droits utilisateurs (user, group) liés à l'utilisateur que je suis, avec pour permissions interdisant l’accès à tout autre.
Code :
#!/bin/sh
#
# /etc/hotplug/attach

DEVCLASS=$1
DEVNAME=$2
LOGIN="UserId"

        2)
                /usr/local/libexec/hotplug-diskmount -d /mnt/$LOGIN init
                /usr/local/libexec/hotplug-diskmount -d /mnt/$LOGIN attach -u "$LOGIN" -g "$LOGIN" -m 0700 "$DEVNAME"
        ;;

Pour monter le réseau, lors de la connexion physique d'un périphérique réseau USB, tel un dongle USB Wifi, un adaptateur USB/Ethernet...
Code :
        3)
                # network devices; requires hostname.$DEVNAME
                sh /etc/netstart $DEVNAME
        ;;
esac
Merci @eol de nous avoir fourni l'astuce Big Grin Elle est fichtrement bien pratique !

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#4

(29-10-2017, 11:17:12)PengouinBSD a écrit :  .
Code :
#!/bin/sh
#
# /etc/hotplug/attach

DEVCLASS=$1
DEVNAME=$2
LOGIN="UserId"

        2)
                /usr/local/libexec/hotplug-diskmount -d /mnt/$LOGIN init
                /usr/local/libexec/hotplug-diskmount -d /mnt/$LOGIN attach -u "$LOGIN" -g "$LOGIN" -m 0700 "$DEVNAME"
        ;;
Si je comprends bien, tu modifies les permissions du dossier au moment du montage ?

Ça serait un bon compromis entre laisser /mnt trop permissif (risque de remplir la partition racine /) ou à défaut impossible d'accés en écriture.
Pour l'instant,  n'utilisant pas hotplug, je passe par doas et un dossier à moi dans mon dossier perso.
Répondre
#5

En effet, je fixe les permissions au moment du montage, pour être le plus restrictif.

Ensuite, le point de montage, que tu spécifies avec l'option '-d', peut être là où tu le veux vraiment.
Cela peut être :
- /media/MOUNTNAME
- ~/MOUNTNAME

Bref, là où tu veux explicitement, au doux nom de montage que tu veux, ET avec les droits explicites que tu veux Wink

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#6

Et quelqu'un a fait un script detach ?
Répondre
#7

(19-11-2017, 20:17:27)22decembre a écrit :  Et quelqu'un a fait un script detach ?

J'utilise celui du man qui démonte un disque lorsqu'on le débranche :
Code :
#!/bin/sh

DEVCLASS=$1
DEVNAME=$2

case $DEVCLASS in
        2)
                /sbin/umount "/mnt/$DEVNAME"
                rm -r "/mnt/$DEVNAME"
                exit 0
        ;;
esac
exit 0
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)