创建包含需要输入和生成子 shell 的命令的脚本

创建包含需要输入和生成子 shell 的命令的脚本

我使用以下命令生成 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(如果其名称正确)。

  1. 如何使脚本调用ktutil,然后直到退出(退出子shell)之前的所有内容都成为其中的命令?

  2. 命令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 这意味着密码被错误解析,因为当我在没有脚本的情况下手动添加这些命令时它可以工作

相关内容