博文

用Python快捷处理IP地址

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

爰居爰处?爰丧其马?予以求知?于林之下

图片
 

阿里云服务器centos6.5升级8.2及相应服务升级

在阿里云控制台关闭虚拟主机,点击更换操作系统,选择centos8.2(64) yum upgrade,先更新一下最新版本 安装mariadb,mysql和mariadb,最终还是选择了maria,懒得装么。 安装yum install mariadb*   指定数据目录mkdir /data/mysql 把mysql的数据库根目录移过来 cp -rf /mysqlbak /data/mysq/ 数据库开启systemctl restart mariadb.servic 设置root远程登录 mysql -u root -p < your@password > > use mysql ; > insert into user ( Host, User, Password ) values ( '%' , 'root' , password ( < your@password > )) ; 测试数据库是否正常 安装Redmine 在数据库中创建redmine用户   GRANT ALL privileges ON redmine TO redmine IDENTIFIED BY 'change-with-strong-password'; 下载 https://www.redmine.org/projects/redmine/wiki/Download 将原来3.4的 数据库设置文件复制 config/database.yml,config/configuration.yml  到4.1的 config 目录 。如果后面提示你sock路径不对,在database.yml里production:块中增加一行   socket: /data/mysql/mysql.sock 安装包 sudo dnf install httpd mod_passenger passenger passenger - devel ruby。 安装Ruby依赖项    cd /data/redmine bundle install --without development test postgresql sqlite --path vendor/bundle                     

单县80年代-消失的地名

单县有个地方,古楼的南面,公路局旁边,去商丘的那个五岔路口,以前哪儿是个汽车队。国营汽车在汽车站卸完客后,就开到那儿保养维护,一般老百姓都叫汽车队,有人懒省事,叫"汽队"。我发现有很多误用:百度吧里有帖子说是"汽车七队"从字面意思看,他的理解是"第七汽车队",估计是把汽车队和汽队综合理解了。在和某农村朋友在聊天时候,也提到"在七队那儿等车",问他七队是什么意思,他说大概是哪个村的第七生产队吧,地名的误用,可见一斑。 单县说地方一般用地标来表示,比如说,咱在×××大酒楼见面。而地标是有时代性的,会随着历史的变迁而改变。九零年左右,单县开始了一轮基建项目,变化很大,一些新地标取代了旧地标。"三台商场","商业大楼","白云商厦","古楼"成了新的地标。有一些老的建筑则被拆除弃用,比如湖西路和西关街交叉口以前叫"戏园子",以前看戏都在那儿。再往西现在城关二中的地方叫"鸡市口",那儿也早就不卖鸡了。这些地名都随着起源叫了一段时间后慢慢消失,如轻烟薄雾般,只留在那一代人的记忆中。现在的单县,变得我更加不认识了,到处都在拆迁、改造。我找不到许多留下我记忆的地方,和别人谈话,说起×××地方,也完全不知道。让我感觉不能融入单县,从这些地名开始,我感觉自己和单县已经越来越远。单县是美了,道路宽阔了,新小区,新公园,但从心眼里我排斥记住这些。我不知道是单县变了还是我变了,总之我还是有些许的伤心和淡淡的悲哀。我心目中还是那个80年代的单县,一个在脑海中复原的单县:那是个风水宝地,堤里四面都是水,从西堤到湖西路,从南堤到向阳路,从东堤到二中四完小,一片水乡泽国,芦苇、青蛙、钓鱼。。。。。"老山堤顶","曹家崖子"。捂鼻而过的"粪组",每月去买粮食的"直属库",坐在大石头上看电影的"南店子电影院","城关镇礼堂""湖西礼堂"大众电影院"。。。 地名,不只是一个单纯的地理标志,是时间和空间的组合,包含着与之相关的青春的记忆。哪

每逢中秋倍思亲

屈指一算,没和父母一起过仲秋,已经 16 个年头了。 刚刚离开家到外地求学的时候,自己还是个青瓜蛋子。外面多彩的生活吸引了自己大部分的注意力,各种活动加上每天去自习,生活倒也充实。 直到有一天像往常一样背起书包去主楼的教室,发现没什么人,才意识到现在是中秋。 自习到十点,揉揉眼睛,抬头看看窗外。 一轮明月挂在南天,远处便是浩瀚的钱塘江,水面映着月光,波光粼粼。隐约可见如黑龙般的钱江大桥。 中秋的夜已有寒意,何况还在山里,我不禁打了几个冷战。 月光并不刺眼,可以直视,能看得到月亮上的阴影,想想的出嫦娥,吴刚,桂花,兔子。继而许多关于月亮的诗句涌上心头,竟然全是伤感之词。今夜杭州月,学子只独看。我的眼泪竟不自主的流了下来。 父母也一定在看着月亮,而且,我们看得是同一个。月亮就像一面镜子,镜中能映出他们的影子,根据对称反射原理,他们一定也能看到我吧。 小时候中秋,苹果和月饼是都有的,无论哪个都圆圆的,象征着团圆,有时还有瓜子和糖。全家每人一份,事先分好,没等到月亮出来,我已经食指大动了。父母总是说,现在不能吃,要月亮最大的时候才行。于是半夜在院子里摆上茶盘,拿起一个月饼,装模作样的递给月亮,说:你先吃一口。然后自己咬一口,再让月亮吃一口。 家人看见我傻呵呵的样子一片欢笑。 而现在,只有我自己,没有欢笑,教室里甚至一个人也没有。 我聊的唱了几首歌,可愈加觉得冷清,以至于不想自己再呆下去。于是跪在木地板上面上家里的方向咚咚咚嗑了三个响头。然后回宿舍了。 我坚信他们是能通过月亮感知到我的这份思恋的。 继而又是十几个年头过去了,我竟然不记得后来的中秋是怎么过的了。许是尘世的喧嚣和生活的压力蒙住了月亮,使我无法通过她建立联系的桥梁。 直到今天,想家的感觉再次猛烈的冲击着我。我期待今年中秋快些来临,因为,今年我可以回家。

访民之口,甚于防川

他们终于下毒手了。 live.com, twitter, flickr,新出来的bing, 再加上之前的friendfeed, youtube。 这些我喜欢用的服务现在都不能用了,突然有种恐惧的感觉。接下来是不是gmail,甚至google。 我只是感到被压抑的胸闷,憋屈。 难道是因为敏感的日子要来了? 访民之口甚于防川,一定做了什么亏心事,才怕半夜鬼敲门。 我倒觉得可能会得到适得其反的效果,一些不明真相而受影响的年轻一代网民,会憎恨这可恶的GFW。或许会四处打听为什么会封,这将激起他们的好奇心,去寻找那一天发生的事情的文章,而他们找到的,大都是反面文章。 也许是死猪不怕开水烫,名声已经臭的不能再臭了,索性脱下裤子做个彻彻底底的流氓。 我改变不了什么,只能在这儿透口气。

查看网卡流量的脚本

几点说明 : 该脚本用来放在服务器上查看网卡的目前流量. 该脚本只是大概统计流量,由于执行命令行需要消耗时间,故结果并不准确.但误差不大,可以看出流量趋势. 脚本的使用方法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