ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

在python和bash中处理IP和端口

2019-08-31 02:56:23  阅读:254  来源: 互联网

标签:python bash ip-address


使用python和bash,我想完成两件事:

>需要将[fec2 :: 10]:80格式的ipv6地址和端口组合拆分为fec2 :: 10和80.
>鉴于IP地址和端口组合,我需要确定IP是v4还是v6地址.例如:1.2.3.4:80和[fec2 :: 10]:80

请建议一种方法来做到这一点.

谢谢!

示例代码:

#!/usr/bin/env python

import optparse

def main():
    server = "[fec1::1]:80"
    if server.find("[", 0, 2) == -1:
       print "IPv4"
       ip, port = server.split(':')
    else:
       print "IPv6"
       new_ip, port = server.rsplit(':', 1)
       print new_ip
       ip = new_ip.strip('[]')

    print ip
    print port

if __name__ == '__main__':
    main()

这适用于所有情况,除非在没有端口的情况下指定输入.例如:10.78.49.50和[fec2 :: 10]

有什么建议可以解决吗?

解决方法:

假设your_input类似于“[fec2 :: 10]:80”或“1.2.3.4:80”,很容易拆分端口并找出ip地址:

#!/usr/bin/env python3
from ipaddress import ip_address

ip, separator, port = your_input.rpartition(':')
assert separator # separator (`:`) must be present
port = int(port) # convert to integer
ip = ip_address(ip.strip("[]")) # convert to `IPv4Address` or `IPv6Address` 
print(ip.version) # print ip version: `4` or `6`

标签:python,bash,ip-address
来源: https://codeday.me/bug/20190831/1772627.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有