如何在 Eclipse PyDev 项目中运行主管命令而不要求输入密码?

如何在 Eclipse PyDev 项目中运行主管命令而不要求输入密码?

所以我有以下代码应该检查是否安装了 npm 包:

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

shell 函数是 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]}

并使用像这样的 get_npm_command :

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 + " "

正如你所看到的,最终的命令是:

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

换句话说,我创建了一个名为 npm 的用户来安装全局 npm 软件包,因为不久前 npm 建议不要使用 root 权限才能使用它。他们改变了主意,但我打算坚持使用我在网上找到的有人提出的解决方案。

无论如何,gksu 会提示我输入此命令的密码,但 npm 并不意味着有密码,因此我希望能够在不要求输入密码的情况下运行此命令。

我尝试过以下方法:

/etc/sudoers.d/arkos.sudo

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

..但这似乎没有任何效果。

相关内容