共同奋斗过的兄弟们 - 三月 24, 2012 翻看相片,发现3年前的一张集体照,地点在北海。照片中的同事, 都各奔前程去了, 公司中现在只剩了我自己。 铁打的营盘,流水的兵,昨天小僧也走了,杨亮不日离开。祝所有的人寻找到自己的那片天地吧。 这首《江城子》,送给所有曾经在华体战斗过得兄弟们吧。 三年辛苦两茫茫,不思量,自难忘。 曾记年会,酣醉在厅堂。 恣意谈笑就餐时,夜加班,诉衷肠。 才俊一时都还乡,开公司,泡妞忙。 聚散随缘,何必泪两行。 等的它年花开处,展宏图,更高强! 获取链接 Facebook X Pinterest 电子邮件 其他应用 评论
SVN PROPFIND Request Failed - 三月 24, 2012 今天用TortoiseSVN做update,无论哪个库,都出现 SVN PROPFIND Request Failed的警报,而且报500错误。 跑到服务器上看了一圈,没找到原因。 后来用IE尝试http访问就没问题,别人的Tortoise也没问题。把svn删掉重新check out,也不行。傻眼了。google第一个答案,竟然是 老历的blog ,按照所述一条条查下来,没有一个能解决我的问题,只要使出最后一招:For more information about what actually caused the error, seek out the Apache error log. [@more@] 查看apache的access log,[25/Sep/2007:15:12:28 +0800] "PROPFIND /gooooal HTTP/1.1" 401 488 "-" "SVN/1.4.4 (r25188) neon/0.26.3" 当时我就晕倒,401是认证出错,跟Tortoise的500天差地别啊。这时我才想起前两天我改过自己的域密码,而我们的域,svn是做过sso的。也就是说,其实这都是用户名密码认证的问题。 我觉得TortoiseSvn的这个问题算是个Bug,首先认证不对,报的错误信息驴头不对马嘴,容易误导别人。另外,如果密码不对,应该提示输入新的密码才对,怎么能简单报PROPFIND Request Failed的错呢。 仔细找了一下,在Tortoise svn的选项->已保存数据->认证数据旁边有个"清除",点一下,乌龟才能再次提示输入用户名和密码。 阅读全文
查看网卡流量的脚本 - 三月 24, 2012 几点说明 : 该脚本用来放在服务器上查看网卡的目前流量. 该脚本只是大概统计流量,由于执行命令行需要消耗时间,故结果并不准确.但误差不大,可以看出流量趋势. 脚本的使用方法sh stream.sh $seconds,比如sh stream.sh 10表示10秒统计一次,sh stream.sh 1表示1秒一次. #!/bin/bash #monitor streams of LTS channels #Write by calfen 20090227 timeOld=`date +%s` eth0=`cat /proc/net/dev | grep eth0 | sed 's=^.*:==' ` eth1=`cat /proc/net/dev | grep eth1 | sed 's=^.*:==' ` eth0InOld=$(echo $eth0 | awk '{ print $1 }') eth0OutOld=$(echo $eth0 | awk '{ print $9 }') eth1InOld=$(echo $eth1 | awk '{ print $1 }') eth1OutOld=$(echo $eth1 | awk '{ print $9 }') while true do sleep ${1} eth0=`cat /proc/net/dev | grep eth0 | sed 's=^.*:==' ` eth1=`cat /proc/net/dev | grep eth1 | sed 's=^.*:==' ` timeNew=`date +%s` eth0InNew=$(echo $eth0 | awk '{ print $1 }') eth0OutNew=$(echo $eth0 | awk '{ print $9 }') eth1InNew=$(echo $eth1 | awk '{ print... 阅读全文
用Python快捷处理IP地址 - 二月 03, 2021 Python作为网络工程师利器,在处理网络参数方面比Java强大。 场景 :使用SDWAN将全国各分支点互联,需要规划各节点的网段。通常情况下,接入是个很长时间的持续性活动,几个月甚至更长。而总部可能对各分支机构原来并没有一个统一的ip地址规划。 逻辑 :保持分部的ip不变,当然,如果分部之间冲突还是要重新分配的。网络工程师提出了这样的需求: 给出ip地址列表A,和ip地址列表B。找出A中哪些IP和B中哪些IP有冲突,表示出来。 A包含B,把A中和B冲突的地方剔除,重新生成新的A。 外部库选择: IPy,挺好用,但很久就没人维护了,据说有些计算还不正确 IPAddr和IPNet,谷歌维护的库,非常好用,谷歌宣布功能迁入标准库。里面IPSet相当好用 标准库,没有IPSet,set处理需要自己开发 最终我们选择了最有前途的python原生ipaddress 参考 : https://docs.python.org/zh-cn/3.9/library/ipaddress.html 实现 : https://dev.commverge.com.cn/ 文档格式: 1 列说明 第一列为总部 IP ,第三列尾分支 IP ,第 2 、 4 列为备注说明。 IP 地址有 3 种表示方式: [1.] 192.168.1.0/24 [2.] 192.168.1.0/255.255.255.0 [3.] 192.168.1.1-192.168.1.255 2 行说明 前两行为说明行,数据一律从第三行开始 .3 IP 地址 IP 地址有 3 种表示方式: [1.] 192.168.1.0/24 [2.] 192.168.1.0/255.255.255.0 [3.] 192.168.1.1-192.168.1.255 思路: 将ip从excel读入ListA,ListB stringIpList抓换成ipaddress的二维List:netListA,netListB 二维netListB转换为一维List 遍历netListA[[],[],[]....],一维ListA减一维ListB 得到一个二维list。 代码: https://github.com/calfen/ipListMinus 阅读全文
评论