모듈:IP/doc
Module| 이 Lua 모듈은 시스템메시지 및 약 111,000페이지에 사용됩니다. 이를 변경하면 Wikipedia 사용자 인터페이스가 즉시 변경될 수 있습니다. 중대한 중단과 서버 로드를 방지하려면 모듈의 /sandbox 또는 /testcase 서브페이지 또는 자체 모듈 샌드박스에서 변경을 테스트해야 합니다.테스트한 변경은 한 번의 편집으로 이 페이지에 추가할 수 있습니다.토크 페이지에서 변경 사항을 논의한 후 구현하십시오. |
모듈: IP는 IP 주소 및 서브넷을 사용하기 위한 라이브러리입니다.IPv4 와 IPv6 의 양쪽 모두를 처리할 수 있습니다.라이브러리는 IPAddress, 서브넷, IPv4Collection 및 IPv6Collection의 4가지 클래스를 내보냅니다.
라이브러리 로드 중
현지의 아이피 = 요구하다('모듈:IP') 현지의 IP 주소 = 아이피.IP 주소 현지의 서브넷 = 아이피.서브넷 IP 주소
IPAddress 클래스는 단일 IP 주소로 동작하기 위해 사용됩니다.새 IPAddress 개체를 만들려면 다음 절차를 수행합니다.
현지의 ipAddress(IP 주소) = IP 주소.신규(ipString) ipString 변수는 유효한 IPv4 또는 IPv6 주소일 수 있습니다.
예:
현지의 ipv4 주소 = IP 주소.신규('1.2.3.4') 현지의 ipv6 주소 = IP 주소.신규('2001:db8::ff00:12:3456') IPAddress 객체는 관계 연산자와 비교할 수 있습니다.
-- 평등 IP 주소.신규('1.2.3.4') == IP 주소.신규('1.2.3.4') -- 참 IP 주소.신규('1.2.3.4') == IP 주소.신규('1.2.3.5') -- false(거짓말 -- 미만/이상 IP 주소.신규('1.2.3.4') < IP 주소.신규('1.2.3.5') -- 참 IP 주소.신규('1.2.3.4') > IP 주소.신규('1.2.3.5') -- false(거짓말 IP 주소.신규('1.2.3.4') <=> IP 주소.신규('1.2.3.5') -- 참 IP 주소.신규('1.2.3.4') <=> IP 주소.신규('1.2.3.4') -- 참 torstring을 사용할 수 있습니다(이는 get을 사용하는 것과 동일합니다).IP):
스트링(IP 주소.신규('1.2.3.4')) -- "1.2.3.4" 스트링(IP 주소.신규('2001:db8::ff00:12:3456')) -- "2001:db8::ff00:12:3456" -- 확장 IPv6 주소는 다음과 같이 생략됩니다. 스트링(IP 주소.신규('2001:db8:0:0:0:0:0:0:0:0')) -- "2001:db8::" 또한 다음과 같이 연결할 수도 있습니다.
IP 주소.신규('1.2.3.4') .. '푸' -- "1.2.3.4 foo" IP 주소.신규('1.2.3.4') .. IP 주소.신규('5.6.7.8') -- "1.2.3.45.6.7.8" IPAddress 개체에는 다음과 같은 여러 가지 메서드가 있습니다.
IP를 취득하다
ipAddress(IP 주소):IP를 취득하다() IP 주소의 문자열 표현을 반환합니다.IPv6 주소는 가능하면 생략됩니다.
예:
IP 주소.신규('1.2.3.4'):IP를 취득하다() -- "1.2.3.4" IP 주소.신규('2001:db8::ff00:12:3456'):IP를 취득하다() -- "2001:db8::ff00:12:3456" IP 주소.신규('2001:db8:0:0:0:0:0:0:0:0'):IP를 취득하다() -- "2001:db8::" getVersion
ipAddress(IP 주소):getVersion() 사용 중인 IP 프로토콜의 버전을 반환합니다.IPv4 주소의 경우는 「IPv4」, IPv6 주소의 경우는 「IPv6」입니다.
예:
IP 주소.신규('1.2.3.4'):getVersion() -- 「IPv4」 IP 주소.신규('2001:db8::ff00:12:3456'):getVersion() -- 「IPv6」 ISIPv4
ipAddress(IP 주소):ISIPv4() IP 주소가 IPv4 주소인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
예:
IP 주소.신규('1.2.3.4'):ISIPv4() -- 참 IP 주소.신규('2001:db8::ff00:12:3456'):ISIPv4() -- false(거짓말 IPv6
ipAddress(IP 주소):IPv6() IP 주소가 IPv6 주소인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
예:
IP 주소.신규('1.2.3.4'):IPv6() -- false(거짓말 IP 주소.신규('2001:db8::ff00:12:3456'):IPv6() -- 참 is In Subnet
ipAddress(IP 주소):is In Subnet(서브넷) IP 주소가 서브넷에 있는 경우 true를 반환합니다.subnet, 그 이외의 경우는 false 입니다. subnet서브넷 오브젝트 또는 CIDR 스트링입니다.
예:
IP 주소.신규('1.2.3.4'):is In Subnet('1.2.3.0/24') -- 참 IP 주소.신규('1.2.3.4'):is In Subnet('1.2.4.0/24') -- false(거짓말 IP 주소.신규('1.2.3.4'):is In Subnet(서브넷.신규('1.2.3.0/24')) -- 참 IP 주소.신규('2001:db8::ff00:12:3456'):is In Subnet('2001:db8::ff00:12:0/112') -- 참 서브넷을 취득하다
ipAddress(IP 주소):서브넷을 취득하다(비트 길이) 비트 길이의 서브넷 개체를 반환합니다.bitLength현재 IP가 포함되어 있습니다.그bitLength파라미터는, IPv4 주소의 경우는 0 ~32 의 정수, IPv6 주소의 경우는 0 ~128 의 정수여야 합니다.
예:
IP 주소.신규('1.2.3.4'):서브넷을 취득하다(24) -- Subnet.new ('1.2.3.0/24')에 상당합니다. Next IP를 취득하다
ipAddress(IP 주소):Next IP를 취득하다() 현재 IP 주소에 해당하는 새 IPAddress 개체를 1씩 증분하여 반환합니다.IPv4 주소 「255.255.255.255」는 「0.0.0」으로 롤오버 하고, IPv6 주소 「fff:fff:fff:fff:fff:fff:fff:fff:fff:fff:fff:fff」는 「:」로 롤오버 합니다.
예:
IP 주소.신규('1.2.3.4'):Next IP를 취득하다() -- IPAddress.new('1.2.3.5')에 상당합니다. IP 주소.신규('2001:db8::ff00:12:3456'):Next IP를 취득하다() -- IPAddress.new ('2001:db8:ff00:12:3457')에 상당합니다. IP 주소.신규('255.255.255.255'):Next IP를 취득하다() -- IPAddress.new('0.0.0')에 상당합니다. 이전을 취득하다아이피
ipAddress(IP 주소):이전을 취득하다아이피() 현재 IP 주소에 해당하는 새 IPAddress 개체를 1씩 감소시킵니다.IPv4 주소 「0.0.0」은 「255.255.255」로 롤오버 하고, IPv6 주소 「:」는 「fff:fff:fff:fff:fff:fff:fff:fff:fff:fff:fff:fff:fff:fff」로 롤오버 합니다.
예:
IP 주소.신규('1.2.3.4'):이전을 취득하다아이피() -- IPAddress.new('1.2.3.3')에 상당합니다. IP 주소.신규('2001:db8::ff00:12:3456'):이전을 취득하다아이피() -- IPAddress.new ('2001:db8:ff00:12:3455')에 상당합니다. IP 주소.신규('0.0.0.0'):이전을 취득하다아이피() -- IPAddress.new('255.255.255.255')에 상당합니다. 서브넷
Subnet 클래스는, IPv4 또는 IPv6 주소의 서브 네트워크를 조작하기 위해서 사용됩니다.새 서브넷 개체를 만들려면:
현지의 서브넷 = 서브넷.신규(cidrString) cidrString유효한 IPv4 또는 IPv6 CIDR 문자열이어야 합니다.
서브넷 개체를 비교하여 동등함을 확인할 수 있습니다.
서브넷.신규('1.2.3.0/24') == 서브넷.신규('1.2.3.0/24') -- 참 서브넷.신규('1.2.3.0/24') == 서브넷.신규('1.2.3.0/25') -- false(거짓말 서브넷.신규('1.2.3.0/24') == 서브넷.신규('2001:db8::ff00:12:0/112') -- false(거짓말 서브넷.신규('2001:db8::ff00:12:0/112') == 서브넷.신규('2001:db8::ff00:12:0/112') -- 참 서브넷.신규('2001:db8:0:0:0:0:0/112') == 서브넷.신규('2001:db8:/112') -- 참 torstring을 사용할 수 있습니다(이는 getCIDR에 해당합니다).
스트링(서브넷.신규('1.2.3.0/24')) -- "1.2.3.0/24" 스트링(서브넷.신규('2001:db8::ff00:12:0/112')) -- "2001:db8::ff00:12:0/112" 스트링(서브넷.신규('2001:db8:0:0:0:0:0/112')) -- "2001:db8:/112" 또한 다음과 같이 연결할 수도 있습니다.
서브넷.신규('1.2.3.0/24') .. '푸' -- "1.2.3.0/24 foo" 서브넷.신규('1.2.3.0/24') .. 서브넷.신규('4.5.6.0/24') -- "1.2.3.0/244.5.6.0/24" 서브넷 개체에는 다음과 같은 여러 가지 메서드가 있습니다.
get Prefix(프리픽스)
서브넷:get Prefix(프리픽스)() 서브넷 내의 최소 IP 주소의 IPAddress 개체를 반환합니다.
예:
서브넷.신규('1.2.3.0/24'):get Prefix(프리픽스)() -- IPAddress.new('1.2.3.0')에 상당합니다. 서브넷.신규('2001:db8::ff00:12:0/112'):get Prefix(프리픽스)() -- IPAddress.new ('2001:db8:ff00:12:0')에 상당합니다. 가장 높은 값을 취득아이피
서브넷:가장 높은 값을 취득아이피() 서브넷에서 가장 높은 IP 주소의 IPAddress 개체를 반환합니다.
예:
서브넷.신규('1.2.3.0/24'):가장 높은 값을 취득아이피() -- IPAddress.new('1.2.3.255')에 상당합니다. 서브넷.신규('2001:db8::ff00:12:0/112'):가장 높은 값을 취득아이피() -- IPAddress.new ('2001:db8:ff00:12:fff')에 상당합니다. getBitLength
서브넷:getBitLength() 서브넷의 비트 길이를 반환합니다.IPv4 주소의 경우는 0 ~32 의 정수, IPv6 주소의 경우는 0 ~128 의 정수입니다.
예:
서브넷.신규('1.2.3.0/24'):getBitLength() -- 24 서브넷.신규('2001:db8::ff00:12:0/112'):getBitLength() -- 112 CIDR을 취득하다
서브넷:CIDR을 취득하다() 서브넷의 CIDR 문자열 표현을 반환합니다.
예:
서브넷.신규('1.2.3.0/24'):CIDR을 취득하다() -- "1.2.3.0/24" 서브넷.신규('2001:db8::ff00:12:0/112'):CIDR을 취득하다() -- "2001:db8::ff00:12:0/112" 서브넷.신규('2001:db8:0:0:0:0:0/112'):CIDR을 취득하다() -- "2001:db8:/112" getVersion
서브넷:getVersion() 사용 중인 IP 프로토콜의 버전을 반환합니다.IPv4 주소의 경우는 「IPv4」, IPv6 주소의 경우는 「IPv6」입니다.
예:
서브넷.신규('1.2.3.0/24'):getVersion() -- 「IPv4」 서브넷.신규('2001:db8::ff00:12:0/112'):getVersion() -- 「IPv6」 ISIPv4
서브넷:ISIPv4() 서브넷이 IPv4 를 사용하고 있는 경우는 true 를 반환하고, 그렇지 않은 경우는 false 를 반환합니다.
예:
서브넷.신규('1.2.3.0/24'):ISIPv4() -- 참 서브넷.신규('2001:db8::ff00:12:0/112'):ISIPv4() -- false(거짓말 IPv6
서브넷:IPv6() 서브넷이 IPv6 를 사용하고 있는 경우는 true 를 반환하고, 그렇지 않은 경우는 false 를 반환합니다.
예:
서브넷.신규('1.2.3.0/24'):IPv6() -- false(거짓말 서브넷.신규('2001:db8::ff00:12:0/112'):IPv6() -- 참 포함하다아이피
서브넷:포함하다아이피(아이피) 서브넷에 IP 주소가 포함되어 있으면 true를 반환합니다.ip, 그 이외의 경우는 false 입니다. ip는 IP 주소 문자열 또는 IPAddress 개체일 수 있습니다.
예:
서브넷.신규('1.2.3.0/24'):포함하다아이피('1.2.3.4') -- 참 서브넷.신규('1.2.3.0/24'):포함하다아이피('1.2.4.4') -- false(거짓말 서브넷.신규('1.2.3.0/24'):포함하다아이피(IP 주소.신규('1.2.3.4')) -- 참 서브넷.신규('2001:db8::ff00:12:0/112'):포함하다아이피('2001:db8::ff00:12:3456') -- 참 중복 서브넷
서브넷:중복 서브넷(서브넷) 현재 서브넷이 다음 서브넷과 겹치면 true를 반환합니다.subnet, 그 이외의 경우는 false 입니다. subnet는 CIDR 문자열 또는 서브넷오브젝트입니다
예:
서브넷.신규('1.2.3.0/24'):중복 서브넷('1.2.0.0/16') -- 참 서브넷.신규('1.2.3.0/24'):중복 서브넷('1.2.12.0/22') -- false(거짓말 서브넷.신규('1.2.3.0/24'):중복 서브넷(서브넷.신규('1.2.0.0/16')) -- 참 서브넷.신규('2001:db8::ff00:12:0/112'):중복 서브넷('2001:db8::ff00:0:0/96') -- 참 걸어.
서브넷:걸어.() 워크 메서드는 서브넷 내의 모든 IPAddress 개체에 대해 반복합니다.
예:
위해서 ipAddress(IP 주소) 에 서브넷.신규('192.168.0.0/30'):걸어.() 하다 음.로그.(스트링(ipAddress(IP 주소))) 끝. -- 192.168.0.0 -- 192.168.0.1 -- 192.168.0.2 -- 192.168.0.3 IPv4 컬렉션
IPv4 Collection 클래스는, 복수의 다른 IPv4 주소 및 IPv4 서브넷을 조작하기 위해서 사용됩니다.새 IPv4Collection 개체를 만들려면:
현지의 수집 = IPv4 컬렉션.신규() IPv4Collection 개체에는 다음과 같은 몇 가지 메서드가 있습니다.
getVersion
수집:getVersion() 문자열 "IPv4"를 반환합니다.
add IP
수집:add IP(아이피) 컬렉션에 IP를 추가합니다.IP는 문자열 또는 IPAddress 개체 중 하나입니다.
예:
수집:add IP('1.2.3.4') 수집:add IP(IP 주소.신규('1.2.3.4')) 이 방법은 체인 가능합니다.
수집:add IP('1.2.3.4'):add IP('5.6.7.8') addSubnet(서브넷 추가)
수집:addSubnet(서브넷 추가)(서브넷) 컬렉션에 서브넷을 추가합니다.서브넷은 CIDR 문자열 또는 서브넷오브젝트 중 하나입니다.
예:
수집:addSubnet(서브넷 추가)('1.2.3.0/24') 수집:addSubnet(서브넷 추가)(서브넷.신규('1.2.3.0/24')) 이 방법은 체인 가능합니다.
수집:addSubnet(서브넷 추가)('1.2.0.0/24'):addSubnet(서브넷 추가)('1.2.1.0/24') addFromString
수집:addFromString(스트레이트) 모든 IPv4 주소 및 IPv4 CIDR 서브넷을str컬렉션에 추가합니다.IPv4 주소 또는 CIDR 서브넷이 아닌 텍스트는 무시됩니다.
예:
수집:addFromString('일부 IP 및 서브넷 추가: 1.2.3.4 1.2.5 2001:0::f foo 1.2.4.0/24') 이 방법은 체인 가능합니다.
수집:addFromString('foo 1.2.3.4'):addFromString('바 5.6.7.8') 포함하다아이피
수집:포함하다아이피(아이피) 컬렉션에 지정된 IP가 포함되어 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.그ip파라미터는 문자열 또는 IPAddress 객체입니다.
예:
수집:포함하다아이피('1.2.3.4') 수집:포함하다아이피(IP 주소.신규('1.2.3.4')) 범위 설정
수집:범위 설정() 컬렉션에 해당하는 정렬된 IP 쌍의 배열을 반환합니다.각 IP 쌍은 쌍[1]부터 쌍[2]까지 연속된 범위의 IP 주소를 나타내는 배열입니다.쌍[1] 및 쌍[2]은 IPAddress 객체입니다.
예:
수집:addSubnet(서브넷 추가)('1.2.0.0/24') 수집:addSubnet(서브넷 추가)('1.2.1.0/24') 수집:addSubnet(서브넷 추가)('1.2.10.0/24') 음.log Object(로그 오브젝트)(수집:범위 설정()) -- 다음을 기록합니다. -- 표 #1 { -- 표 #2 { -- 1.2.0.0, -- 1.2.1.255, -- }, -- 표 #3 { -- 1.2.10.0, -- 1.2.10.255, -- }, -- } 중복 서브넷
수집:중복 서브넷(서브넷) true를 반환한다.obj ifsubnet는 이 컬렉션을 오버랩합니다.obj는 서브넷과 오버랩하는 첫 번째 IPAddress 또는 서브넷오브젝트입니다그렇지 않으면 false를 반환합니다. subnet는 CIDR 문자열 또는 서브넷오브젝트입니다
예:
수집:add IP('1.2.3.4') 수집:중복 서브넷('1.2.3.0/24') -- true, IPAddress.new('1.2.3.4') 수집:중복 서브넷('1.2.4.0/24') -- false(거짓말 IPv6 수집
IPv6 Collection 클래스는, 복수의 다른 IPv6 주소 및 IPv6 서브넷에 대해 동작하기 위해서 사용됩니다.IPv6Collection 객체는 IPv4Collection 객체와 직접 유사합니다.이 객체는 동일한 메서드를 포함하고 동일한 방식으로 작동하지만 추가된 모든 IP 주소와 서브넷은 IPv4가 아닌 IPv6이어야 합니다.
새 IPv6Collection 개체를 만들려면:
현지의 수집 = IPv6 수집.신규()