Мне нужно получить доступ к машине Linux из Windows 7 через PHP.
Для этого я создал простую летучую мышь (MyScript.bat
) скрипт, содержащий plink.
c:\wamp\www\abc\plink.exe [email protected] -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 [email protected] -pw l1c -C "df -h">11.txt
Не запускайте внешний инструмент для SSH.
PHP имеет встроенная поддержка SSH.
Или использовать phpseclib:
require_once("Net/SSH2.php");
require_once("Crypt/RSA.php");
$ssh = new Net_SSH2($hostname);
if ($ssh->login($username, $password))
{
echo $ssh->exec("df -h");
}
Увидеть http://phpseclib.sourceforge.net/ssh/examples.html
В любом случае, если вы хотите использовать Plink, перенаправьте также стандартный вывод ошибок для устранения вашей проблемы:
plink.exe .. dir > 11.txt 2>&1
Увидеть Перенаправить Windows cmd stdout и stderr в один файл.
Вы наверняка пропустите -hostkey
переключатель явно указать отпечаток доверенного хост-ключа.
Других решений пока нет …