Windows |沼泽 |无法从 php exec() 执行 plink.exe

Windows | wamp | unable to execute plink.exe from php exec()

我需要通过 PHP.

从 Windows 7 访问一台 Linux 机器

为此,我创建了包含 plink 的简单 bat (MyScript.bat) 脚本。

c:\wamp\www\abc\plink.exe user1@192.168.70.128 -pw l1c -C "df -h">11.txt

当我执行 bat 脚本时,它工作正常,即输出写入文件 11.txt

但是当我从 PHP 访问它时,创建的 11.txt 没有数据

echo exec('MyScript.bat');

此外,在浏览器中,脚本命令显示为文本。我什至尝试使用 print_r 进行显示。

"c:\wamp\www\abc\plink.exe user1@192.168.70.128 -pw l1c -C "df -h">11.txt

不为 SSH 启动外部工具。

PHP 有 native support for SSH.

或使用phpseclib:

require __DIR__ . '/vendor/autoload.php';

use phpseclib\Net\SSH2;

$ssh = new SSH2($hostname);
if ($ssh->login($username, $password))
{
    echo $ssh->exec("df -h");
}

http://phpseclib.sourceforge.net/ssh/2.0/examples.html


无论如何,如果你想使用 Plink,还要重定向标准错误输出来调试你的问题:

plink.exe .. dir > 11.txt 2>&1

Redirect Windows cmd stdout and stderr to a single file

您肯定缺少 -hostkey switch 来明确指定可信主机密钥的指纹。