运行Spawn/Expect以加入Active Directory [英] Running Spawn/Expect to Join Active Directory
本文介绍了运行Spawn/Expect以加入Active Directory的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
不太确定这是否是提出这个问题的合适论坛。但我确实看到了很多特定于使用Expect/Spawn/Send的问题,所以就是这样了。我正在构建一个bash脚本以加入Active Directory域。当我尝试执行该脚本时,收到以下错误:
spawn realm join --user="foouser@foo.local" --computer-ou="OU=Foo,OU=Foo Servers,DC=foo,DC=local" FOO.LOCAL
realm: Specify one realm to join
send: spawn id exp6 not open
while executing
"send "foobarpassword
""
我不确定为什么领域会抱怨看到多个领域,但以下是我的bash脚本:
#!/bin/bash
ad_user="foouser@foo.local"
ad_password="bar"
ad_ou="OU=Foo,OU=Foo Servers,DC=foo,DC=local"
ad_domain="FOO.LOCAL"
expect <<-EOD
spawn realm join --user="$ad_user" --computer-ou="$ad_ou" "$ad_domain"
expect "Password for foouser@foo.local:"
send "$ad_password
"
interact
EOD
谁能告诉我是什么导致领域抱怨多个域?为什么Expect不起作用?
更新:我向脚本添加了更多详细信息,并收到以下错误消息:
spawn realm join --user="foouser@FOO.LOCAL" --computer-ou="OU=Foo,OU=Foo Servers,DC=foo,DC=local" FOO.LOCAL
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {883}
Gate keeper glob pattern for 'Password for foouser@FOO.LOCAL: ' is 'Password for foouser@FOO?LOCAL: '. Activating booster.
expect: does "" (spawn_id exp6) match regular expression "Password for foouser@FOO.LOCAL: "? Gate "Password for foouser@FOO?LOCAL: "? gate=no
realm: Specify one realm to join
expect: does "realm: Specify one realm to join
" (spawn_id exp6) match regular expression "Password for foouser@FOO.LOCAL: "? Gate "Password for foouser@FOO?LOCAL: "? gate=no
expect: read eof
expect: set expect_out(spawn_id) "exp6"
expect: set expect_out(buffer) "realm: Specify one realm to join
"
send: sending "bar
" to { exp6 send: spawn id exp6 not open
while executing
"send -- "bar
""
推荐答案
@komar的回答让我想起了他们的语录。仅当TCL引号是单词的第一个字符时才是特殊的(参考:https://tcl.tk/man/tcl8.6/TclCmd/Tcl.htm,规则4和6)。
例如,考虑以下交互式tclsh会话:
% proc spawn args {puts $args}
% set ad_user "foouser@foo.local"
foouser@foo.local
% set ad_password "bar"
bar
% set ad_ou "OU=Foo,OU=Foo Servers,DC=foo,DC=local"
OU=Foo,OU=Foo Servers,DC=foo,DC=local
+% set ad_domain "FOO.LOCAL"
FOO.LOCAL
%
% spawn realm join --user="$ad_user" --computer-ou="$ad_ou" "$ad_domain"
realm join --user="foouser@foo.local" {--computer-ou="OU=Foo,OU=Foo Servers,DC=foo,DC=local"} FOO.LOCAL
注意双引号是如何保护的。这表示您正在向realm
命令发送文字双引号。
因此尝试此操作:更改
spawn realm join --user="$ad_user" --computer-ou="$ad_ou" "$ad_domain"
# ......................^........................^
至
spawn realm join "--user=$ad_user" "--computer-ou=$ad_ou" "$ad_domain"
# ...............^.................^
这篇关于运行Spawn/Expect以加入Active Directory的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文