shell技巧

常用命令

获取公网出口Ip地址的命令:
curl myip.ipip.net
curl cip.cc
curl ipinfo.io
curl ifconfig.me

用curl调试sock5代理:curl -x socks5h://localhost:8001 www.moneyslow.com/

nc走sock5转发: ProxyCommand  /usr/bin/nc -X 5 -x 127.0.0.1:13659 %h %p //连github时

wget不存在的网站:wget -Y on -e "http_proxy=http://**[HTTP_HOST]**:**[HTTP_PORT]**" 网页链接其中:[HTTP_HOST]和[HTTP_PORT]是http proxy的ADDRESS和PORT。

curl指定本地端口连远程(这样抓包只抓这个端口):curl --local-port

nc测试udp能否通(比如overlay网络、dns):nc -v -u -z -w 3 1.1.1.1 53

awk分组统计分析平均值:awk '{ sum[$1]+=$2; count[$1]+=1 ;} END { for (key in count) {  printf  "time= %s  \t count=%s   \t avg=%.6f \n", key,  count[key], sum[key]/count[key] } }’

mac用户备份本地最近修改的文件、配置  将大图压小节省流量:find img_small -size +1024k -type f -exec sips -Z 1024 {} \;

检查用户使用的是长、短连接:netstat -ato

发起ping风暴:ping -f
测试网络MTU:ping -M
带时间戳的ping: ping -D 114.114.114.114 | awk '{ if(gsub(/\[|\]/, "", $1)) $1=strftime("[%F %T]", $1); print}’

长期用来统计抓包中的各种 响应时间,这个时候应用的日志已经不可信了;按URL、时间梯度进行分组统计:
tshark -r 0623.pcap -Y 'http.time>0 ' -T fields -e frame.number -e frame.time_epoch  -e frame.time_delta_displayed  -e ip.src -e ip.dst -e http://tcp.stream  -e http.request.full_uri -e http.response_for.uri  -e http.time  | awk '{ print int($2/10), $8 }' | awk '{ sum[$1]+=$2; count[$1]+=1 ;} END { for (key in count) {  printf  "time= %s  \t count=%s   \t avg=%.6f \n", key,  count[key], sum[key]/count[key] } }' | sort -k2n | gawk '{ print strftime("%c",$2*10), $0 }'