我使用以下命令生成 kerberos 的密钥表:
ktutil
=================================
add_entry -password -p <domain> -k 1 -e arcfour-hmac
add_entry -password -p <domain> -k 1 -e aes256-cts-hmac-sha1-96
list
wkt path/myKeytab.keytab
exit
==================================
ls -al path/myKeytab.keytab
klist -ekt /path/myKeytab.keytab
kinit -kt path/myKeytab.keytab <domain>
klist
我想为此创建 scrott,它以密码作为参数并生成密钥表。
我有两个问题:
ktutil
生成需要命令的子 shell(如果其名称正确)。
如何使脚本调用
ktutil
,然后直到退出(退出子shell)之前的所有内容都成为其中的命令?命令
add_entry -password -p <domain> -k 1 -e arcfour-hmac
需要用户输入,如何将输入传递给脚本?
$1 > add_entry -password -p <domain> -k 1 -e arcfour-hmac
或者我用谷歌搜索的类似技巧不起作用。
根据我的研究,这个脚本应该有效:
password="$1"
printf "%b" "add_entry -password -p <domain> -k 1 -e arcfour-hmac" | ktutil
printf "%b" "$password"
printf "%b" "add_entry -password -p <domain> -k 1 -e aes256-cts-hmac-sha1-96" | ktutil
printf "%b" "$password"
printf "%b" "list" | ktutil
printf "%b" "wkt path/myKeytab.keytab" | ktutil
printf "%b" "exit" | ktutil
它在某种程度上有效,但是下一行"add_entry -password -p <domain> -k 1 -e aes256-cts-hmac-sha1-96"
的密码提示不会注入该值。printf
我尝试将其更改为
password="$1"
echo "$password" | printf "%b" "add_entry -password -p <domain> -k 1 -e arcfour-hmac" | ktutil
echo "$password" | printf "%b" "add_entry -password -p <domain> -k 1 -e aes256-cts-hmac-sha1-96" | ktutil
printf "%b" "list" | ktutil
printf "%b" "wkt myKeytab.keytab" | ktutil
printf "%b" "exit" | ktutil
然后我尝试用一个命令进行路由:
password="$1"
printf "%b" "add_entry -password -p <domain> -k 1 -e arcfour-hmac\n
$password\n
add_entry -password -p <domain> -k 0 -e aes256-cts-hmac-sha1-96\n
$password\n
list\n
wkt myKeytab.keytab\n
exit" | ktutil
ls -al myKeytab.keytab
klist -ekt myKeytab.keytab
kinit -kt smyKeytab.keytab <domain>
klist
这导致:
ktutil: <password>
ktutil: Unknown request "<password>". Type "?" for a request list.
这意味着密码被错误解析?但是当我使用时:
password="$1"
echo "$1" | printf "%b" "add_entry -password -p <domain> -k 1 -e arcfour-hmac\n
add_entry -password -p <domain> -k 0 -e aes256-cts-hmac-sha1-96\n
list
wkt myKeytab.keytab
exit" | ktutil
ls -al myKeytab.keytab
klist -ekt myKeytab.keytab
kinit -kt smyKeytab.keytab <domain>
klist
脚本完成,但 kinit 抱怨:kinit:Preauthentication failed while getting initial credentials
这意味着密码被错误解析,因为当我在没有脚本的情况下手动添加这些命令时它可以工作