比如我们要注入一个文件来修改root密码,其中文件内容为:
echo "#!/bin/bash\npassword root <<EOF\nYzp@2016\nYzp@2016\nEOF" | base64
得到一个字符串
IyEvYmluL2Jhc2gNCiANCnBhc3N3ZCByb290IDw8RU9GDQpZenBAMjAxNQ0KWXpwQDIwMTUNCkVPRg
然后创建虚拟机时制定user-data 为该字符串
nova boot --user-data "IyEvYmluL2Jhc2gNCiANCnBhc3N3ZCByb290IDw8RU9GDQpZenBAMjAxNQ0KWXpwQDIwMTUNCkVPRg" --nic net-id=xxx --image xxx --flavor xxx xxx
通过查看mysql中nova数据库的instances表,我们可以看到这个字符串在user-data那一项,通过decode我们可以还原字符:
import base64
strg = "IyEvYmluL2Jhc2gNCiANCnBhc3N3ZCByb290IDw8RU9GDQpZenBAMjAxNQ0KWXpwQDIwMTUNCkVPRg"
base64.b64decode(strg + '=' * (-len(strg) % 4))
'#!/bin/bash\r\n \r\npasswd root <<EOF\r\nYzp@2016\r\nYzp@2016\r\nEOF'