web-dev-qa-db-ja.com

Pythonランダムに生成されたIPアドレスを文字列として

Pythonで、IPアドレスの形式でランダムな文字列を生成したい場合はどうすればよいですか?

例えば: "10.0.1.1""10.0.3.14""172.23.35.1" 等々。

誰かが私にいくつかの助けを与えることができますか?

16
changzhi
>>> import random
>>> import socket
>>> import struct
>>> socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
'197.38.59.143'
>>> socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
'228.237.175.64'

[〜#〜] note [〜#〜]0.0.0.0255.255.255.255のようなIPを生成する可能性があります。

37
falsetru

文字列が必要な場合:

import random

ip = ".".join(map(str, (random.randint(0, 255) 
                        for _ in range(4))))
29
jonrsharpe
from faker import Faker  
faker = Faker()  
ip_addr = faker.ipv4()  

リファレンス: Fake-Apache-Log-Generator

8
Sandeep Kanabar

IPアドレスの形式でランダムな文字列を生成する別の方法は次のとおりです。

>>> ip = '{}.{}.{}.{}'.format(*__import__('random').sample(range(0,255),4))
>>> ip
'45.162.105.102'
4
coder
In [123]: '.'.join('%s'%random.randint(0, 255) for i in range(4))
Out[123]: '45.204.56.200'

In [124]: '.'.join('%s'%random.randint(0, 255) for i in range(4))
Out[124]: '7.112.222.205'
4
zhangxaochen

明白すぎるかもしれませんが、範囲内でランダムなIPが必要な場合は、これを使用できます。

import random

for x in xrange(1,100):
  ip = "192.168."
  ip += ".".join(map(str, (random.randint(0, 255) 
                          for _ in range(2))))

  print ip
1

https://faker.readthedocs.io/en/latest/providers/faker.providers.internet.html

import faker
fake = Factory.create()
ip_addr = fake.ipv4(network=False)

libには、データを偽造するための他の多くの便利なオプションがあります。

1
DmitrySemenov

また、Pythonの ipaddress module も利用できます。これは、IPv4およびIPv6のアドレスとネットワークの作成、操作、および操作にさらに広く役立ちます。

import ipaddress
import random

MAX_IPV4 = ipaddress.IPv4Address._ALL_ONES  # 2 ** 32 - 1
MAX_IPV6 = ipaddress.IPv6Address._ALL_ONES  # 2 ** 128 - 1


def random_ipv4():
    return  ipaddress.IPv4Address._string_from_ip_int(
        random.randint(0, MAX_IPV4)
    )

def random_ipv6():
    return ipaddress.IPv6Address._string_from_ip_int(
        random.randint(0, MAX_IPV6)
    )

例:

>>> random.seed(444)                                                                                                                                                                                                                                         
>>> random_ipv4()                                                                                                                                                                                                                                            
'79.19.184.109'
>>> random_ipv4()                                                                                                                                                                                                                                            
'3.99.136.189'
>>> random_ipv4()                                                                                                                                                                                                                                            
'124.4.25.53'
>>> random_ipv6()                                                                                                                                                                                                                                            
'4fb7:270d:8ba9:c1ed:7124:317:e6be:81f2'
>>> random_ipv6()                                                                                                                                                                                                                                            
'fe02:b348:9465:dc65:6998:6627:1300:29c9'
>>> random_ipv6()                                                                                                                                                                                                                                            
'74a:dd88:1ff2:bfe3:1f3:81ad:debd:db88'
1
Brad Solomon