【问题标题】:Running a bash command with multiple lines of input via ssh通过 ssh 运行具有多行输入的 bash 命令
【发布时间】:2015-06-08 01:31:18
【问题描述】:

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

【问题讨论】:

    标签: linux bash ssh centos


    【解决方案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
    

    【讨论】:

    • 有没有办法在 Here Documents 中传递变量?或者如果我可以预先编写一个字符串并将其传递到这里的文档中?
    • 是的,您可以在此处的文档中使用变量。试试看!
    猜你喜欢
    • 1970-01-01
    • 2014-04-07
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    相关资源
    最近更新 更多