在SHELL中,我要用wget连续访问一些URl如:
http://localhost/?a=1
http://localhost/?a=2
http://localhost/?a=3
http://localhost/?a=4
但有个前提,必须保证前一个能成功。如我要访问http://localhost/?a=3,那么访问http://localhost/?a=2的时候必须成功返回了“HTTP/1.0 200 OK”!这回是救命呀!

解决方案 »

  1.   

    那建议你使用 python perl 之类的编程语言来实现访问.
      

  2.   


       $header="GET http://localhost/?a=1 HTTP/1.1\r\n";
       $header.="Accept:  */*\r\n";
       $header.="Referer: http://$server/asp/qwdown.asp\r\n";
       $header.="Accept-Language: zh-cn\r\n";
       $header.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; CIBA; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\r\n";
       $header.="Host: $server\r\n";
       $header.="Connection: Close\r\n\r\n";   
       $inheader = 1; 
       $data="";
       $head="";   $fp = @fsockopen($host,$port,$errno,$errstr,10) or  exit("远程服务器无法访问。请刷新重试。此故障发生在获取文件数据操作中。");
       @fputs($fp,$header);   file_put_contents("t1.txt",time());
       while ( !feof($fp)) 
       {
          $line = @fgets($fp,1024); //去除请求包的头只显示页面的返回数据 
          if($i>7)//此行后数据为下载文件数据
          {
              $data.=$line; 
          }
          else//截获header信息,重新构建
          {
              $head.=$line;
          }
          $i++;
       }  
       @fclose($fp); echo $head看一下结果。
    那个$i>7是我的一个应用里的数值,你可以自己修改,以达到获取完整header的目的。
      

  3.   

    2楼的脚本是perl啊,还是php?
    perl里没有file_put_contents吧,哪个模块里的
      

  4.   

    url.conf:
    http://localhost/?a=1 
    http://localhost/?a=2 
    http://localhost/?a=3 
    http://localhost/?a=4 
    httping.sh:
    #!/bin/bash
     
    echo "Content-type: text/plain; charset=iso-8859-1"  
    echo   
    echo    
    if [ -f url.conf ]; then   
        cat url.conf | while read v_url   
        do  
            if [ `httping -c 1 -g $v_url | grep connected | wc -l` -gt 0 ]; then   
                echo "$v_url ok"  
            else  
                echo "$v_url false"  
            fi   
        done   
    fi
      

  5.   

    wget -S 
    加上-S就可以返回服务端发回的http头,从中可以找到是否有"HTTP/1.0 200 OK"
      

  6.   

    不好意思,看错。是PHP脚本。
      

  7.   

    好心人真多!谢谢了!4楼的shell代码学习了!
    问题解决了!
    干脆用命令行执行。主要是怕出错!执行做了记录,写到一个文件里了。如果出错。可以接着来。
    用shell方法错了!