通过ssh运行带有多行输入的bash命令

时间:2015-04-02 23:19:50

标签: linux bash ssh centos

我正在通过ForgeRock的OpenDJ尝试LDAP目录,我通过ssh发送大部分命令并且它可以工作,但是我遇到了一个需要输入不同行的命令。如果我在shell中输入它,它的工作原理如下:

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 user@server.example.com $SEND_REMOTE_CMD

1 个答案:

答案 0 :(得分: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 user@host.name 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