curl
测试域名绑定
我常需要在开发环境中,测试某台服务器上的Web Server是否正确绑定了域名。比如,我希望在服务器192.168.1.10 上绑定www.kuqin.com 。但需要修改hosts才能看到效果,这活儿很累人。
所谓“域名绑定”,就是把host映射到对应的目录。如果手头有cURL,可以使用 -H 参数,在请求头信息中多写一个 Host 字段。就可以测试是否配置正确了。
# curl -H "Host: www.kuqin.com" http://192.168.1.
场景二:查看头信息
响应头信息中包含了很多东西。除了HTTP版本和响应代码,还有Server、Content-Type、Content-Length等信息,如果有写入Cookie的操作,也会体现在头信息中。
使用cURL的 -I 参数,就可以看到这些头信息。比如淘宝的:
# curl -I http://www.taobao.com/
场景三:跟踪URL跳转
如果遇到了一个多次跳转的URL,可以先用curl的 -L 参数看看,这个URL最终跳转到了什么地方。-L 参数最好配合 -I 使用,不然cURL会把最后一次请求获得的数据输出到控制台。
没有合适的URL拿来做例子,意会一下吧
场景四:发送压缩的请求
cURL提供了一个 –compress 参数,可以用来发送支持压缩的请求。但使用了–compress之后,虽然传输过程是压缩的,cURL的输出还是解压之后的,难以看到效果。
我一般用 -H 参数,自己写一个 Accept-Encoding 字段在头信息中。
curl -H "Accept-Encoding: gzip" http://www.kuqin.com/
如果直接运行上面的命令,会得到一堆乱码,因为cURL输出的内容,是压缩后的数据。不妨在后面接一个gunzip试试。
curl -H "Accept-Encoding: gzip" http://www.kuqin.com/ | gunzip
使用gunzip解压之后,信息又被还原了。
场景五:忽略证书错误
平日上网,遇到证书错误一定要小心。但我在工作中,经常需要用自签的假证书搭建开发环境。cURL在遇到证书错误时无法使用,使用 -k 参数就可以让它不做证书校验。
netstat -apln (这个n很重要,曾经有一次要看一个端口有没有起来,没有带n参数,实际上端口是起来了,但是就是grep不到)
tail -f(从尾部监听) -n (后面跟数字,表示从尾部向上多少行)
awk出处文件到指定路径
awk XXX -F"exp=|,count" '{print $2","$4,total > "lsd.data"}'
java调用shell脚本
/*
例如.test.sh内容为
echo "hello world" >> lsd.txt
lsd.txt的输出目录为workPath
*/
Runtime rt = Runtime.getRuntime();
String workPath = "/data/log";//子进程工作目录
String shellPath = "/data/log/test.sh";
File dir = new File(workPath);
String params = "a b";//参数a b传入shell
String str[] =
{ "sh", "-c", "/bin/sh "+shellPath + " " +params };
Process pcs = rt.exec(str, null, dir);
BufferedReader br = new BufferedReader(new InputStreamReader(pcs.getInputStream()));
StringBuffer lines = new StringBuffer();
String line = new String();
while ((line = br.readLine()) != null)
{
lines.append(line).append("\n");
}
try
{
pcs.waitFor();
}
catch (InterruptedException e)
{
lines.append("processes was interrupted").append("\n");
}
br.close();
int ret = pcs.exitValue();