2016-05-26 14 views
7

Я хочу создать скрипт, который будет генерировать keytab с помощью ktutil. При выполнении сценария я хочу использовать [пользователь] $ script.sh PAsswordСкрипт Kerberos Ktutil для создания keytabs

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

Ktutil чем нужен пароль, здесь я хочу использовать ПАРОЛЬ аргумент сверху. Как я могу пройти проверку пароля?

ответ

9

С GNU Баш:

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 

Выход:

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

версия в Python

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

трубопровода пароля ktutil в оболочке не безопасна, как пароль будет видимый в списке процессов.

Поскольку эти скрипты Python взаимодействуют только с ktutil, используя библиотеку pexpect, можно реализовать то же самое, что и чистый сценарий оболочки, используя expect.

Надеюсь, это поможет.

1

Чтобы создать множественные Orgs keytabs и по умолчанию HBase, труба, HDFS Keytab в то же время вы можете запустить ниже сценарий, который я только что создали:

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