【发布时间】:2018-07-17 01:43:25
【问题描述】:
我在 StackOverflow 和其他地方找到了解决这个问题的各种答案,但是,所提供的答案都没有解决我的问题。
我已经尝试过echo 018020 | underclock.sh 以及sudo visudo 方法。上面提到的都没有奏效。即使使用michallal ALL = NOPASSWD: /home/michalall/PycharmProjects/Mining/underclock.sh,我仍然会收到以下消息 - sudo no tty present and no askpass program specified:
这是我的代码:
import os
ubu_path = '/home/michalall'
os_path = ubu_path
project_path = os_path + '/PycharmProjects/Mining/'
os.system('chmod +x ' + project_path + 'nvidia_settings')
os.system('cd ' + project_path + 'nvidia_settings/')
os.system('sudo ' + project_path + 'underclock.sh')
os.system('echo 018020 | underclock.sh')
编辑:
当我跑步时:
os.system('underclock.sh')
os.system('echo 018020 | underclock.sh')
os.system('echo 018020 | sudo -S underclock.sh')
我分别得到以下输出:
sh: 1: underclock.sh: not found.
sudo no tty present and no askpass program specified
sudo no tty present and no askpass program specified
【问题讨论】:
-
你试过在
root用户下运行你的python脚本吗? -
您通常应该避免在脚本中调用
sudo。相反,如果用户想提升其权限,请让用户在您的脚本上调用sudo。脚本应该只使用它们已经拥有的任何权限。 -
@JohnKugelman 我同意。我唯一遇到过这样的问题是当我的脚本通过 SSH 在远程机器上执行需要 root 权限的事情时。
-
@JohnKugelman,你能解释一下吗?如果脚本需要 sudo 运行,那么让用户选择在不使用 sudo 的情况下运行它的意义何在?使用 sudo 完成每个命令而不是只使用少数需要它的命令有什么好处?
-
在脚本中嵌入
sudo命令意味着脚本可以部分执行,然后尝试运行sudo并失败。sudo旨在成为一个交互式工具。如问题所示,它可能难以在脚本中间提示输入密码。让用户在前面显式调用sudo会加载权限提升。用户可能希望将选项传递给sudo,例如-A以弹出图形密码提示或-u以切换到更高权限但仍非root 用户。
标签: python linux shell executable