运行 一个 bash 命令,通过 ssh 多行输入

Running a bash command with multiple lines of input via ssh

我正在尝试通过 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

请注意,有四行输入,命令在获得额外的一行空白输入(carriage-return)后结束。命令的输入是动态的并且基于变量。如何通过 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

要编写命令脚本并向其发送多行输入,您可以使用 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