将在此作序说明这是不良做法但无论如何,我都被要求将 svc 帐户凭据存储在脚本中,该脚本将存在于虚拟机模板的 vRA 中。这不是我的选择,但由于用例,无法有用户输入。我目前正在尝试使用expect发送svc帐户密码。我看到提示,脚本完成时没有错误,但没有加入域。我不确定它是否正在发送设置为变量的凭据...
#!/bin/sh
yum -y install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients python3-policycoreutils expect
OU="OU=Computers,OU=Object Staging, DC=test,DC=acme,DC=com"
echo "OU selected is: $OU "
export OU
expect -c '
set OU "Computers,OU=Object Staging, DC=test,DC=acme,DC=com"
set PASS bugsBunny
spawn sudo realm join --user=svc-domainJoin --computer-ou="\$OU" test.acme.com ;
expect "Password for svc-domainJoin:"; send {"$PASS"\r\"; interact } ;
'
realm list
另外,我没有看到领域列表的输出;当我在没有预期(和用户输入)的情况下运行此脚本时;这个命令确实执行了
答案1
你不需要expect
。这些命令直接从 STDIN 接受密码:
OU="Computers,OU=Object Staging, DC=test,DC=acme,DC=com"
PASS=bugsBunny
printf "%s\n" "$PASS" |sudo realm join --user=svc-domainJoin --computer-ou="\$OU" test.acme.com
也许你之前不需要这个反斜杠OU
printf "%s\n" "$PASS" |sudo realm join --user=svc-domainJoin --computer-ou="$OU" test.acme.com