Προς το περιεχόμενο

Εύρεση του mount point usb συσκευής μέσω του vid και του pid.


firewalker

Προτεινόμενες αναρτήσεις

Υπάρχει τρόπος να βρούμε αν είναι mounted και αν είναι, το mount point μίας usb συσκευής (mass storage) μέσω του pid και του vid που μας δίνει το lsusb; Π.χ. έχω το

 

>Bus 002 Device 007: ID 0ea0:2168 Ours Technology, Inc. Transcend JetFlash 2.0 / Astone USB Drive

 

Γίνετε;

 

Έκανα κάτι αλχημείες με την udevadm, αλλά...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

χμ... αν τρέχεις HAL, δοκίμασε κάτι σαν:

>x=[b]2168[/b] ; hal-device | grep -A2 -i $(lsusb -v|grep -A1 $x |grep iProd|awk {'print $3'}) |grep mount_point

 

Δηλαδή βρες στα αποτελέσματα της hal-device το volume.mount_point που αντιστοιχεί, βασιζόμενος στις υπόλοιπες πληροφορίες της usb συσκευής, όπως π.χ. το ProductID.

 

Ή μπορείς να χρησιμοποιήσεις την udevadm για να κάνεις query τα device paths των /dev/sd? devices και να τα συγκρίνεις με αυτά των /dev/bus/usb/???/???:

 

>
# for a in /dev/sd?; do echo "**DEVICE:" $a; udevadm info --query=path --name $a; done
# for a in /dev/bus/usb/???/???; do echo "**DEVICE:" $a; udevadm info --query=path --name $a; done

 

 

Αλλά μήπως υπάρχει πιο απλός τρόπος; Τι θέλεις να κάνεις;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

nske, θα τα δοκιμάσω.

 

Κάτι κοιτούσα, στον udev, hal κ.τ.λ. Και μου γεννήθηκε η απορία.

 

Στην αρχή λέω εύκολο είναι. grep στο dmesg. Στο dmesg όμως δεν φαίνονται το vids και pids. Μετά άρχισα να παίζω με την udevadm.

 

Αν θέλεις να κάνει μία συσκευή mount σε συγκεκριμένο σημείο τότε ο ποιο εύκολος τρόπος είναι UUID έτσι;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για δείτε το παρακάτω (και βελτιώστε) one-liner που έφτιαξα.

 

>for file in $(ls /dev/sd*); do udevadm info -a -p `udevadm info -q path -n $file` | grep -q [color=red]0ea0[/color] && echo $file; done

 

Με κόκκινο χρώμα το pid της συσκευής που μπορεί πάλι να βρεθεί με lsusb και grep (αν και δεν νομίζω να είναι απαραίτητο αφού σε κάποιο script π.χ. μπορεί να είναι hard coded).

 

>for file in $(ls /dev/sd*); do udevadm info -a -p `udevadm info -q path -n $file` | grep -q [color=blue]2168[/color] && echo $file; done

 

Με μπλε χρώμα το vid της συσκευής που μπορεί πάλι να βρεθεί με lsusb και grep (αν και δεν νομίζω να είναι απαραίτητο αφού σε κάποιο script π.χ. μπορεί να είναι hard coded).

 

Αν τώρα συγκρίνουμε τις εξόδους των δύο εντολών και είναι ίδιες τότε σίγουρα στην /dev/xyz που μας επιστρέφει είναι η συσκευή μας. Έτσι δεν είναι;

 

Το θέμα είναι ότι μπορεί ναι επιστρέψει 2 devs. Π.χ. /dev/sdc και /dev/sdc1. Πιστεύω όμως ότι εύκολα θα φτιάχνετε αυτό.

 

Γιατί δεν κοιμάμαι τέτοια ώρα;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν είναι το μοναδικό USB Mass Storage Device επάνω στο PC, το παρακάτω θα πρέπει να δουλέψει (σε εμένα τουλάχιστον δούλεψε!):

 

>mount | grep `ls -l /dev/disk/by-id/ | grep usb | grep part | sed -e 's/^.*\///'`

 

Output:

>[parsifal@celeron ~]$ mount | grep `ls -l /dev/disk/by-id/ | grep usb | grep part | sed -e 's/^.*\///'`
/dev/sdc1 on /tmp/flashaki type vfat (rw)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωραίος, μου χάλασες το one-liner! (μη σου πω και το eye-liner :P )

 

Άντε, πάμε σε δύο γραμμές:

>FLASH_SERIAL_NO=`lsusb -vd VIDE:PID | grep iSerial | sed -e 's/^.*\ //'`
mount | grep `ls -l /dev/disk/by-id/ | grep $FLASH_SERIAL_NO | grep part1 | sed -e 's/^.*\///'` && unset FLASH_SERIAL_NO

 

 

ΥΓ: Επόμενο "quest" --> Αν το στικάκι έχει > 1 partitions...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...