【问题标题】:Pass <<EOF as string in PHP ssh在 PHP ssh 中将 <<EOF 作为字符串传递
【发布时间】:2013-05-28 08:25:53
【问题描述】:

我在通过 php 通过 ssh2_exec 传递以下命令时遇到问题,命令是

./prog cat <<EOF
a a a 
b b 
c 
d d 
EOF

问题是第一行'cat &lt;&lt;EOF',php将“EOF”作为一个特殊的词,我希望'&lt;&lt;EOF'作为普通字符串传递。

有没有可能的解决方案?

谢谢你的建议

【问题讨论】:

    标签: php string ssh escaping eof


    【解决方案1】:

    我不懂PHP,所以我会给出几个可能的解决方案。

    1. 只是不要使用 EOF。

      ./prog cat <<WHATEVER
      a a a 
      b b 
      c 
      d d 
      WHATEVER
      
    2. 不要使用 here-document,通过 printf 管道提供标准输入。

      printf 'a a a \nb b \nc \nd d \n' | ./prog cat
      
    3. 确定是PHP provides some way for you to provide the contents of stdin directly to ssh2_exec 或类似的命令?

    【讨论】:

    • 谢谢Dave,我好像是用这个方法做的,会继续贴出测试结果
    • 谢谢Dave,我可以通过php成功运行命令,非常感谢,请允许我把这个问题改成“已解决”
    【解决方案2】:
    <?php
    echo "a <<EOF b";
    

    显示“a &lt;&lt;EOF b”。如果 PHP 使用

    Idk...也许这是 PECL 的 ssh2 扩展的问题。或者您在另一端使用的外壳可能存在问题。无论哪种情况,我都建议您使用phpseclib, a pure PHP SSH2 implementation。如果它是 PECL 扩展的问题,可以修复它,如果它是 shell 的问题,您可以启用日志记录并查看通过 SSH 连接到底发生了什么。

    【讨论】:

    • 百万谢谢!我尝试使用 dave 的方法,使用 '\n' 和 pipline '|',它似乎按我的预期工作,我会继续尝试这个方法,谢谢所有兄弟!
    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2022-01-18
    • 2015-01-02
    相关资源
    最近更新 更多