Как передать значение PHP в скрипт bash? - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь получить php session_id с моим bash-скриптом.

echo $ 1 в моем скрипте bash работает после запуска скрипта bash с exec в php.Но $ 1 в моем скрипте bash {echo "delete $ 1"; sleep1;} | telnet localhost 12345 не получает значение.

.php код

$output = shell_exec('./test.sh '.escapeshellarg(session_id()));

.sh код

!/bin/sh
echo $1
{ echo "delete $1"; sleep 1; } | telnet localhost 12345

Результат из $ output

fa123a3b435c0534345f453554355dasds2a3dfsf7 NOT_FOUND

1 Ответ

0 голосов
/ 05 октября 2018

Если вы пытаетесь передать команду через telnet, вам нужно посмотреть expect вместо sh, выполнив что-то вроде этого:

#!/usr/bin/expect
set sid [lindex $argv 1]
spawn telnet localhost 12345
expect "#"
send "delete $sid"

Или просто PHP отправит команду.

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$result = socket_connect($socket, "localhost", 12345);
$cmd = "delete " . session_id();
socket_write($socket, $cmd, strlen($cmd));
while ($out = socket_read($socket, 2048)) {
    echo $out;
}
socket_close($socket);
...