Python 当 运行 SUDO 命令时脚本抛出 TTY Sudo 错误
Python Script throwing TTY Sudo error when running SUDO Command
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))
我正在对此 python 脚本执行 SUDO 命令,但抛出错误 "sudo: sorry, you must have a tty to run sudo"。
- 在终端中输入:
sudo visudo /etc/sudoers
- 找到这一行:
默认要求
并使用“#”注释掉该行,即#Defaults requiretty。
- 保存并关闭文件:
在 vi/vim 中:键入“:wq”——这意味着先按 : 激活命令模式,然后键入 wq 并按 Enter。此序列将保存文件并退出编辑器。
在 nano 中:按 Ctrl+X,然后按 y 确认您要保存更改。然后在不更改默认文件名的情况下按 Enter。
尝试使用
运行 您的脚本
sudo -S python {script_name} {args}
。
在某些情况下它对我有用。
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))
我正在对此 python 脚本执行 SUDO 命令,但抛出错误 "sudo: sorry, you must have a tty to run sudo"。
- 在终端中输入:
sudo visudo /etc/sudoers
- 找到这一行:
默认要求
并使用“#”注释掉该行,即#Defaults requiretty。
- 保存并关闭文件:
在 vi/vim 中:键入“:wq”——这意味着先按 : 激活命令模式,然后键入 wq 并按 Enter。此序列将保存文件并退出编辑器。
在 nano 中:按 Ctrl+X,然后按 y 确认您要保存更改。然后在不更改默认文件名的情况下按 Enter。
尝试使用
运行 您的脚本sudo -S python {script_name} {args}
。
在某些情况下它对我有用。