我正在尝试通过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
答案 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);