[libvirt] [jenkins-ci PATCH] lcitool: Use Perl to generate password hashes

Andrea Bolognani abologna at redhat.com
Thu May 17 13:09:11 UTC 2018


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 <abologna at 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




More information about the libvir-list mailing list