linux - 使用 Fabric 运行后台命令(sudo : sorry, 你必须有一个 tty 才能运行 sudo)

标签 linux bash python-2.7 fabric

我正在使用 Fabric 在后台运行脚本。为此,我使用下面提到的函数。

def init_db(var):
    with cd("%s/scripts" % var):
            sudo (" nohup ./init_database.sh &> initdatabase.out &", pty=False)

我必须使用 pty=False 在后台执行此操作,但这会失败,因为在 sudoers 文件中提到了“默认 requiretty”选项,该选项不允许我在没有 pty 的情况下从 Fabric 运行 sudo。

我无法一直编辑每台服务器的 sudoers 文件,任何人都可以给我一些其他解决方案。

谢谢, 伊姆兰·泰利

最佳答案

警告:这不安全!不要使用这个!

Fabric 支持在 shell 命令中给出 sudo 密码:

fab --password=password [...]

但是,这意味着密码可能存储在 shell 历史记录、日志文件和其他随机位置中,任何有权访问该框的人都可以轻松检索它们。

执行此操作的安全方法是,正如您所提到的,设置 sudoers 来完全允许您期望脚本执行的操作,而无需密码即可执行其他操作。

关于linux - 使用 Fabric 运行后台命令(sudo : sorry, 你必须有一个 tty 才能运行 sudo),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24990769/

相关文章:

linux - 有没有更好的方法来简化这个 IF 语句

Bash 脚本无法识别设备 ID?

linux - 如何在内核模块中禁用高速缓存

python - 如何通过 python-gsmmodem 接收短信

ruby - 如何将 Ruby 脚本变成 bash 命令?

bash - 从本地机器运行远程脚本

python - 将 2 个嵌套的字典值组合成一个 Python

django - django bulk_create 查询中的外键关系?

python - 如何让 Python 知道用户连接的 Wifi?

c - gcc编译dpdk报错: no such instruction vextracti128