【问题标题】:phpseclib implemetation to connect to unix boxphpseclib 实现连接到 unix 盒子
【发布时间】:2013-01-13 00:53:31
【问题描述】:
<?php
    include('Net/SSH2.php');
    define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);

    $ssh = new Net_SSH2('hostip');
    if (!$ssh->login('user', 'passwd')) {
        exit('Login Failed');
    }
    $cmd="bdf|awk '{print $NF}'";
    $ssh->exec($cmd,$output,$exit_code);
    echo $output;
    echo "Exit code: $exit_code";
    foreach($output as $row){
        list($mount,$usage) = preg_split('//', $row, PREG_SPLIT_NO_EMPTY);
        echo "$mount $usage";
    }
?>

我正在尝试使用phpseclibssh2 类运行上述代码。 这会返回一个错误

警告:在第 13 行的 C:\wampserverdox\aargh.php 中为 foreach() 提供的参数无效

我哪里错了。 我想格式化exec() 函数返回的输出。

【问题讨论】:

  • foreach 循环需要一个数组,显然$output 它不是一个。在foreach 循环之前执行var_dump($output); 以检查它是什么,以及它里面有什么。
  • $output 变量打印什么?
  • 把 exit 放在 $output 之后看看你会得到什么。
  • 退出代码:1array(0) { } 这是它返回的内容。
  • 您需要转义 $NF 以便将其发送给 exec

标签: php unix ssh phpseclib


【解决方案1】:

来自 Net_SSH2:

function exec($command, $block = true) 

exec() 似乎没有使用你认为的参数...

【讨论】:

  • 只是添加到这个.. OP 似乎(错误地)假设 $ssh->exec() 采用与 PHP 的 exec 函数相同的参数:php.net/function.exec
猜你喜欢
  • 2011-11-25
  • 2019-08-31
  • 2015-02-06
  • 2015-09-08
  • 2017-05-25
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多