首页 > PHP教程 > php开发知识文章

php 获取linux/ubuntu命令执行结果的方法

本文主要介绍了php 获取linux/ubuntu命令执行结果的方法,欢迎大家的学习。

php执行linux命令

我们经常需要监测web服务器运行状态,就需要通过php来调用shell命令来获取所需的信息。 

简单介绍一下几个常用相关函数。

exec()

exec($command, array &output = null, &return_var = null)有三个参数。

执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array 可以得到完整的结果,

方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。

只有指定了第二 个参数时,才可以用第三个参数,用来取得命令执行的状态码。

shell_exec()

shell_exec($cmd)只有一个参数,它会获取$cdm执行之后所有的数据。 

system()

获取命令执行的结果

popen()

popen函数的执行流程:

1、使用pipe系统调用创建一个管道 

2、创建一个新的进程,将拷贝标准输入或者标准输出到文件描述符。 

3、关闭pipe返回的文件描述符。 

4、调用execve系统调用来执行命令。 

5、关闭管道 

popen($cmd,$status)是通过”管道”的机制,来创建一个进程,进而来执行$cmd命令的,$status是管道的两种状态,分别是”r”和”w”,

而上面所说的命令只有”r”的方式,当执行完shell命令之后,popen的返回值是一个普通的标准I/O流,所以必须要用pclose()将其关闭。 

php 获取linux/ubuntu命令执行结果的方法

 

php命令行里获取etho网卡的IP

function getIp()
{
if (PHP_SAPI === 'cli') {
$buffer = "";
$handle = popen("ifconfig eth0|grep 'inet addr'|awk -F'[ :]' '{print $13}'", 'r');
while (!feof($handle)) {
$buffer .= fgets($handle);
}
pclose($handle);
$server_ip = rtrim($buffer);
} else {
if (isset($_SERVER)) {
if ($_SERVER['SERVER_ADDR']) {
$server_ip = $_SERVER['SERVER_ADDR'];
} else {
$server_ip = $_SERVER['LOCAL_ADDR'];
}
} else {
$server_ip = getenv('SERVER_ADDR');
}
}
return $server_ip;
}

以上这篇php 获取linux/ubuntu命令执行结果的方法的实例就是小编分享给大家的全部内容了,希望能给大家一个参考。

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。