我正在尝试使用--initial-password-prompt
预填充env.password
,但远程服务器返回了一些奇怪的东西。假设我正在以testuser的身份cat
一个根用户拥有、文件权限为600的文件。我调用sudo('cat /home/testuser/test.txt')
,并得到以下反馈:
[testuser@testserver] sudo: cat /home/testuser/test.txt
[testuser@testserver] out: cat: /home/testuser/test.txt: Permission denied
[testuser@testserver] out:
Fatal error: sudo() received nonzero return code 1 while executing!
Requested: cat /home/testuser/test.txt
Executed: sudo -S -p 'sudo password:' -u "testuser" /bin/bash -l -c "cat /home/testuser/test.txt"
这个命令是将提示符输入回到输入中吗?我尝试使用sudo()
和pty=False
看看是否与伪终端有关,但没有成功。
奇怪的是:调用run('sudo cat /home/testuser/test.txt')
并在不使用--initial-password-prompt
的情况下调用fab
会从远程传回密码提示符,输入密码后一切正常。
当然,运行ssh -t testuser@testserver 'sudo cat /home/user/test.txt'
会提示输入密码,并正确返回文件内容。我的服务器shell配置有问题吗,还是我使用sudo()
时出了问题?
最终,我可能会设置一个无需密码的部署用户和受限命令的sudo
。如果可能的话,我想解决这个问题。我正在运行Ubuntu 14.10 VPS,如果有关的话。