我正在使用Fabric在远程服务器上运行命令。我在该服务器上连接的用户具有一些 sudo 权限,并且不需要密码即可使用这些权限。当 SSH'ing 进入服务器时,我可以运行sudo blah
并且命令执行而不提示输入密码。当我尝试通过 Fabric 的sudo
函数运行相同的命令时,系统会提示我输入密码。这是因为 Fabric 在使用时以以下方式构建命令sudo
:
sudo -S -p <sudo_prompt> /bin/bash -l -c "<command>"
显然,我的用户无权在/bin/bash
没有密码的情况下执行。
我已经通过使用run("sudo blah")
而不是解决了这个问题sudo("blah")
,但我想知道是否有更好的解决方案。这个问题有解决方法吗?