通过<

时间:2013-05-28 08:25:54

标签: php string ssh escaping eof

我无法通过php通过ssh2_exec传递以下命令,命令是

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

问题是第一行'cat <<EOF',php将“EOF”作为特殊单词,我想将'<<EOF'传递为普通字符串。

这有什么可能的解决方案吗?

感谢您的建议

2 个答案:

答案 0 :(得分:0)

我不懂PHP,所以我会提供一些可能的解决方案。

  1. 只是不要使用EOF。

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

    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或类似命令?

答案 1 :(得分:0)

<?php
echo "a <<EOF b";

显示“a <<EOF b”。如果PHP正在使用&lt;“做任何”特殊“的事情。

Idk ...也许这是PECL的ssh2扩展的一个问题。或者可能是你在另一端使用的shell的问题。在任何一种情况下,我都建议您使用phpseclib, a pure PHP SSH2 implementation。如果PECL扩展的问题是解决它,如果它是shell的问题,你可以启用日志记录,看看SSH连接到底发生了什么。