phptelnet против phpseclib - PullRequest
       12

phptelnet против phpseclib

0 голосов
/ 25 августа 2010

Я пытаюсь подключиться к серверу unix из php и выполнить .exe (язык C).Ранее я использовал phptelnet для этой цели, но теперь мне нужно перейти на phpseclib из-за проблем с безопасностью.У меня был 100% успех, когда я использую phptelnet.Я мог бы запускать некоторые внешние программы, такие как «C», с аргументами в качестве входных данных в php-скрипте.В phptelnet я использую

$telnet->DoCommand('cd public_html');
$telnet->DoCommand('cd abc');
$telnet->DoCommand('demo.exe');
$telnet->DoCommand("$inputs", $result);
echo $result;

Это прекрасно работает.Но сейчас я использую phpseclib.Я мог бы подключиться к серверу Unix через ssh и запускать программы, в которых входные данные жестко запрограммированы в программе.Я использую

echo $ssh->exec('./demo.exe');

Теперь проблема заключается в том, как обеспечить ввод данных в программу.Как я могу использовать exec () для принятия аргументов в качестве входных данных.Например, demo.exe - это программа для добавления двух чисел.поэтому я могу сказать

 echo $ssh->exec("./demo.exe, '10 20'");

Также, как я могу использовать exec () для выполнения нескольких строк кода за одно выполнение.Я немного смущен.Будем благодарны за любые замечания по этому вопросу.

Заранее спасибо.

1 Ответ

0 голосов
/ 25 августа 2010

Если у вас есть несколько вариантов команд, которые вы будете использовать:

 $ssh->exec("./demo.exe '10' '20'");

Оставьте запятую и заключите в нее отдельные параметры. Или преобразовать список с помощью $opts = implode(" ", array_map("escapeshellarg", $opts)).

Если вы используете соединение SSH1, вы можете одновременно выполнять только одну команду. Если вы подключаетесь к серверу Windows (как это выглядит), у вас не может быть двух команд в строке.

Только для сервера BSD / Linux вы можете использовать:

 $ssh->exec("cmd1 ; cmd2");
...