在学习go语言,所以当前的需求使用go来试验一下。需要:循环检查某些url并返值,并获取所用时间,如果返回内容长度超过100个字节,只显示前100个字节,不足100个字节显示全部。我将url写在url.txt文件中,方便以后增加。
在centos 5.4下go1.0.2编译通过。虽然编译通过,但是个人感觉还是不如python方便,并且变异出来的东西都快3M了,让我想起了当年的delphi。如果这种监测实验脚本还是首选python。但是用python做有个问题,如果使用“while 1”循环使用urllib2获取,时间一长就失败过多。具体原因没有查,直接用crontab或脚本调用解决。
package main
import ("fmt"
"os"
"net/http"
"io/ioutil"
"time"
)
func main() {
var str string
userFile := "url.txt"
fin,err := os.Open(userFile)
defer fin.Close()
if err != nil {
fmt.Println(userFile,err)
return
}
buf := make([]byte, 1)
//
for{
n,_:= fin.Read(buf)
if 0==n {break}
if string(buf)=="\n"{
//开始通过url获得页面
starttime:=time.Now().Unix()
res, err := http.Get(str)
endtime:=time.Now().Unix()
usetime:=endtime-starttime
if err != nil {
fmt.Println(err)
}
context, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
}
res.Body.Close()
// 获得完毕打印
if len(context) >100{
fmt.Println(string(context)[:100])
} else {
fmt.Println(string(context))
}
fmt.Println("get url:", str, " use time :", usetime)
str=""
} else {
str+=string(buf)
}
}
}