python编写IP地址与十进制IP转换脚本

IP地址与十进制IP转换

#!/usr/bin/env python

#encoding=utf-8

import re

import sys

import os

def ten_to_two(ten_num):

two_str = ‘‘

while ten_num != 1:

a = ten_num % 2

two_str = two_str + str(a)

ten_num = ten_num / 2

else:

two_str = two_str + str(1)

two_str = two_str[::-1]

if len(two_str) < 8:

cover = (8 - len(two_str)) * str(0)

two_str = cover + two_str

return two_str

def two_to_ten(two_num):

ten_int = 0

indexlist = range(len(two_num))

for i in indexlist:

ten_int += int(two_num[i]) * 2 ** indexlist[-(i+1)]

return str(ten_int)

def int_to_ipaddr(intnum):

int_addr = int(intnum)

twonum = ten_to_two(int_addr)

if len(twonum) < 32:

twonum = ‘0‘ * (32 - len(twonum)) + twonum

ipaddr = ‘‘

for j in range(0, 32, 8):

k = j + 8

if j == 24:

ipaddr += two_to_ten(twonum[j:k])

else:

ipaddr += two_to_ten(twonum[j:k]) + ‘.‘

return ipaddr

def ipaddr_to_int(ipaddress):

iplist = ipaddress.split(‘.‘)

ipstr = ‘‘

for i in iplist:

ipstr += ten_to_two (int(i))

if ipstr.startswith(‘0‘):

ipstr = re.sub(‘^0*‘, ‘‘, ipstr)

tennum = two_to_ten(ipstr)

return tennum

if len(sys.argv) < 2:

print ‘No action specified.‘

sys.exit()

elif len(sys.argv) == 2:

if sys.argv[1].startswith(‘--‘):

option = sys.argv[1][2:]

if option == ‘version‘:

print ‘Version 1.1‘

elif option == ‘help‘:

print ‘‘‘\

This program is used to convert the IP address.

\t-i ipaddress\n\t\tConvert the IP address.

\t\tlike ./iptrans.py 192.168.1.1

\t-if filename\n\t\tConvert the IP address‘s file.

\t\tlike ./iptrans.py ./ipfile

\t-t int ipaddress\n\t\tConvert the int IP address.

\t\tlike ./iptrans.py 3232235777

\t-tf filename\n\t\tConvert the IP address‘s file.

\t\tlike ./iptrans.py ./intipfile

\t--help\n\t\tDisplay this help.

\t--version\n\t\tPrints the version number.‘‘‘

else:

print ‘Unknown option.‘

sys.exit()

elif len(sys.argv) == 3:

if sys.argv[1].startswith(‘-‘):

option = sys.argv[1][1:]

if option == ‘i‘:

if sys.argv[2].count(‘.‘) == 3:

ipaddress = sys.argv[2]

intkey = ipaddr_to_int(ipaddress)

print ‘%s\t%s‘ % (ipaddress, intkey)

else:

print ‘%s is error.‘ % sys.argv[2]

sys.exit()

elif option == ‘if‘:

if os.path.isfile(sys.argv[2]) == True:

filename = sys.argv[2]

f = open(filename, ‘r‘)

for line in f:

ipaddress = line.replace(‘\n‘, ‘‘)

intkey = ipaddr_to_int(ipaddress)

print ‘%s\t%s‘ % (ipaddress, intkey)

else:

print ‘The %s is not exist.‘ % sys.argv[2]

sys.exit()

elif option == ‘t‘:

intkey = sys.argv[2]

if int(intkey) < 16777217:

print ‘%s is error, must be great than 16777217‘ % sys.argv[2]

else:

ipaddress = int_to_ipaddr(intkey)

print ‘%s\t%s‘ % (intkey, ipaddress)

elif option == ‘tf‘:

if os.path.isfile(sys.argv[2]) == True:

filename = sys.argv[2]

f = open(filename, ‘r‘)

for line in f:

intkey = line.replace(‘\n‘, ‘‘)

ipaddress = int_to_ipaddr(intkey)

print ‘%s\t%s‘ % (intkey, ipaddress)

else:

print ‘The %s is not exist.‘ % sys.argv[2]

sys.exit()

else:

print ‘Unknown option.‘

sys.exit()

else:

print ‘Unknown option.‘

sys.exit()

时间: 2024-10-29 19:11:37

python编写IP地址与十进制IP转换脚本的相关文章

32位二进制IP地址与十进制IP地址互相转换

代码: 1 import java.util.List; 2 import java.util.ArrayList; 3 import java.util.Scanner; 4 public class Transformation { 5 public static void main(String[] args)throws Exception { 6 String a; 7 boolean b; 8 Scanner in=new Scanner(System.in); 9 10 Syste

python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客

python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客 undefined Python多线程抓取代理服务器 | Linux运维笔记 undefined java如果模拟请求重启路由器(网络爬虫常用),还有java如何下载图片 - baidu_nod的专栏 - 博客频道 - CSDN.NET undefined [多线程数据采集]使用Jsoup抓取数据+破解屏蔽ip访问. - MiniBu - 开源中国社区 undefined 单linux服务器同时拨多条AD

linux c 网络编程:用域名获取IP地址或者用IP获取域名 网络地址转换成整型 主机字符顺序与网络字节顺序的转换

用域名获取IP地址或者用IP获取域名 #include<stdio.h> #include<sys/socket.h> #include<netdb.h> int main(int argc,char **aggv) { struct hostent *host; char hostname[]="www.163.com"; char hostname2[]="www.baidu.com"; struct in_addr in;

ubuntu14.04静态ip地址与动态ip地址配置

有时我们希望Ubuntu14.04的ip地址为静态ip地址,使得ubuntu中的ip地址不变,这样会方便在嵌入式设备和主机Ubuntu进行用网口进行调试. 静态ip地址的配置方法:在/etc/network/interfaces文件中,修改内容为 # interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto eth0 iface eth0 inet static #iface eth0

PHP获取IP地址及根据IP判断城市实现城市切换或跳转

PHP获取IP地址 这个比较简单了,利用PHP自带函数就可以了,PHP中文手册看一下,都有现成的例子,就不过多说明了,直接上代码,A段: ? <? //PHP获取当前用户IP地址方法 $xp_UserIp = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $xp_UserIp = ($xp_UserIp) ? $xp_

DNS反射放大攻击分析——DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器

DNS反射放大攻击分析 摘自:http://www.shaojike.com/2016/08/19/DNS%E6%94%BE%E5%A4%A7%E6%94%BB%E5%87%BB%E7%AE%80%E5%8D%95%E5%88%86%E6%9E%90/ 简介 DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器. 简单对比下正常的DNS查询和攻击者的攻击方式: 正常DNS查询:源IP地址 -–DNS查询--> DN

我的 IP 地址(View IP address)

插件介绍: 很多时候我们需要使用到IP地址,这个名词可能人人都知道,但是你知道怎么查看你自己的IP地址吗?今天为大家推荐一款查看IP地址的插件.我的 IP 地址(View IP address),此应用程序显示有关您的 IP 地址,例如地理定位. ISP. DNS,详细的信息 whois,路由. 托管. 域的邻居,DNSBL,BGP 和 ASN 信息. 使用说明: 将我的 IP 地址(View IP address)添加至chrome,并在扩展器中启动它. 功能介绍: -像 ISP. ASN.

(转)ip地址,手机ip查询

页面地址:http://www.ip138.com/ 外链地址(实际主页面里面有)http://www.ip138.com/iplink.htm 外链地址里面的内容: <FORM METHOD=get ACTION="http://www.ip138.com/ips1388.asp" name="ipform" target="_blank"><tr><td align="center">I

清除被隐藏网卡占用的IP地址,本机IP地址被占用

清除被隐藏网卡及占用的IP地址,本机IP地址被占用当主机中的网卡更换或换了一个插槽时,还要用到原来网卡的IP地址,但系统提示IP地址已经被本机中网卡占用,而主机里确实只有刚插入的网卡,这个原因就是以前插入的网卡占用了该IP地址,但它隐藏了,我们删不到它,在XP/2K3系统中解决方法如下: 方法一.在运行中输入regedit,打开注册表编辑器,找到"HKEY-LOCAL-MACHINE\System\ControlSet001\coontrol\sessionmanage\Environment,