2016-05-26 53 views
7

Voglio creare uno script che genererà un keytab utilizzando ktutil. Quando si esegue lo script che voglio usare [utente] $ script.sh PASSWORDScript Kerberos Ktutil per creare tabelle di tasti

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

ktutil che ha bisogno di una password, qui voglio utilizzare l'argomento PASSWORD dall'alto. Come potrei passare la discussione della password?

risposta

9

Con 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 

uscita:

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

Una versione in Python

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

password di tubazioni per ktutil in guscio non è sicura come la password sarà visibile nella lista dei processi.

Poiché questi script Python interagiscono solo con ktutil utilizzando la libreria pexpect, è possibile implementare lo stesso come uno script di shell puro utilizzando expect.

Spero che questo aiuti.

1

Per creare il multiplo org keytabs e HBase predefinita, tubo, HDFS keytab allo stesso tempo, è possibile eseguire lo script di seguito, che ho appena creato:

#!/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