입력이 필요한 명령이 포함된 스크립트를 만들고 하위 쉘을 생성합니다.

입력이 필요한 명령이 포함된 스크립트를 만들고 하위 쉘을 생성합니다.

다음 명령을 사용하여 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명령이 필요한 하위 쉘을 생성합니다(이름이 올바른 경우).

  1. 어떻게 스크립트 호출을 만들고 ktutil종료(하위 쉘 종료)까지 모든 것이 그 안에 명령이 될 수 있습니까?

  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 스크립트 없이 수동으로 이 명령을 추가하면 작동하기 때문에 비밀번호가 잘못 구문 분석되었음을 의미합니다.

관련 정보