We claim to be using Python 2 at the moment: however, we rely
on crypt.mksalt(), which was introduced in Python 3 and has
only been backported to Python 2 in RHEL and Fedora, so the
script will only work on those operating systems.

We could move to Python 3, but the CI nodes are running on a
CentOS 7 machine, where it can't be installed without pulling
in third-party repositories and dealing with awkward naming;
moreover, Ansible itself is still tied to Python 2, so we
would be requiring both to be available.

Perl to the rescue! The script ends up being only marginally
more verbose and obscure as a result, the indentation is
significantly better, and it should finally run on pretty
much any platform.

Signed-off-by: Andrea Bolognani <abolo...@redhat.com>
---
 guests/lcitool | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/guests/lcitool b/guests/lcitool
index 5b2efb9..568e52c 100755
--- a/guests/lcitool
+++ b/guests/lcitool
@@ -18,11 +18,11 @@ die() {
 hash_file() {
     PASS_FILE="$1"
 
-    python2 -c "
-import crypt
-password = open('$PASS_FILE', 'r').read().strip()
-print(crypt.crypt(password,
-      crypt.mksalt(crypt.METHOD_SHA512)))"
+    perl -le '
+        my @chars = ("A".."Z", "a".."z", "0".."9");
+        my $salt; $salt .= $chars[rand @chars] for 1..16;
+        open(my $handle, "'"$PASS_FILE"'"); my $pass = <$handle>; chomp $pass;
+        print crypt("$pass", "\$6\$$salt\$");'
 }
 
 # yaml_var FILE VAR
-- 
2.17.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to