【发布时间】:2013-05-28 08:25:53
【问题描述】:
我在通过 php 通过 ssh2_exec 传递以下命令时遇到问题,命令是
./prog cat <<EOF
a a a
b b
c
d d
EOF
问题是第一行'cat <<EOF',php将“EOF”作为一个特殊的词,我希望'<<EOF'作为普通字符串传递。
有没有可能的解决方案?
谢谢你的建议
【问题讨论】:
标签: 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'作为普通字符串传递。
有没有可能的解决方案?
谢谢你的建议
【问题讨论】:
标签: php string ssh escaping eof
我不懂PHP,所以我会给出几个可能的解决方案。
只是不要使用 EOF。
./prog cat <<WHATEVER
a a a
b b
c
d d
WHATEVER
不要使用 here-document,通过 printf 管道提供标准输入。
printf 'a a a \nb b \nc \nd d \n' | ./prog cat
确定是PHP provides some way for you to provide the contents of stdin directly to ssh2_exec 或类似的命令?
【讨论】:
<?php
echo "a <<EOF b";
显示“a <<EOF b”。如果 PHP 使用
Idk...也许这是 PECL 的 ssh2 扩展的问题。或者您在另一端使用的外壳可能存在问题。无论哪种情况,我都建议您使用phpseclib, a pure PHP SSH2 implementation。如果它是 PECL 扩展的问题,可以修复它,如果它是 shell 的问题,您可以启用日志记录并查看通过 SSH 连接到底发生了什么。
【讨论】: