My English is not so good, sorry
I use ansible ad-hoc to set some user's password
Use:
python -c "from passlib.hash import sha512_crypt; import getpass; print sha512_crypt.using(rounds=5000).hash(getpass.getpass())"
generate crypted password, I got this:
$6$3k8DQBapvmIOZu4W$JMWhRB8kfqttNBI9NuRFZlPFpo6g4cb5v7obrqNaGZepxQ1AFCXdYv5IEU5lJFeHJXouyaQlJADcMtdMCjhXz0
run ansible ad-hoc
ansible localhost -m user -a "name=testuser password='$6$3k8DQBapvmIOZu4W$JMWhRB8kfqttNBI9NuRFZlPFpo6g4cb5v7obrqNaGZepxQ1AFCXdYv5IEU5lJFeHJXouyaQlJADcMtdMCjhXz0' state=present"
run ok, but in /etc/shadow
[root@localhost roles_test]# grep testuser /etc/shadow
testuser:k8DQBapvmIOZu4W:17420:0:99999:7:::
Oops, only a part of crypted password, not a full string
ansible localhost -m user -a "name=testuser password='\$6\$3k8DQBapvmIOZu4W\$JMWhRB8kfqttNBI9NuRFZlPFpo6g4cb5v7obrqNaGZepxQ1AFCXdYv5IEU5lJFeHJXouyaQlJADcMtdMCjhXz0' state=present"
works fine, but it look like not smart .
So, how to fix this?
Thx
Best Answer
This is because of
bash
variable substitution.Try: