2016-04-14 1 views
0

Я пытаюсь подключить файловую систему nas с помощью команды python subprocess.popen, я запускаю скрипт для монтирования файловой системы. некоторые, как сценарий не может смонтировать файловую систему.Не удается смонтировать файловую систему с использованием подпроцесса python popen

Мой сценарий:

self.mountSrc = subprocess.Popen('mount'+' '+ self.src_m[l], shell=True) 

print self.mountSrc 

if self.mountSrc==0: 

    print "Mounted filesystem:"+ self.src_m[l] 

Выход из моего сценария:

Mounting: Source Mount Point:/rsyncTesting/source/share1 
Starting:[................................................... ] Done! 

mount: can't find /rsyncTesting/source/share1 in /etc/fstab or /etc/mtab 
1 

Я обновляю путь файловой системы в/и т.д./Fstab перед выполнением команды монтирования. Также я могу смонтировать файловую систему вручную как пользователь root из командной строки.

slcnas888: /export/rsyncScriptProject_Source/rsyncShare1/.zfs/snapshot/SR_0000-0000000_Refresh_rsyncShares_RSYNC_PROJ_exp13April16/rsyncTesting/источник/share1

+1

Не могли бы вы добавить командную строку, которую вы использовали бы с терминала? Учитывая, что код имеет дело только с переменными, а некоторые из показанных результатов не имеют ничего общего с фрагментом кода, это поможет вам получить решение, которое вы затем сможете адаптировать. –

+2

'mount: не удается найти/rsyncTesting/source/share1 в/etc/fstab' - он говорит, что все это действительно ... – isedev

+0

Из командной строки linux я запускаю команду: «mount/rsyncTesting/source/share1», это работает отлично вручную. Я добавляю запись файловой системы в файл/etc/fstab, и она отлично работает, но с подпроцессом python она терпит неудачу. – Kalyan

ответ

0

Я просто изменил команду mount включить имя точки монтирования,
т.е. mount /absolute-nas-fs-path /mount-point а не только mount /absolute-nas-fs-path.

Я заметил, что в Linux, при добавлении записи в файл /etc/fstab, работает mount <mount point path> прекрасно работает из командной строки, но в питоне подпроцесса мы должны передать как файловую систему абсолютного пути, а также точки монтирования в команде параметр.

# self.src_fs[l] is an item from my list of filesystem paths. 
# self.src_m[l] is an item from my list of mount points. 
self.mountSrc = subprocess.Popen('mount ' + self.src_fs[l] + ' ' + self.src_m[l], shell = True) 
print self.mountSrc 
if self.mountSrc == 0: 
    print "Mounted filesystem:" + self.src_m[l]