fabric 密码
每次运行fabric的时候,它都会要求输入管理员密码。有没有办法把这个密码自动发送过去,以便于自动化操作呢?
fab staging test
8 个回答
51
你还可以为每个主机单独设置密码。这一点我之前没想到,所以我把它分享出来,方便有需要的人。
from fabric import env
env.hosts = ['user1@host1:port1', 'user2@host2.port2']
env.passwords = {'user1@host1:port1': 'password1', 'user2@host2.port2': 'password2'}
Fabric会把用过的密码存储在一个叫做env.passwords的字典里。它用完整的主机字符串作为这个字典的键,把密码作为值。如果你在执行任何任务之前自己设置好这个字典,Fabric就不会再询问你密码了。
61
我知道你问的是关于密码的事,但其实配置系统让你可以在不输入密码的情况下使用SSH(也就是远程连接)会更好。
要做到这一点,你需要在本地机器上执行以下步骤:
ssh-keygen
,然后一直按回车接受默认设置(如果没有特别原因的话)cat ~/.ssh/id_rsa.pub
,然后复制显示的那串密钥
接下来,在远程机器上:
mkdir ~/.ssh && chmod 700 ~/.ssh
,这一步是创建一个文件夹并设置权限touch ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
,这一步是创建一个文件并设置权限- 把刚才复制的密钥粘贴到
authorized_keys2
文件里
从现在开始,你的远程机器就“信任”你的本地机器了,这样你就可以直接登录而不需要输入密码,真方便。
51
输入fab -h
可以查看所有可用的选项,你也可以在这里阅读相关内容。
特别是,我引用一下:
-p PASSWORD, --password=PASSWORD
这个选项会把你输入的密码设置为环境变量中的密码;这样在进行SSH连接或者调用sudo程序时,就会默认使用这个密码。