Автор Тема: bash script - mount all devices  (Прочетена 2136 пъти)

v01d

  • Напреднали
  • *****
  • Публикации: 39
  • Distribution: Slackware
  • Window Manager: XFCE 4.6rc1
    • Профил
bash script - mount all devices
« -: Aug 11, 2009, 15:49 »
Здравейте, някого има ли решение което да монтира автоматично
( като се стартира дадения скрипт )  всички възможни hard disks/usb-та и т.н ?
« Последна редакция: Aug 11, 2009, 15:52 от v01d »
Активен

ntrance

  • Напреднали
  • *****
  • Публикации: 696
    • Профил
Re: bash script - mount all devices
« Отговор #1 -: Aug 11, 2009, 15:56 »
Добавиги в  /etc/fstab
Активен

v01d

  • Напреднали
  • *****
  • Публикации: 39
  • Distribution: Slackware
  • Window Manager: XFCE 4.6rc1
    • Профил
Re: bash script - mount all devices
« Отговор #2 -: Aug 11, 2009, 16:16 »
Въпроса е, че този скрипт ще се стартира на различни машини и всеки път ще са различни партишъните.

Примерно на веднъш ще има: /dev/sda1, /dev/sda2, /dev/sdb1, а друг път ще бъдат съвсем различни.
Активен

ntrance

  • Напреднали
  • *****
  • Публикации: 696
    • Профил
Re: bash script - mount all devices
« Отговор #3 -: Aug 11, 2009, 16:24 »
Е ти хептен мързеливата я караш :)   
Активен

c2h5oh

  • Напреднали
  • *****
  • Публикации: 675
  • Distribution: CentOS 7.4 Fedora 28
  • Window Manager: Plasma Desktop
    • Профил
Re: bash script - mount all devices
« Отговор #4 -: Aug 11, 2009, 17:08 »
Е списъка на партишъните не можеш ли да го вземеш от fdisk -l
Активен

v01d

  • Напреднали
  • *****
  • Публикации: 39
  • Distribution: Slackware
  • Window Manager: XFCE 4.6rc1
    • Профил
Re: bash script - mount all devices
« Отговор #5 -: Aug 11, 2009, 23:10 »
Ми пробвах сам да си напиша скрипта но стигнах до задънена улица.
Искарвам списака от fdisk -l после чрез grep,awk и т.н. го докарвам до

#tmpfile /tmp/disks.txt
/dev/sdaX
/dev/sdbX
# end of file

и проблема ми е при цикъла, че като ги взема от списака не мога да ги монтирам защото примерно цикъла прави следното:
mount -t auto /dev/sdaX <и тук не знам как да го взема на ново къде да го монтира>
Активен

eniac111

  • Напреднали
  • *****
  • Публикации: 263
  • Distribution: Debian / Ubuntu
  • Window Manager: Enlightenment DR16 / KDE4
    • Профил
    • WWW
Re: bash script - mount all devices
« Отговор #6 -: Aug 12, 2009, 00:26 »
http://ubuntuforums.org/showthread.php?t=587134

Ето го на С :D
Код
GeSHi (C):
  1. #include <stdio.h>
  2. int main(){
  3. char str[] = "/dev/sda5";
  4. printf("%c\n",str[8]);
  5. return 0;
  6. }
« Последна редакция: Aug 12, 2009, 00:54 от eniac111 »
Активен

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: bash script - mount all devices
« Отговор #7 -: Aug 12, 2009, 01:00 »
Ако правилно съм разбрал - в tmpfile има нещо подобно:
/dev/sda1
/dev/sda2
/dev/sda3
/dev/hda
/dev/hdb

Ако е така - скрипта е лесен.

Май ми намирисва на ново дистро.  :)
Активен

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: bash script - mount all devices
« Отговор #8 -: Aug 12, 2009, 01:43 »
Код
GeSHi (Bash):
  1. mara@OVNI:~$ basename /dev/sda5
  2. sda5
  3. mara@OVNI:~$ filename='/dev/sda5'
  4. mara@OVNI:~$ echo ${filename##/*/}
  5. sda5
  6. mara@OVNI:~$ echo "/mnt/${filename##/*/}"
  7. /mnt/sda5
  8. mara@OVNI:~$
  9.  
  10. ##Конкретно обхождане на списък
  11. mara@OVNI:~$ files=" /dev/sda1 dev/sda2 /dev/sda3 "
  12. mara@OVNI:~$ for file in $files
  13. > do
  14. > echo "Device $file mounts to /mnt/${file##/*/}"
  15. > done
  16. Device /dev/sda1 mounts to /mnt/sda1
  17. Device dev/sda2 mounts to /mnt/dev/sda2
  18. Device /dev/sda3 mounts to /mnt/sda3
  19. ##Или с basename
  20. mara@OVNI:~$ for file in $files; do echo "Device $file mounts to /mnt/$(basename $file)"; done
  21. Device /dev/sda1 mounts to /mnt/sda1
  22. Device dev/sda2 mounts to /mnt/sda2
  23. Device /dev/sda3 mounts to /mnt/sda3
  24. mara@OVNI:~$
  25.  
[_]3
Ето и линк с някои такива непопулярни врътки:
http://www.linuxjournal.com/article/8919
« Последна редакция: Aug 12, 2009, 01:50 от bop_bop_mara »
Активен

v01d

  • Напреднали
  • *****
  • Публикации: 39
  • Distribution: Slackware
  • Window Manager: XFCE 4.6rc1
    • Профил
Re: bash script - mount all devices
« Отговор #9 -: Aug 12, 2009, 01:52 »
Ако правилно съм разбрал - в tmpfile има нещо подобно:
/dev/sda1
/dev/sda2
/dev/sda3
/dev/hda
/dev/hdb

Ако е така - скрипта е лесен.

Май ми намирисва на ново дистро.  :)
Да същото има в tmpfile.
Днес ще помъча още малко... явно нещо се насмитам и не мога да се справя
с този скрипт.
Активен

v01d

  • Напреднали
  • *****
  • Публикации: 39
  • Distribution: Slackware
  • Window Manager: XFCE 4.6rc1
    • Профил
Re: bash script - mount all devices
« Отговор #10 -: Aug 12, 2009, 01:56 »
@bop_bop_mara: Много благодаря. Това ми свърши чудесна работа.
Активен

v01d

  • Напреднали
  • *****
  • Публикации: 39
  • Distribution: Slackware
  • Window Manager: XFCE 4.6rc1
    • Профил
Re: bash script - mount all devices
« Отговор #11 -: Aug 12, 2009, 02:21 »
Ако му трябва на някой ~ ето го в завършен и работещ вид:
Цитат
#!/bin/bash
# AM::Auto Mount
# version 0.1
#                         
#
tmpfile="/tmp/xam.tmpfile"

       fdisk -l | grep /dev/ | awk '{print$1}' | grep dev > $tmpfile


for file in $(cat $tmpfile)
do
        mkdir "/${file##/*/}"
        mount -t auto "$file" "/${file##/*/}"
        echo "Device $file is mounted to /${file##/*/}"

done


# remove temporary files

rm $tmpfile

« Последна редакция: Aug 12, 2009, 02:22 от v01d »
Активен

bop_bop_mara

  • Напреднали
  • *****
  • Публикации: 2433
  • Distribution: Debian Testing
  • Window Manager: LXDE
  • Cute and cuddly
    • Профил
Re: bash script - mount all devices
« Отговор #12 -: Aug 12, 2009, 12:37 »
Пал заповядай! Само бях забравила да кажа, че това с pattern-matching-а май е bash-изъм, така че с друг шел трябва да се ползва примерно basename или тежката артилерия sed/awk.
Още нещо, не устоях на тръпката и си поиграх да посъкратя скрипта:
Код
GeSHi (Bash):
  1. #!/bin/bash
  2.  
  3. for device in `fdisk -l | grep -o '/dev/[a-z]\+[0-9]\+'`
  4. do
  5.    mountpoint="/${device##/*/}"
  6.    mkdir "$mountpoint"
  7.    mount -t "$device" "$mountpoint"
  8.    echo "Device $device is mounted to $mountpoint"
  9. done

 [_]3
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
bash script за праверяване на процес
Общ форум
sys7em 8 3897 Последна публикация Aug 09, 2005, 15:39
от
Bash script и извеждането му
Web development
martien 3 3115 Последна публикация Nov 02, 2006, 11:55
от morbid_viper
Bash script за следене съдържанието на директория
Общ форум
mishot 9 4106 Последна публикация Mar 05, 2008, 00:38
от maniac
Bash script
Общ форум
vikktor 14 5187 Последна публикация Mar 04, 2009, 23:38
от CappY
Помощ за bash script
Общ форум
LinuxFanUNIX 4 2709 Последна публикация May 15, 2009, 23:05
от LinuxFanUNIX