[udev] mount hdd storage to /media/hdd using udev.
[vuplus_openvuplus_3.0] / meta-openvuplus / recipes-core / udev / udev-182 / automount.py
1 #!/usr/bin/python
2 import os
3 import sys
4
5 def readFile(fn):
6         return open(fn, "r").read()
7
8 def isMountedByDevName(devName):
9         ismounted = False
10         mounts = file('/proc/mounts').read().split('\n')
11         for x in mounts:
12                 if not x.startswith('/'):
13                         continue
14
15                 devpath, mountpoint  = x.split()[:2]
16                 if devpath == devName:
17                         ismounted = True
18                         break
19
20         return ismounted
21
22 def automount():
23         kernel = sys.argv[1]
24         dev_kernel = os.path.join("/dev/", kernel)
25         dev_index = os.path.basename(kernel)[-1]
26         dev_base = os.path.basename(kernel)[:-1]
27         removable=readFile("/sys/block/%s/removable" % dev_base).strip() == "1"
28         dev_real_path = os.path.realpath("/sys/block/%s/device" % dev_base)
29         external = False
30         if (dev_real_path.find("pci") != -1) or (dev_real_path.find("ahci") != -1) or (dev_real_path.find("sata") != -1):
31                 external = True
32
33         if isMountedByDevName(dev_kernel):
34                 return
35
36         deviceType = "hdd"
37 #       if removable or external:
38         if removable:
39                 deviceType = "usb"
40
41         if dev_index == "1":
42                 mountPoint = "/media/" + deviceType
43
44                 if os.path.ismount(mountPoint):
45                         mountPoint = "/media/" + kernel
46
47                 elif not os.access(mountPoint, os.F_OK):
48                         os.mkdir(mountPoint)
49                         if not os.access(mountPoint, os.F_OK):
50                                 mountPoint = "/media/" + kernel
51
52         else:
53                 mountPoint = "/media/" + kernel
54
55         if not os.access(mountPoint, os.F_OK):
56                 os.mkdir(mountPoint)
57                 if not os.access(mountPoint, os.F_OK):
58                         return
59
60         if os.system("mount -t auto -o noatime %s %s" % (dev_kernel, mountPoint)):
61                 os.rmdir(mountPoint)
62         else:
63                 if mountPoint == "/media/hdd":
64                         defaultMoviePath = "/media/hdd/movie"
65                         if not os.access(defaultMoviePath, os.F_OK):
66                                 os.mkdir(defaultMoviePath)
67
68 if __name__=="__main__":
69         automount()