2010年1月22日存档:PHP调用linux命令启动和停止asterisk

本文介绍了一个用于控制 Asterisk PBX 系统启动和停止的 PHP 脚本及配套 C 语言程序。该脚本通过检测 Asterisk 的运行状态来启用或禁用相应的操作按钮,并使用 C 语言编写的 ast_start.c 和 ast_stop.c 来启动或终止 Asterisk 进程。
摘要由CSDN通过智能技术生成

1. ast_control.php

<?php
    session_start();
   
    include('header.php');

 

    if( exec('./asterisk/ast_is_ast') )
    {
        $_SESSION['ast_id'] = 1;
    }
    else
    {
        $_SESSION['ast_id'] = 0;
    }

   
    if (isset($_POST[ 'submit1']) && $_POST[ 'submit1'] == '启动asterisk')  
    {  
        system('./asterisk/ast_start');
       
        $_SESSION['ast_id'] = 1;
       
        echo "<script type='text/javascript'>
                alert( 'asterisk启动成功!' );
                window.location.href = 'ast_control.php';
              </script>";
    }  
    if (isset($_POST[ 'submit2']) && $_POST[ 'submit2'] == '退出asterisk')  
    {  
        system('./asterisk/ast_stop');
       
        $_SESSION['ast_id'] = 0;
       
        echo "<script type='text/javascript'>
                alert( 'asterisk退出成功!' );
                window.location.href = 'ast_control.php';
              </script>";
    }     
?>

<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<form name="form1" action="ast_control.php" method="post">
    <table align="center">
        <tr>
            <td>
            <?php
                if($_SESSION['ast_id']!=1)
                {
                    echo '<input type="submit" οnclick="check.disabled=!(this.checked)" name="submit1" id="submit1"  value="启动asterisk" />
                <span id=check disabled>
                    <input type="submit" name="submit2" id="submit2"  value="退出asterisk"/>
                </span>';
                }
                else
                {
                    echo '<span id=check disabled>
                    <input type="submit" name="submit1" id="submit1"  value="启动asterisk" />
                </span>
                <input type="submit" οnclick="check.disabled=!(this.checked)" name="submit2" id="submit2"  value="退出asterisk"/>';
                }
            ?>
            </td>
        </tr>
    </table>
</form>

<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<?php require_once("footer.php");?>

///

2. ast_start.c                //启动asterisk

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
    uid_t uid ,euid;
    int id;

    uid = getuid() ;
    euid = geteuid();
 
    if(setreuid(euid, uid))  //交换这两个id
    {
        perror("setreuid");
    }
  
   system( "asterisk" );
  
    return 0;
}

///

3. ast_stop.c                 //停止asterisk

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
    uid_t uid ,euid;
    int id;

    uid = getuid() ;
    euid = geteuid();


    if(setreuid(euid, uid))  //交换这两个id
    {
        perror("setreuid");
    }


    system( "kill -9 $(pidof asterisk)" );

    return 0;
}

//

4. ast_is_ast.c                       //检查asterisk是否启动

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{


    system( "pidof asterisk" );

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值