您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > ASP >

用PHP写个处理hosts的脚本

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 00:17 点击:

error_reporting(0);

$self = pathinfo(__FILE__);

$self = $argv[0];

$help = <<<_

=========================

作者:柯冷

博客:http://www.1x1x.org/

=========================

显示帮助: $self -h

列出hosts: $self -ls

关闭hosts: $self -c xxx.com

开启hosts: $self -o xxx.com

添加hosts: $self -a ip xxx.com comment

添加hosts: $self -d xxx.com

禁止所有hosts: $self -c all

开启所有hosts: $self -o all

_;

if(!isset($argv[1])) die($help);

 


$file = $_SERVER[SystemRoot] . /system32/drivers/etc/hosts;

$file_ = $_SERVER[SystemRoot] . /system32/drivers/etc/hosts_back;

 


// 分析hosts文件

$content = file_get_contents($file);

$array = explode(" ", $content);

$ip = array();

$reg = "/^[ ]*(#?)[ ]*([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})[ ]*([^#]*)(#.*)?$/";

foreach($array as $z)

{

preg_match($reg, $z, $out);

if(empty($out)) continue;

$ip[trim($out[3])] = array(

# => $out[1]==’#?’#:’ ‘,

‘ip’ => $out[2],

‘url’ => trim($out[3]),

‘comment’ => isset($out[4])?$out[4]:”,

);

}

 


// 分析命令

switch($argv[1])

{

case ‘-ls’: doing(0, 1); break;

case ‘-c’: close_open(); break;

case ‘-o’: close_open(); break;

case ‘-a’: add(); break;

case ‘-d’: del(); break;

default: doing(0, 1);

}

// 关闭/打开

function close_open()

{

global $help, $argv, $ip;

 


if(!isset($argv[2])) die($help);

 


$c = $argv[1]==’-c’?#’:’ ‘;

if($argv[2] == ‘all’)

{

foreach($ip as $x=>$y) $ip[$x][#] = $c;

}

else

{

if(!isset($ip[$argv[2]])) die(“未找到{$argv[2]}的相关设置”);

$ip[$argv[2]][#] = $c;

}

 


doing(1);

}

// 添加

function add()

{

global $help, $argv, $ip;

 


if(!isset($argv[3])) die($help);

 


$ip[$argv[3]] = array(‘#’=>’ ‘, ‘ip’=>$argv[2], ‘url’=>$argv[3], ‘comment’=>isset($argv[4])?$argv[4]:”);

 


doing(1);

}

// 删除

function del()

{

global $help, $argv, $ip;

 


if(!isset($argv[2])) die($help);

 


unset($ip[$argv[2]]);

 


doing(1);

}

 


// 处理、显示

function doing($w = false, $ls = false)

{

global $ip, $file, $file_;

 


if($w)

{

if(!file_exists($file_))

{

copy($file, $file_) || die(“hosts文件备份失败!”);

}

$f = fopen($file, ‘w+’);

if(!$f) die(‘没有权限打开hosts文件!’);

}

foreach($ip as $z)

{

$line = “{$z[#]}{$z[ip]} {$z[url]} {$z[comment]} ”;

if($w) fwrite($f, $line);

if($ls) echo $line;

}

if($w) fclose($f);

}

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • WAP常见问题问答大全(四)
      • ASP开发必备:WEB打印代码大全
      • ASP调用系统ping命令
      • asp缓存技术
      • ASP教程:第三篇 ASP基础
      • 用ASP+XML打造留言本(4)
      • 关于ASP Recordset 分页出现负数解决方法及建议
      • 用asp怎样编写文档搜索页面(5)
      • ASP处理多关键词查询实例代码
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1