用于 activeDirectory 加入的 bash 脚本;使用expect绕过密码输入面临问题

用于 activeDirectory 加入的 bash 脚本;使用expect绕过密码输入面临问题

将在此作序说明这是不良做法但无论如何,我都被要求将 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

相关内容