Detected Root’s certificate expiration date: 2032 Mar 10 Detected today’s date: 2024 Apr 20 Exporting and generating STS certificate
Status : Success Using config file : /tmp/vmware-fixsts/certool.cfg Status : Success
Enter password for administrator@vsphere.local: Highest tenant credentials index : 1 Exporting tenant 1 to /tmp/vmware-fixsts
./fixsts.sh: line 155: ldapsearch: command not found Tenant 1 not found
Highest trusted cert chains index: 1 Exporting trustedcertchain 1 to /tmp/vmware-fixsts
./fixsts.sh: line 189: ldapsearch: command not found Trusted cert chain 1 not found
Applying newly generated STS certificate to SSO domain ldap_add: No such object (32) additional info: parent (cn=TrustedCertificateChains,cn=vsphere.local,cn=Tenants,cn=IdentityManager,cn=Services,dc=vsphere,dc=local) not found, ((MDB_NOTFOUND: No matching key/data pair found)(cn=trustedcertificatechains,cn=vsphere.local,cn=tenants,cn=identitymanager,cn=services,dc=vsphere,dc=local)) adding new entry “cn=TenantCredential-1,cn=vsphere.local,cn=Tenants,cn=IdentityManager,cn=Services,dc=vsphere,dc=local”
adding new entry “cn=TrustedCertChain-1,cn=TrustedCertificateChains,cn=vsphere.local,cn=Tenants,cn=IdentityManager,cn=Services,dc=vsphere,dc=local”
Replacement finished - Please restart services on all vCenters and PSCs in your SSO domain IMPORTANT: In case you’re using HLM (Hybrid Linked Mode) without a gateway, you would need to re-sync the certs from Cloud to On-Prem after following this procedure
从您提供的日志和错误信息来看,存在多个问题需要解决。这些问题包括:
bash 中的坏替换(bad substitution)错误: 这是由于 ${DOMAIN^^} 语法在当前环境中不被支持。${VAR^^} 语法是用于将变量内容转换为大写的Bash 4.0及以上版本特性。
${DOMAIN^^}
${VAR^^}
找不到 ldapsearch 命令: 您的脚本需要 ldapsearch 命令,但在运行环境中未找到。需要安装这个命令。
ldapsearch
bad substitution
DOMAIN^^ 是将 DOMAIN 环境变量内容转换为大写的操作。为了兼容性,可以使用 tr 命令替代:
DOMAIN^^
DOMAIN
tr
administrator@$(echo ${DOMAIN} | tr '[:lower:]' '[:upper:]')
因此,您需要在脚本中找到第 60 行,并将其替换为:
ldapsearch 是 OpenLDAP 软件包的一部分。在大多数 Linux 发行版中,可以通过包管理器安装:
Debian/Ubuntu:
sh sudo apt-get update sudo apt-get install ldap-utils
Red Hat/CentOS:
sh sudo yum install openldap-clients
SUSE:
sh sudo zypper install openldap2-client
您还需要确保脚本中的其他部分没有类似的问题,特别是与路径和命令相关的部分。
假设 fixsts.sh 是您的脚本,以下是修改后的部分脚本示例:
fixsts.sh
# 在第 60 行附近 # 将以下内容 # administrator@${DOMAIN^^} # 替换为 administrator@$(echo ${DOMAIN} | tr '[:lower:]' '[:upper:]') # 确保 ldapsearch 已安装,并正确配置 PATH command -v ldapsearch >/dev/null 2>&1 || { echo >&2 "ldapsearch command not found. Please install it."; exit 1; } # 处理 ldapsearch 命令相关部分,确保使用正确的路径和参数 # 示例:确保 ldapsearch 命令存在 if ! command -v ldapsearch &> /dev/null then echo "ldapsearch could not be found" exit 1 fi # 其余脚本部分保持不变
确保脚本具有可执行权限:
sh chmod +x fixsts.sh
执行脚本:
sh ./fixsts.sh
确保脚本在运行时不会再出现 bad substitution 和 ldapsearch: command not found 错误。如果仍然出现其他错误,请根据错误消息进一步排查和解决。
ldapsearch: command not found
通过这些修改,您的脚本应该能够在 Windows 开机时自动启动并执行预期的操作,同时避免常见的替换和命令未找到的问题。