运行Sudo命令时引发TTY Sudo错误的Python脚本

运行Sudo命令时引发TTY Sudo错误的Python脚本,python,python-3.x,python-2.7,python-requests,sudo,Python,Python 3.x,Python 2.7,Python Requests,Sudo,我正在对这个python脚本执行SUDO命令,但抛出错误SUDO:对不起,您必须有一个tty才能运行SUDO 在终端中键入以下内容: sudo-visudo/etc/sudoers 找到这一行: 默认要求 并使用默认要求注释掉该行 保存并关闭文件: 在vi/vim中:键入“:wq”-这意味着先按:启动命令模式,然后键入wq并按Enter键。此序列将保存文件并退出编辑器 在nano中:按Ctrl+X,然后按y确认要保存更改。然后按Enter键而不更改默认文件名。尝试使用 sudo-spython{

我正在对这个python脚本执行SUDO命令,但抛出错误SUDO:对不起,您必须有一个tty才能运行SUDO

在终端中键入以下内容: sudo-visudo/etc/sudoers

找到这一行: 默认要求

并使用默认要求注释掉该行

保存并关闭文件: 在vi/vim中:键入“:wq”-这意味着先按:启动命令模式,然后键入wq并按Enter键。此序列将保存文件并退出编辑器


在nano中:按Ctrl+X,然后按y确认要保存更改。然后按Enter键而不更改默认文件名。

尝试使用

sudo-spython{script_name}{args}


在某些情况下,它对我很有效。

你试过ssh-t吗user@example.comsudo命令/path/to/file,即使用-t开关?是的,我也尝试了使用“-t”,但出现了相同的错误。您是否可以将输出粘贴到:sudo cat/etc/sudoers | grep requiretydefaults requirety已更改,以便能够在没有tty的情况下使用sudo。见上面的要求。默认值:领事!它起作用了。。你真是天才。。有没有办法在注释行中这样做,因为我不应该在生产环境中更改该文件。一些Linux发行版已将此作为默认配置。RedHat最近刚从Fedora和REHL删除了这个。如果在生产环境中发生错误,我建议您发布另一个问题,并提供有关您的生产环境的详细信息,以便该问题将对其他正在寻找解决方案的人有所帮助。
def execute_cli_locally(command, timeout=CLI_EXECUTION_TIMEOUT,
                    return_output_as_string=True)

try:
    logger.info("Executing commands locally :\n%s", command)
    ssh = Popen(command, shell=True, stdout=PIPE, stderr=PIPE)

    stdout, stderr = ssh.communicate(command)

    if ssh.returncode == 0:
        stdout = stdout.strip()
        if len(stdout) != 0:
            logger.info("Stdout :\n%s", stdout)
        return stdout

    else:
        logger.error("Local command execution failed. Error :\n%s" % stderr)
        print_response_and_exit(STATUS_FAILED,
                                "Local commands [%s] execution failed. Error :\n%s" %
                                (command, stderr))