2015-04-02 148 views
0

我想通过ForgeRock的OpenDJ通过LDAP目录,我通过ssh发送大部分命令并且它可以工作,但是我被困在一个命令中,需要在不同行中输入。这里是如何工作的,如果我在shell中键入它:通过ssh输入多行输入bash命令

ldapmodify -h server.example.com -p 1389 -w '1234' -D "cn=Directory\ Manager" -a 
dn:ou=test1,dc=example,dc=com 
objectclass:top 
objectclass:organizationalUnit 
ou:test1 

注意,有输入的四行并获得空白输入(回车)一个额外的行之后的命令结束。命令的输入是动态的并且基于变量。我怎样才能通过ssh发送这个多行命令?

这里是我要打发其他命令:

SEND_REMOTE_CMD='opendj/bin/dsconfig create-backend 
--backend-name eg1 
--set base-dn:dc=eg1,dc=com 
--set enabled:true 
--type local-db 
--hostname server.example.com 
--port 5444 
--trustAll 
--bindPassword '1234' 
--no-prompt 
--bindDN "cn=Directory\ Manager"' 

ssh [email protected] $SEND_REMOTE_CMD 

回答

1

脚本命令,并将其发送输入的多行,你可以使用一个here document

ldapmodify -h server.example.com -p 1389 -w '1234' -D "cn=Directory\ Manager" -a <<INPUT 
dn:ou=test1,dc=example,dc=com 
objectclass:top 
objectclass:organizationalUnit 
ou:test1 
INPUT 

要做到这一点通过SSH,做同样的事情,但在前面添加ssh命令。

ssh [email protected] ldapmodify -h server.example.com -p 1389 -w '1234' -D "cn=Directory\ Manager" -a <<INPUT 
dn:ou=test1,dc=example,dc=com 
objectclass:top 
objectclass:organizationalUnit 
ou:test1 
INPUT 
+0

有没有什么办法可以在这些文件中传递变量?或者如果我可以预先编写一个字符串并将其传递到这里的文件? – 2015-04-03 00:01:10

+0

是的,你可以在这里的文档中使用变量。尝试一下! – 2015-04-03 00:11:14