【问题标题】:php ssh read output issuephp ssh 读取输出问题
【发布时间】:2015-06-12 04:58:03
【问题描述】:

我的 php ssh 脚本的输出有问题。我有这个脚本

    $ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX); 
$ssh->write("$domainpath\n");
$ssh->setTimeout(5);
$ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX); 
$ssh->write("ls \n");
$domainlist = $ssh->read(NET_SSH2_READ_REGEX); 
echo $domainlist;

问题不在于没有推出任何东西,而在于它的呈现方式。

ls [0m[00;33myourdomain.net[0m [00;33mdefault.domain[0m [00;33mtestdomain.com[0m [m[root@vps web]#

如您所见,我从服务器返回的文件夹看起来很奇怪而且很糟糕,无法加载到数组中。

我如何获得干净漂亮的输出。还是这个控制面板相关?如果有这种情况并且我可以更改它,我可以使用爆炸来清理它。

谢谢

【问题讨论】:

  • 这很可能是一个损坏的ls 别名。听起来ls 被别名为ls --color=always 而不仅仅是ls --color 或类似名称。您可以尝试ls --color=never 来弥补这一点,但要修复别名/等。可能是更正确的方法。
  • @EtanReisner 如果使用系统或者他需要直接通过 SSH 登录,则更改别名可能不是首选。通过 PHP 命令不指定颜色或仅更改 PHP 用户的别名似乎是最好的。如果我必须通过 SSH 登录,我知道我喜欢我的颜色。
  • 但我怎样才能让它不把它放到我的 php 脚本中。类似的东西我可以从输出中去掉它。
  • colornever 无法正常工作,但最好摆脱完整的命令行。
  • @ToothlessRebel 不,ls --color=always 的别名完全不正确。正如这个问题所证明的那样,这不是一个理智的默认设置。隐式 (--color) 或显式 (--color=auto) 使用“自动”是一个非常更好的默认别名,因为它不会破坏这些类型的使用,并且仍然允许在任一方向手动覆盖,手动添加--color=never--color=always

标签: php linux ssh centos


【解决方案1】:

那些奇怪的字符是 ANSI 转义码。您可以使用File_ANSI 将它们过滤掉,如下所述:

http://phpseclib.sourceforge.net/ssh/examples.html#top

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-09
    • 2020-04-18
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多