如何将ip地址存储到变量中并将其传递给shell命令?

时间:2016-08-04 16:13:02

标签: php html html5 shell

$ip=$_SERVER['REMOTE_ADDR'];
$mac=shell_exec('arp-a'.'$ip')
echo $mac;

我想拿一个机器的接收IP地址并将其传递给shell命令它运行良好如果我手动提供ipaddress但是通过变量它不能正常工作。如果手动提供ip就可以正常工作,例如: mac = shell_exec('arp -a 192.168.0.32');

2 个答案:

答案 0 :(得分:2)

你忘了空格:

$mac=shell_exec('arp-a'.'$ip')
                    ^-^--here

所以你正在执行的命令实际上是

arp-a127.0.0.1

而不是

arp -a 127.0.0.1

请注意'不会插入变量,因此您将文字$ip个字符传递给shell。你根本不需要引号:

$mac = shell_exec('arp -a ' . $ip);

答案 1 :(得分:0)

你的$ ip在引号中,所以你传递了一个实际的" $ ip"字面意思。

试试这个

<?php
namespace Concrete\Package\SomePackage;

class Controller extends \Concrete\Core\Package\Package
{

    public function on_start()
    {
        $app = \Core::make('app');
        $app->make('director')->addEventListener(
            'on_before_render', 
            function() use ($app) {
                $session = $app->make('session');
                $flashBag = $session->getFlashBag();

                if (!$flashBag->has('my-custom-data')) {
                    $dataGetter = $app->make('YourCustomDataGetterClass');
                    $flashBag->set('my-custom-data', $dataGetter->getData());
                }
            }
        );
    }

}