Создание хранилища LVM с python - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь создать скрипт с python для дублирования виртуальных машин, но получаю следующую ошибку:

sudo lvcreate -L3072 -s -n TestPrestashop1-disk /dev/ls2018-vg/Prestashop-disk
Traceback (most recent call last):
  File "VMDuplicator.py", line 74, in <module>
    main()
  File "VMDuplicator.py", line 62, in main
    createLV(True, amount)
  File "VMDuplicator.py", line 37, in createLV
    output = call(s)
  File "/usr/lib/python2.7/subprocess.py", line 172, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 394, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

мой код:

#create a new LVM storage and duplicate the prestashop disk into it and name it Prestashop[i]-disk / swap
def createLV(swap, amount):
    i = 1
    if(swap == False):
        while(i < int(amount)):
            try:
                output = subprocess.check_output(["sudo lvcreate -L3072 -s -n TestPrestashop" + str(i) + " -disk /dev/ls2018-vg/Prestashop-disk"])
            except subprocess.CalledProcessError, e:
                return False
            i += 1
        return true
    elif(swap == True):
        while(i < int(amount)):
            try:
                s = "sudo lvcreate -L3072 -s -n TestPrestashop" + str(i) + "-disk /dev/ls2018-vg/Prestashop-disk"
                print(s)
                output = call(s)
                #output = subprocess.check_output(["sudo lvcreate -L3072 -s -n TestPrestashop" + str(i) + "-disk /dev/ls2018-vg/Prestashop-disk"])
                #output = subprocess.check_output([s])
                #output = subprocess.check_output(["sudo lvcreate -L3072 -s -n TestPrestashop" + str(i) + "-swap /dev/ls2018-vg/Prestashop-swap"])
            except subprocess.CalledProcessError, e:
                return False
            i += 1
        return True

Кто-нибудь знает, если этоправильный способ использовать вызов функции или подпроцесс в Python?Потому что он отлично работает с командой ls -l, например.

Я также распечатываю выполняемую команду, а именно: sudo lvcreate -L3072 -s -n TestPrestashop1-disk / dev / ls2018-vg / Prestashop-disk (в переменной S).Если я выполню команду вручную, она будет работать нормально ... Любое предложение будет с благодарностью!

1 Ответ

0 голосов
/ 05 декабря 2018

Я исправил это с помощью системного вызова os.s

...