2016-05-26 21 views
7

Ich möchte ein Skript, das die a Keytab mit Ktutil erstellen erstellen. Wenn Sie das Skript ausführen möchte ich [user] $ script.sh PASSWORTSkript Kerberos Ktutil, um Keytabs

#script.sh 
echo "addent -password -p PRINCIPAL -k 1 -e aes256-cts-hmac-sha1-96" | ktutil 

ktutil als benötigt ein Passwort verwenden, hier möchte ich von oben das Kennwortargument verwenden. Wie würde ich das Passwort Argument übergeben?

Antwort

9

Mit GNU bash:

user="PRINCIPAL" 
pass="topsecret" 

printf "%b" "addent -password -p $user -k 1 -e aes256-cts-hmac-sha1-96\n$pass\nwrite_kt $user.keytab" | ktutil 

printf "%b" "read_kt $user.keytab\nlist" | ktutil 

Ausgang:

 
slot KVNO Principal 
---- ---- --------------------------------------------------------------------- 
    1 1       [email protected] 
1

Eine Version in Python

https://github.com/Tagar/stuff/blob/master/keytab.py

Rohr Passwort in der Schale ktutil ist nicht sicher, wie Passwort sein sichtbar in der Liste der Prozesse.

Da diese Python-Skripte nur mit ktutil interagieren und die pexpect-Bibliothek verwenden, ist es möglich, dasselbe wie ein reines Shell-Skript mit expect zu implementieren.

Hoffe, das hilft.

1

Um die mehrere Orgs keytabs und Standard hbase, Rohr zu erstellen, KEYTAB hdfs zugleich Sie das unten stehende Skript ausführen können, die ich gerade erstellt haben:

#!/bin/bash 
read -p "Please enter space-delimited list of ORGS to create: " NEW_ORGS 

clear 
#echo "################# CREATE KEYTABS ############################" 
#echo "" 
kdestroy 

for i in $NEW_ORGS 
do 
    printf "%b" "addent -password -p ${i} -k 1 -e aes256-cts-hmac-sha1-96\n${i}\nwrite_kt ${i}.keytab" | ktutil 

    printf "%b" "read_kt ${i}.keytab\nlist" | ktutil 

done 
echo "" 


if [ ! -e /home/eip/.keytabs/hbase.keytab ] 
then 
     printf "%b" "addent -password -p hbase -k 1 -e aes256-cts-hmac-sha1-96\nhbase\nwrite_kt hbase.keytab" | ktutil 

     printf "%b" "read_kt hbase.keytab\nlist" | ktutil 
fi 

exit 0