运行Sudo命令时引发TTY Sudo错误的Python脚本
我正在对这个python脚本执行SUDO命令,但抛出错误SUDO:对不起,您必须有一个tty才能运行SUDO 在终端中键入以下内容: sudo-visudo/etc/sudoers 找到这一行: 默认要求 并使用默认要求注释掉该行 保存并关闭文件: 在vi/vim中:键入“:wq”-这意味着先按:启动命令模式,然后键入wq并按Enter键。此序列将保存文件并退出编辑器运行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{
在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))