firewalker Δημοσ. 24 Μαρτίου 2009 Share Δημοσ. 24 Μαρτίου 2009 Υπάρχει τρόπος να βρούμε αν είναι 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, αλλά... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 25 Μαρτίου 2009 Share Δημοσ. 25 Μαρτίου 2009 χμ... αν τρέχεις 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 Αλλά μήπως υπάρχει πιο απλός τρόπος; Τι θέλεις να κάνεις; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 25 Μαρτίου 2009 Μέλος Share Δημοσ. 25 Μαρτίου 2009 nske, θα τα δοκιμάσω. Κάτι κοιτούσα, στον udev, hal κ.τ.λ. Και μου γεννήθηκε η απορία. Στην αρχή λέω εύκολο είναι. grep στο dmesg. Στο dmesg όμως δεν φαίνονται το vids και pids. Μετά άρχισα να παίζω με την udevadm. Αν θέλεις να κάνει μία συσκευή mount σε συγκεκριμένο σημείο τότε ο ποιο εύκολος τρόπος είναι UUID έτσι; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 25 Μαρτίου 2009 Share Δημοσ. 25 Μαρτίου 2009 Ναι, έτσι πιστεύω. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 25 Μαρτίου 2009 Μέλος Share Δημοσ. 25 Μαρτίου 2009 Για δείτε το παρακάτω (και βελτιώστε) 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. Πιστεύω όμως ότι εύκολα θα φτιάχνετε αυτό. Γιατί δεν κοιμάμαι τέτοια ώρα; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 25 Μαρτίου 2009 Share Δημοσ. 25 Μαρτίου 2009 Αν είναι το μοναδικό 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) Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 25 Μαρτίου 2009 Μέλος Share Δημοσ. 25 Μαρτίου 2009 parsifal, αυτό δουλεύει. Νομίζω όμως ότι διαφορετικά flash μπορεί να εμφανίζονται με το γενικό usb-USB_BAR-0:0-part1 και ας έχουν διαφορετικό pid:vid. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
parsifal Δημοσ. 25 Μαρτίου 2009 Share Δημοσ. 25 Μαρτίου 2009 Ωραίος, μου χάλασες το one-liner! (μη σου πω και το eye-liner ) Άντε, πάμε σε δύο γραμμές: >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... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
firewalker Δημοσ. 25 Μαρτίου 2009 Μέλος Share Δημοσ. 25 Μαρτίου 2009 Γιατί το κινητό μου κάθε φορά που το συνδέω έχει διαφορετικό UUID; Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
alkisg Δημοσ. 26 Μαρτίου 2009 Share Δημοσ. 26 Μαρτίου 2009 Άσχετο: η ls δεν χρειάζεται. > for f in /dev/sd?; do echo $f; done ή for f in /dev/sd??; do echo $f; done ή for f in /dev/sd*; do echo $f; done ή for f in /dev/disk/by-uuid/*; do echo $f; done Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.