Como executo um comando de supervisor em um projeto do Eclipse PyDev sem que seja solicitada uma senha?

1

Então eu tenho o seguinte código que deve verificar se um pacote npm está instalado:

def is_installed(name, as_global=True):
    # Returns whether NPM package is installed. 
    s = shell(_get_npm_command("ls -p --depth 0", as_global))
    match = re.search(r'\b%s\b' % (name), s['stdout'])
    if match:
        return True
    return False

Com a função shell sendo um wrapper subprocess.Popen ():

def shell(c, stdin=None, env={}):
    # Simplified wrapper for shell calls to subprocess.Popen()
    environ = os.environ
    environ["LC_ALL"] = "C"
    for x in env:
        environ[x] = env[x]
    if not "HOME" in environ:
        environ["HOME"] = "/root"
    p = subprocess.Popen(shlex.split(c),
            stderr=subprocess.PIPE,
            stdout=subprocess.PIPE,
            stdin=subprocess.PIPE,
            env=environ)
    data = p.communicate(stdin)
    return {"code": p.returncode, "stdout": data[0],
        "stderr": data[1]}

e com um get_npm_command assim:

def _get_npm_command(command, as_global, path=None):
    # returns npm command
    if as_global:
        return _get_global_npm_command(command)
    else:
        return _get_local_npm_command(command, path)

def _get_global_npm_command(command):
    # returns global npm command
    os.chdir(NPM_PATH)
    return "gksu -u npm 'npm " + command + " -g'"

def _get_local_npm_command(command, install_path):
    # returns local npm command
    if install_path:
        os.chdir(install_path)
    return "npm " + command + " "

Como você pode ver, o comando eventual é:

gksu -u npm npm ls -p --depth 0

Em outras palavras, criei um usuário chamado npm para instalar pacotes npm globais, porque não há muito tempo o npm recomendava que não se deveria usar privilégios de root para usá-lo. Eles mudaram de ideia, mas pretendo continuar com essa solução que encontrei na Web e que surgiu com alguém.

De qualquer forma, o gksu me pede uma senha para este comando, mas o npm não tem uma senha e eu gostaria de poder executar este comando sem receber uma senha.

Eu tentei o seguinte:

/etc/sudoers.d/arkos.sudo

npm     ALL=(ALL) NOPASSWD: /usr/bin/npm

.. mas isso não parece ter qualquer efeito.

    
por Folatt 13.06.2016 / 05:01

0 respostas