⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000002.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;brill&nbsp;(清清小河蠢蠢笨鱼),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;plget&nbsp;0.1&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Sat&nbsp;Jun&nbsp;26&nbsp;00:27:12&nbsp;1999)&nbsp;<BR>&nbsp;<BR>因为我遇到的那个wget的问题,做了这么个小东西。&nbsp;<BR>也不是自己做的,拿别人的东西改了改,呵呵&nbsp;<BR>功能非常简单,就是给个URL然后就死命的往回拽:))&nbsp;<BR>不过只支持HTTP。就因为简单,可以随心所欲的改啦...&nbsp;<BR>源码如下:&nbsp;<BR>&nbsp;<BR>#!/usr/bin/perl&nbsp;<BR>&nbsp;<BR>#&nbsp;Base&nbsp;on&nbsp;a&nbsp;program&nbsp;named&nbsp;&quot;getright&quot;&nbsp;from&nbsp;AKA&nbsp;homepage.&nbsp;<BR>#&nbsp;Modified&nbsp;by&nbsp;<A HREF="mailto:brill@smth.">brill@smth.</A>&nbsp;06/25/1999&nbsp;<BR>&nbsp;<BR>use&nbsp;IO::Socket;&nbsp;<BR>&nbsp;<BR>if&nbsp;($#ARGV&nbsp;&lt;&nbsp;0)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;print&nbsp;STDERR&nbsp;&quot;usage:&nbsp;plget&nbsp;&lt;URL&gt;\n\n&quot;;&nbsp;<BR>&nbsp;&nbsp;exit(0);&nbsp;<BR>}&nbsp;else&nbsp;{&nbsp;<BR>&nbsp;&nbsp;$ARGV[0]&nbsp;=~&nbsp;m!/([^/]*)$!;&nbsp;<BR>&nbsp;&nbsp;$filename&nbsp;=&nbsp;$1;&nbsp;<BR>&nbsp;&nbsp;open(FILE,&nbsp;&quot;+&gt;&gt;&quot;.$filename)&nbsp;or&nbsp;die&nbsp;&quot;Cannot&nbsp;open&nbsp;$filename&nbsp;for&nbsp;append:&nbsp;$!&quot;;&nbsp;<BR>&nbsp;&nbsp;$length&nbsp;=&nbsp;sysseek(FILE,0,2);&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>if&nbsp;($ARGV[0]&nbsp;=~&nbsp;m!^&nbsp;(?:<A HREF="http://)?">http://)?</A>&nbsp;(.*?)&nbsp;(?:\:([0-9]+))?&nbsp;(/.*)$!x)&nbsp;<BR>&nbsp;&nbsp;{&nbsp;($server,$port,$path)&nbsp;=&nbsp;($1,&nbsp;$2&nbsp;||&nbsp;80,&nbsp;$3);&nbsp;}&nbsp;else&nbsp;{&nbsp;die&nbsp;&quot;error&nbsp;URL\n&quot;;&nbsp;}&nbsp;<BR>&nbsp;<BR>print&nbsp;&quot;[$server]&nbsp;[$port]&nbsp;[$path]&nbsp;-&gt;&nbsp;[$filename]\n&quot;;&nbsp;<BR>if&nbsp;($length&nbsp;&gt;&nbsp;0)&nbsp;<BR>&nbsp;&nbsp;{&nbsp;print&nbsp;STDERR&nbsp;&quot;Attempting&nbsp;to&nbsp;resume&nbsp;$filename&nbsp;from&nbsp;byte:&nbsp;$length\n&quot;;&nbsp;}&nbsp;<BR>&nbsp;<BR>REGET:&nbsp;<BR>print&nbsp;STDERR&nbsp;&quot;Connecting...&quot;;&nbsp;<BR>$socket&nbsp;=&nbsp;IO::Socket::INET-&gt;new(PeerAddr&nbsp;=&gt;&nbsp;$server,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PeerPort&nbsp;=&gt;&nbsp;$port,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Proto&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;'tcp',&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&gt;&nbsp;SOCK_STREAM)&nbsp;or&nbsp;die&nbsp;&quot;Cannot&nbsp;connect:&nbsp;$!&quot;;&nbsp;<BR>print&nbsp;STDERR&nbsp;&quot;Connected...&quot;;&nbsp;<BR>&nbsp;<BR>print&nbsp;$socket&nbsp;&quot;GET&nbsp;$path&nbsp;HTTP/1.0\n&quot;;&nbsp;<BR>print&nbsp;$socket&nbsp;&quot;Host:&nbsp;$server\n&quot;;&nbsp;<BR>if&nbsp;($length&nbsp;&gt;&nbsp;0)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;print&nbsp;$socket&nbsp;&quot;Range:&nbsp;bytes=$length-\n&quot;;&nbsp;}&nbsp;<BR>print&nbsp;$socket&nbsp;&quot;Connection:&nbsp;close\n\n&quot;;&nbsp;<BR>&nbsp;<BR>$reply&nbsp;=&nbsp;&lt;$socket&gt;;&nbsp;<BR>$reply&nbsp;=~&nbsp;s!(.*)\r\n!$1!;&nbsp;<BR>print&nbsp;STDERR&nbsp;&quot;Replay:&nbsp;[$reply]\n&quot;;&nbsp;<BR>if&nbsp;($length&nbsp;&gt;&nbsp;0)&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;if&nbsp;(!(($reply)&nbsp;=~&nbsp;/HTTP\/1.[01]&nbsp;206&nbsp;Partial&nbsp;Content/))&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;STDERR&nbsp;&quot;Invalid&nbsp;URL/Unrecognized&nbsp;Reply/Resume&nbsp;Not&nbsp;Supported.\n&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;close($socket);&nbsp;exit(0);&nbsp;<BR>&nbsp;&nbsp;}&nbsp;<BR>}&nbsp;<BR>else&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;if&nbsp;(!(($reply)&nbsp;=~&nbsp;/HTTP\/1.[01]&nbsp;200&nbsp;OK/))&nbsp;{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;STDERR&nbsp;&quot;Invalid&nbsp;URL/Unrecognized&nbsp;Reply.\n&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;close($socket);&nbsp;exit(0);&nbsp;<BR>&nbsp;&nbsp;}&nbsp;<BR>}&nbsp;<BR>print&nbsp;STDERR&nbsp;&quot;Received&nbsp;valid&nbsp;HTTP&nbsp;reply.\n&quot;;&nbsp;<BR>&nbsp;<BR>while&nbsp;(($mime&nbsp;=&nbsp;&lt;$socket&gt;)&nbsp;=~&nbsp;/\w+:&nbsp;/)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;if&nbsp;($mime&nbsp;=~&nbsp;/Content\-Range\:\sbytes\s([0-9]+)\-([0-9]+)\/([0-9]+)/)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;($start,$finish,$filesize)&nbsp;=&nbsp;($1,&nbsp;$2,&nbsp;$3);&nbsp;}&nbsp;<BR>&nbsp;&nbsp;if&nbsp;($mime&nbsp;=~&nbsp;/Content\-Length\:\s([0-9]+)/)&nbsp;{&nbsp;$total&nbsp;=&nbsp;$1;&nbsp;}&nbsp;<BR>}&nbsp;<BR>if&nbsp;(!&nbsp;$filesize)&nbsp;{&nbsp;$filesize&nbsp;=&nbsp;$total;&nbsp;}&nbsp;<BR>&nbsp;<BR>print&nbsp;STDERR&nbsp;&quot;Receiving&nbsp;data&nbsp;of&nbsp;&quot;,&nbsp;$filesize,&nbsp;&quot;:&nbsp;&quot;;&nbsp;<BR>while&nbsp;($data&nbsp;=&nbsp;&lt;$socket&gt;)&nbsp;{&nbsp;<BR>&nbsp;&nbsp;$length&nbsp;+=&nbsp;length($data);&nbsp;<BR>&nbsp;&nbsp;$percentage=&nbsp;int(($length&nbsp;/&nbsp;$filesize)&nbsp;*&nbsp;100);&nbsp;<BR>&nbsp;&nbsp;print&nbsp;STDERR&nbsp;$percentage.&quot;%&quot;.&quot;\b&quot;x(length($percentage)+1);&nbsp;<BR>&nbsp;&nbsp;print&nbsp;FILE&nbsp;$data;&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>if&nbsp;($length&nbsp;&lt;&nbsp;$filesize)&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;print&nbsp;STDERR&nbsp;&quot;Break.&nbsp;Retry...\n&quot;;&nbsp;<BR>&nbsp;&nbsp;goto&nbsp;REGET;&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>print&nbsp;STDERR&nbsp;&quot;100%\n&quot;;&nbsp;<BR>close(FILE);&nbsp;<BR>close($socket);&nbsp;<BR>&nbsp;<BR>#&nbsp;Example&nbsp;HTTP&nbsp;return&nbsp;header:&nbsp;<BR>#&nbsp;<BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTTP/1.1&nbsp;206&nbsp;Partial&nbsp;content&nbsp;<BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date:&nbsp;Wed,&nbsp;15&nbsp;Nov&nbsp;1995&nbsp;06:25:24&nbsp;GMT&nbsp;<BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Last-modified:&nbsp;Wed,&nbsp;15&nbsp;Nov&nbsp;1995&nbsp;04:58:08&nbsp;GMT&nbsp;<BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Content-Range:&nbsp;bytes&nbsp;21010-47021/47022&nbsp;<BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Content-Length:&nbsp;26012&nbsp;<BR>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Content-Type:&nbsp;image/gif&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;修改:·brill&nbsp;於&nbsp;Jun&nbsp;26&nbsp;09:09:50&nbsp;修改本文·[FROM:&nbsp;&nbsp;166.111.68.179]&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;166.111.68.179]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -