示例#1
0
def mount_file(image, mnt):
    '''Monta un archivo (image) en un punto de montaje o directorio (mnt).

    Montará dicho archivo en loopback y el sistema de ficheros se identificará
    por la extensión (*.cloop, *.squashfs, *.iso). En caso de no tener ninguna
    se supondrá que es iso9660.
    '''
    import os
    from kmodules import is_module

    if os.getuid() != 0:
        echo_debug('No ha podido montar %s, necesita ser root' % image,
                   'ERROR')
        return False

    # Busca la extension del archivo
    name = os.path.basename(image)
    ext = name.split('.')[-1]

    if ext == 'squashfs':
        if is_module('squashfs') or do_debug('modprobe squashfs'):
            if do_debug('mount -r -o loop -t squashfs %s %s' % (image, mnt)):
                return True
    elif ext == 'cloop':
        if is_module('cloop') or do_debug('modprobe cloop'):
            for i in range(0, 7):
                if do_debug('mount -r -o loop=/dev/cloop%d -t iso9660 %s %s' %
                            (i, image, mnt)):
                    return True
    else:  # Si no es ni .cloop, ni .squashfs, supone iso9660
        if do_debug('mount -r -o loop -t iso9660 %s %s' % (image, mnt)):
            return True

    return False
示例#2
0
def rmdir(dir):
    '''rmdir(dir) -> bool
    
    Borra un directorio y su contenido.
    '''
    import os

    if not os.path.isdir(dir):
        echo_debug('%s no es un directorio' % dir)
        return False

    names = os.listdir(dir)
    for name in names:
        name_path = joinpath(dir, name)
        if os.path.exists(name_path):
            if os.path.islink(name_path):
                try:
                    os.remove(name_path)
                except OSError, error:
                    echo_debug('rm -f %s' % name_path)
                    echo_debug(error, 'ERROR')
            elif os.path.isdir(name_path):
                rmdir(name_path)
            else:
                try:
                    os.remove(name_path)
                except OSError, error:
                    echo_debug('rm -f %s' % name_path)
                    echo_debug(error, 'ERROR')
示例#3
0
def cp(source, dest):
    import shutil
    try:
        shutil.copy2(source, dest)
    except IOError, error:
        echo_debug('cp -p %s %s' % (source, dest))
        echo_debug(error, 'ERROR')
        return False
示例#4
0
def ln(source, dest):
    import os
    try:
        #FIXME: Poner dest por defecto (.)
        os.symlink(source, dest)
    except OSError, error:
        echo_debug('ln -s %s %s' % (source, dest))
        echo_debug(error, 'ERROR')
        return False
示例#5
0
def cp_dev(source, dest):
    echo_debug('Copiando dispositivos desde %s hasta %s ...' % (source, dest),
               'MSG')
    # Compruebo que existe dest y que es un directorio
    if not mkdir(dest):
        return False

    if do_debug('cp -a %s/* %s/' % (source, dest)):
        return True
    return False
示例#6
0
def umount(mnt):
    import os

    if os.getuid() != 0:
        echo_debug('No ha podido montar %s, necesita ser root' % image,
                   'ERROR')
        return False

    if do_debug('umount %s' % mnt):
        return True
    return False
示例#7
0
def cp_s(source, dest, deep=1):
    import os

    # Compruebo que existe dest y que es un directorio
    if not mkdir(dest):
        return False

    try:
        names = os.listdir(source)
    except OSError, error:
        echo_debug('cp_ln %s %s' % (source, dest))
        echo_debug(error, 'ERROR')
        return False
示例#8
0
def cp_a(source, dest):
    import os

    # Compruebo que existe dest y que es un directorio
    if not mkdir(dest):
        return False

    try:  # Saca el listado de archivos y directorios de source
        names = os.listdir(source)
    except OSError, error:
        echo_debug('cp_dir %s %s' % (source, dest))
        echo_debug(error, 'ERROR')
        return False
示例#9
0
def cp_f(sorce, dest):
    import os

    if os.path.exists(dest):
        if os.path.isdir(dest):
            rmdir(dest)
        else:
            try:
                os.remove(dest)
            except OSError, error:
                echo_debug('cp -f %s %s' % (source, dest))
                echo_debug(error, 'ERROR')
                return False
示例#10
0
def mkdir(dir):
    import os, os.path
    try:
        if os.path.exists(dir):
            if not os.path.isdir(dir):
                os.remove(dir)
                os.mkdir(dir)
        else:  # Si no existe lo crea
            head, tail = os.path.split(dir)
            if not os.path.isdir(head):
                if not head.startswith('/') or not head.starstwith('.'):
                    head = './' + head
                mkdir(head)
            os.mkdir(dir)
    except OSError, error:
        echo_debug('mkdir %s' % (dir))
        echo_debug(error, 'ERROR')
        return False
示例#11
0
                except OSError, error:
                    echo_debug('rm -f %s' % name_path)
                    echo_debug(error, 'ERROR')
            elif os.path.isdir(name_path):
                rmdir(name_path)
            else:
                try:
                    os.remove(name_path)
                except OSError, error:
                    echo_debug('rm -f %s' % name_path)
                    echo_debug(error, 'ERROR')

    try:
        os.rmdir(dir)
    except OSError, error:
        echo_debug('rmdir %s' % dir)
        echo_debug(error, 'ERROR')
        return False
    return True


def cp_f(sorce, dest):
    import os

    if os.path.exists(dest):
        if os.path.isdir(dest):
            rmdir(dest)
        else:
            try:
                os.remove(dest)
            except OSError, error: