如何将PHP值传递给bash脚本?

时间:2018-10-05 02:45:11

标签: php bash telnet

我正在尝试通过bash脚本获取php session_id。

我的bash脚本中的 echo $ 1 在php中使用exec运行bash脚本后可以工作。 但是我的bash脚本 {echo“ delete $ 1”; sleep1;} | telnet localhost 12345 中的$ 1没有得到值。

.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 :(得分:0)

如果您尝试通过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);