Topik ini menjelaskan sintaksis dan parameter fungsi penguraian alamat IP serta memberikan contoh penggunaannya.
Fungsi
Fungsi | Deskripsi |
Mengidentifikasi kota, provinsi, dan negara berdasarkan alamat IP. | |
Memeriksa apakah alamat IP termasuk dalam blok Classless Inter-Domain Routing (CIDR). | |
Memeriksa apakah versi alamat IP adalah IPv4 atau IPv6. | |
Mengidentifikasi jenis alamat IP dan memeriksa apakah jenis alamat IP tersebut adalah pribadi atau publik. | |
Mengonversi alamat IP menjadi blok CIDR. | |
Mengonversi format blok CIDR ke format yang menentukan netmask atau panjang prefix dari blok CIDR. | |
Memeriksa apakah dua blok CIDR tumpang tindih. | |
Mengonversi alamat IP menjadi nilai bertipe long. | |
Mengonversi nilai bertipe long menjadi alamat IP. |
geo_parse
Fungsi geo_parse digunakan untuk mengidentifikasi kota, provinsi, dan negara berdasarkan alamat IP.
geo_parse(ip, ip_db="SLS-GeoIP", keep_fields=None, provider="ipip", ip_sep=None)Parameter
Tipe
Diperlukan
Deskripsi
ip
String
Ya
Alamat IP yang ingin Anda uraikan untuk mendapatkan kota, provinsi, dan negara tempat alamat IP tersebut berada. Jika Anda ingin memasukkan beberapa alamat IP, Anda dapat menentukan pemisah dengan menggunakan parameter ip_sep.
ip_db
String
Ya
Basis data alamat IP yang digunakan untuk menguraikan alamat IP menjadi kota, provinsi, dan negara tempat alamat IP tersebut berada. Nilai valid:
SLS-GeoIP: basis data alamat IP bawaan Layanan Log Sederhana. Ini adalah nilai default. Untuk memastikan akurasi, basis data alamat IP bawaan Layanan Log Sederhana diperbarui setiap hari. Anda dapat menggunakan basis data tanpa perlu konfigurasi tambahan.
Basis data alamat IP kustom: Atur nilainya ke
res_oss_file(endpoint, ak_id, ak_key, bucket, file, format='binary', change_detect_interval=0,fetch_interval=2,refresh_retry_max=60,encoding='utf8',error='ignore'). Untuk informasi lebih lanjut tentang parameter dalam fungsi res_oss_file, lihat res_oss_file.
keep_fields
Tuple
Tidak
Kunci-kunci yang disertakan dalam respons.
Jika Anda menggunakan basis data alamat IP bawaan untuk menguraikan alamat IP, kunci-kunci berikut disertakan secara default dalam respons:
city: nama kota
province: nama provinsi
country: nama negara
city_en: kode administratif atau nama kota
province_en: kode administratif atau nama provinsi
country_en: kode atau nama negara/wilayah
isp: nama penyedia layanan internet (ISP)
lat: garis lintang lokasi tempat alamat IP tersebut berada
lon: garis bujur lokasi tempat alamat IP tersebut berada
Jika Anda menggunakan basis data alamat IP kustom untuk menguraikan alamat IP, kunci-kunci berikut disertakan secara default dalam respons:
city: nama kota
province: nama provinsi
country: nama negara
Sebagai contoh,
keep_fields=("city","country")menunjukkan bahwa kuncicitydancountrydikembalikan.Parameter
keep_fieldsjuga dapat digunakan untuk mengganti nama kunci. Sebagai contoh,(("city","cty"),("country","state"))menunjukkan bahwa kunci city dan country diubah menjadictydanstatedalam hasil yang dikembalikan.provider
String
Tidak
Parameter ini hanya valid ketika parameter ip_db diatur ke basis data alamat IP kustom. Nilai valid:
ipip: Basis data alamat IP biner yang disediakan oleh IPIP dalam format IPDB digunakan untuk menguraikan alamat IP. Untuk mengunduh basis data, kunjungi ipip. Ini adalah nilai default.
ip2location: Basis data alamat IP global biner yang disediakan oleh IP2Location digunakan untuk menguraikan alamat IP. Untuk mengunduh basis data, kunjungi ip2location. Hanya basis data alamat IP biner yang didukung.
ip_sep
String
Tidak
Pemisah alamat IP. Pemisah digunakan untuk memisahkan string alamat IP menjadi beberapa alamat IP. Respons dalam format JSON. Nilai default: None. Nilai ini menentukan bahwa string alamat IP tidak dipisahkan.
Kamus dikembalikan dalam format berikut:
{ "city": "...", "province":"...", "country": "..." }Contoh 1: Gunakan basis data alamat IP bawaan Layanan Log Sederhana untuk menanyakan data.
Log mentah:
ip : 203.0.113.1Aturan transformasi:
e_set("geo", geo_parse(v("ip")))Hasil:
ip : 203.0.113.1 geo: {"city":"Hangzhou","province":"Zhejiang province","country":"China","isp":"China Mobile","lat":30.16,"lon":120.12}
Contoh 2: Gunakan basis data alamat IP bawaan Layanan Log Sederhana untuk menanyakan data. Fungsi menguraikan bidang log yang berisi beberapa alamat IP dan mengembalikan kota, provinsi, dan negara tempat masing-masing alamat IP berada.
Log mentah:
ip : 203.0.113.4, 192.0.2.2, 198.51.100.2Aturan transformasi:
e_set("geo", geo_parse(v("ip"), ip_sep=","))Hasil:
ip : 203.0.113.4, 192.0.2.2, 198.51.100.2 geo : {"203.0.113.4": {"country_en": "CN", "province_en": "330000", "city_en": "330200", "country": "China", "province": "Zhejiang province", "city": "Ningbo", "isp": "China Telecom", "lat": 29.8782, "lon": 121.549}, "192.0.2.2": {"country_en": "CN", "province_en": "320000", "city_en": "321300", "country": "China", "province": "Jiangsu province", "city": "Suqian", "isp": "China Telecom", "lat": 33.9492, "lon": 118.296}, "198.51.100.2": {"country_en": "CN", "province_en": "330000", "city_en": "330500", "country": "China", "province": "Zhejiang province", "city": "Huzhou", "isp": "China Telecom", "lat": 30.8703, "lon": 120.093}}
Contoh 3: Gunakan basis data alamat IP kustom untuk menanyakan data.
Log mentah:
ip : 203.0.113.1Aturan transformasi:
e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com', ak_id='your ak_id', ak_key='your ak_key', bucket='your bucket', file='ipipfree.ipdb', format='binary',change_detect_interval=20)))Hasil:
ip : 203.0.113.1 geo : {"city": "Hangzhou", "province":"Zhejiang province","country": "China"}
Contoh 4: Gunakan basis data alamat IP kustom untuk menanyakan data. Fungsi mengembalikan kunci yang ditentukan dan mengganti nama kunci.
Log mentah:
ip : 203.0.113.1Aturan transformasi:
e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com', ak_id='your ak_id', ak_key='your ak_key', bucket='your bucket', file='ipipfree.ipdb', format='binary',change_detect_interval=20),keep_fields=(("city","cty"),("country","state"),("province","pro"))))Hasil:
ip : 203.0.113.1 geo : { "state": "China","pro": "Zhejiang province","cty": "Hangzhou"}
Contoh 5: Gunakan basis data alamat IP kustom untuk menanyakan data. Fungsi mengembalikan kunci yang ditentukan.
Log mentah:
ip : 203.0.113.1Aturan transformasi:
e_set("geo",geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com', ak_id='your ak_id', ak_key='your ak_key', bucket='your bucket', file='ipipfree.ipdb', format='binary',change_detect_interval=20),keep_fields=("country","province")))Hasil:
ip : 203.0.113.1 geo : { "country": "China","province": "Zhejiang province"}
Contoh 6: Gunakan basis data alamat IP kustom untuk menanyakan data dan gunakan basis data alamat IP global biner yang disediakan oleh IP2Location untuk mengurai data. Fungsi mengembalikan kunci yang ditentukan.
Log mentah:
ip : 203.0.113.2Aturan transformasi:
e_set("geo", geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com',ak_id="your ak_id", ak_key="your ak_secret", bucket='log-etl-staging', file='your ip2location bin file', format='binary', change_detect_interval=20),provider="ip2location"))Hasil:
ip : 203.0.113.2 geo : {"city":"Dearborn","province":"Michigan","country":"United States"}
Jika Anda mengatur nilai parameter provider ke ip2location, SDK sumber terbuka untuk Python yang disediakan oleh IP2Location digunakan untuk transformasi data. SDK untuk Python yang disediakan oleh IP2Location dapat digunakan untuk mengurai bidang berikut. Jika sebuah bidang gagal diurai, Anda harus memeriksa apakah bidang tersebut termasuk dalam basis data alamat IP yang disediakan oleh IP2Location.
country_short country_long / Bidang negara ditentukan untuk transformasi data. region / Bidang provinsi ditentukan untuk transformasi data. city isp latitude longitude domain zipcode timezone netspeed idd_code area_code weather_code weather_name mcc mnc mobile_brand elevation usage_typeUntuk informasi lebih lanjut, kunjungi SDK Python IP2Location.
Contoh 7: Gunakan basis data alamat IP kustom untuk menanyakan data. Fungsi menguraikan bidang log yang berisi beberapa alamat IP dan mengembalikan kota, provinsi, dan negara tempat masing-masing alamat IP berada.
Log mentah:
ip : 203.0.113.3, 192.0.2.1, 198.51.100.1Aturan transformasi:
e_set("geo", geo_parse(v("ip"), ip_db=res_oss_file(endpoint='http://oss-cn-hangzhou.aliyuncs.com', ak_id="ak_id", ak_key="ak_secret", bucket='log-etl-staging', file='calendar.csv/IP2LOCATION-LITE-DB3.BIN', format='binary', change_detect_interval=20), provider="ip2location", ip_sep=","))Hasil:
ip : 203.0.113.3, 192.0.2.1, 198.51.100.1 geo : {"203.0.113.3": {"city": "Dearborn", "province": "Michigan", "country": "United States"}, "192.0.2.1": {"city": "Hangzhou", "province": "Zhejiang", "country": "China"}, "198.51.100.1": {"city": "Hangzhou", "province": "Zhejiang", "country": "China"}}
ip_cidrmatch
Contoh 1: Alamat IPv4 yang ditentukan termasuk dalam blok CIDR yang ditentukan. Fungsi mengembalikan true.
ip_cidrmatch(cidr_subnet, ip, default="")Parameter
Tipe
Diperlukan
Deskripsi
cidr_subnet
String
Ya
Blok CIDR. Contoh: 192.168.1.0/24.
ip
String
Ya
Alamat IP.
default
String
Tidak
Jika alamat IP tidak termasuk dalam blok CIDR, nilai parameter ini dikembalikan. Anda dapat meninggalkan parameter ini kosong.
Jika alamat IP yang ditentukan termasuk dalam blok CIDR yang ditentukan, fungsi akan mengembalikan nilai true. Jika tidak, fungsi akan mengembalikan nilai false.
Contoh 1: Alamat IPv4 yang ditentukan termasuk dalam blok CIDR yang ditentukan. Fungsi mengembalikan true.
Log mentah:
cidr_subnet: 192.168.1.0/24 ip: 192.168.1.100Aturan transformasi:
e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip")))Hasil:
cidr_subnet: 192.168.1.0/24 ip: 192.168.1.100 is_belong: true
Contoh 2: Alamat IPv4 yang ditentukan tidak termasuk dalam blok CIDR yang ditentukan. Fungsi mengembalikan false.
Log mentah:
cidr_subnet: 192.168.1.0/24 ip: 10.10.1.100Aturan transformasi:
e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip")))Hasil:
cidr_subnet: 192.168.1.0/24 ip: 10.10.1.100 is_belong: false
Contoh 3: Fungsi tidak dapat menentukan apakah alamat IP yang ditentukan termasuk dalam blok CIDR dan mengembalikan unknown.
Log mentah:
cidr_subnet: 192.168.1.0/24 ip: aAturan transformasi:
e_set("is_belong",ip_cidrmatch(v("cidr_subnet"),v("ip"),default="unknown"))Hasil:
cidr_subnet: 192.168.1.0/24 ip: a is_belong: unknown
ip_version
Fungsi ip_version digunakan untuk memeriksa apakah versi alamat IP adalah IPv4 atau IPv6. Jika versi alamat IP adalah IPv4, fungsi mengembalikan IPv4. Jika versi alamat IP adalah IPv6, fungsi mengembalikan IPv6.
ip_version(ip, default="")Parameter
Tipe
Diperlukan
Deskripsi
ip
String
Ya
Alamat IP.
default
String
Tidak
Jika versi alamat IP yang ditentukan gagal diidentifikasi, nilai parameter ini dikembalikan. Anda dapat meninggalkan parameter ini kosong.
IPv6 atau IPv4 dikembalikan.
Contoh 1: Alamat IP yang ditentukan adalah alamat IPv4. Fungsi mengembalikan IPv4.
Log mentah:
ip: 192.168.1.100Aturan transformasi:
e_set("version",ip_version(v("ip")))Hasil:
ip: 192.168.1.100 version: IPv4
Contoh 2: Alamat IP yang ditentukan adalah alamat IPv6. Fungsi mengembalikan IPv6.
Log mentah:
ip: ::1Aturan transformasi:
e_set("version",ip_version(v("ip")))Hasil:
ip: ::1 version: IPv6
ip_type
Fungsi ip_type digunakan untuk mengidentifikasi jenis alamat IP dan memeriksa apakah jenis alamat IP tersebut adalah pribadi atau publik. Nilai valid: private, reserved, loopback, public, dan allocated ripe ncc.
ip_type(ip, default="")Parameter
Tipe
Diperlukan
Deskripsi
ip
String
Ya
Alamat IP.
default
String
Tidak
Jika jenis alamat IP yang ditentukan gagal diidentifikasi, nilai parameter ini dikembalikan. Anda dapat meninggalkan parameter ini kosong.
Nilai yang menunjukkan jenis alamat IP yang dikembalikan. Nilai valid: private, reserved, loopback, public, dan allocated ripe ncc.
Contoh 1: Identifikasi jenis alamat IP yang ditentukan. Fungsi mengembalikan loopback.
Log mentah:
ip: 127.0.0.1Aturan transformasi:
e_set("type",ip_type(v("ip")))Hasil:
ip: 127.0.0.1 type: loopback
Contoh 2: Identifikasi jenis alamat IP yang ditentukan. Fungsi mengembalikan private.
Log mentah:
ip: 47.100.XX.XXAturan transformasi:
e_set("type",ip_type(v("ip")))Hasil:
ip: 47.100.XX.XX type: private
Contoh 3: Identifikasi jenis alamat IP yang ditentukan. Fungsi mengembalikan public.
Log mentah:
ip: 47.100.XX.XXAturan transformasi:
e_set("type",ip_type(v("ip")))Hasil:
ip: 47.100.XX.XX type: public
Contoh 4: Identifikasi jenis alamat IPv6 yang ditentukan. Fungsi mengembalikan loopback.
Log mentah:
ip: ::1Aturan transformasi:
e_set("type",ip_type(v("ip")))Hasil:
ip: ::1 type: loopback
Contoh 5: Identifikasi jenis alamat IPv6 yang ditentukan. Fungsi mengembalikan allocated ripe ncc.
Log mentah:
ip: 2001:0658:022a:cafe:0200::1Aturan transformasi:
e_set("type",ip_type(v("ip")))Hasil:
ip: 2001:0658:022a:cafe:0200::1 type: allocated ripe ncc
ip_makenet
Fungsi ip_makenet digunakan untuk mengonversi alamat IP menjadi blok CIDR.
ip_makenet(ip, subnet_mask=None, default="")Parameter
Tipe
Diperlukan
Deskripsi
ip
String
Ya
Alamat IP.
subnet_mask
String
Ya
Subnet mask. Contoh: 255.255.255.0.
CatatanJika Anda mengatur parameter ip ke rentang alamat IP, Anda dapat meninggalkan parameter subnet_mask kosong.
default
String
Tidak
Jika alamat IP yang ditentukan gagal dikonversi menjadi blok CIDR, nilai parameter ini dikembalikan. Anda dapat meninggalkan parameter ini kosong.
Blok CIDR telah dikembalikan.
Contoh 1: Konversi alamat IP menjadi blok CIDR.
Log mentah:
ip: 192.168.1.0Aturan transformasi:
e_set("makenet",ip_makenet(v("ip"),"255.255.255.0"))Hasil:
ip: 192.168.1.0 makenet: 192.168.1.0/24
Contoh 2: Konversi rentang alamat IP menjadi blok CIDR.
Log mentah:
ip: 192.168.1.0-192.168.1.255Aturan transformasi:
e_set("makenet",ip_makenet(v("ip")))Hasil:
ip: 192.168.1.0-192.168.1.255 makenet: 192.168.1.0/24
Contoh 3: Konversi rentang alamat IP menjadi blok CIDR.
Log mentah:
ip: 192.168.1.0/255.255.255.0Aturan transformasi:
e_set("makenet",ip_makenet(v("ip")))Hasil:
ip: 192.168.1.0/255.255.255.0 makenet: 192.168.1.0/24
ip_to_format
Fungsi ip_to_format digunakan untuk mengonversi format blok CIDR ke format yang menentukan netmask atau panjang prefix dari blok CIDR.
ip_to_format(cidr_subnet, want_prefix_len=0, default="")Parameter
Tipe
Diperlukan
Deskripsi
cidr_subnet
String
Ya
Blok CIDR. Contoh: 192.168.1.0/24.
want_prefix_len
Int
Tidak
Format blok CIDR keluaran. Nilai default: 0. Nilai valid:
0: mengembalikan blok CIDR asli.
1: mengembalikan alamat IP dan panjang prefix alamat IP.
2: mengembalikan alamat IP dan netmask alamat IP.
3: mengembalikan rentang alamat IP.
default
String
Tidak
Jika format blok CIDR yang ditentukan gagal dikonversi ke format yang ditentukan, nilai parameter ini dikembalikan. Anda dapat meninggalkan parameter ini kosong.
Blok CIDR dalam format yang telah ditentukan dikembalikan.
Contoh 1: Format blok CIDR tidak dikonversi.
Log mentah:
ip: 192.168.1.0/24Aturan transformasi:
e_set("strNormal",ip_to_format(v("ip"),0))Hasil:
ip: 192.168.1.0/24 strNormal: 192.168.1.0/24
Contoh 2: Konversi format blok CIDR ke format yang menentukan panjang prefix blok CIDR.
Log mentah:
ip: 192.168.1.0/24Aturan transformasi:
e_set("strNormal",ip_to_format(v("ip"),1))Hasil:
ip: 192.168.1.0/24 strNormal: 192.168.1.0/24
Contoh 3: Konversi format blok CIDR ke format yang menentukan netmask blok CIDR.
Log mentah:
ip: 192.168.1.0/24Aturan transformasi:
e_set("strNormal",ip_to_format(v("ip"),2))Hasil:
ip: 192.168.1.0/24 strNormal: 192.168.1.0/255.255.255.0
Contoh 4: Konversi blok CIDR menjadi rentang alamat IP.
Log mentah:
ip: 192.168.1.0/24Aturan transformasi:
e_set("strNormal",ip_to_format(v("ip"),3))Hasil:
ip: 192.168.1.0/24 strNormal: 192.168.1.0-192.168.1.255
ip_overlaps
Fungsi ip_overlaps digunakan untuk memeriksa apakah dua blok CIDR tumpang tindih.
ip_overlaps(cidr_subnet, cidr_subnet2, default="")Parameter
Tipe
Diperlukan
Deskripsi
cidr_subnet
String
Ya
Blok CIDR pertama.
cidr_subnet2
String
Ya
Blok CIDR kedua.
default
String
Tidak
Jika fungsi tidak dapat menentukan apakah blok CIDR tumpang tindih, nilai parameter ini dikembalikan. Anda dapat meninggalkan parameter ini kosong.
Jika blok CIDR yang ditentukan tidak tumpang tindih, fungsi mengembalikan 0.
Jika blok CIDR yang ditentukan tumpang tindih di akhir blok, fungsi mengembalikan 1.
Jika blok CIDR yang ditentukan tumpang tindih di awal blok, fungsi mengembalikan -1.
Contoh 1: Dua blok CIDR yang ditentukan tidak tumpang tindih.
Log mentah:
cidr1: 192.168.0.0/23 cidr2: 192.168.2.0/24Aturan transformasi:
e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2")))Hasil:
cidr1: 192.168.0.0/23 cidr2: 192.168.2.0/24 overlaps: 0
Contoh 2: Dua blok CIDR yang ditentukan tumpang tindih di awal blok.
Log mentah:
cidr1: 192.168.1.0/24 cidr2: 192.168.0.0/23Aturan transformasi:
e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2")))Hasil:
cidr1: 192.168.1.0/24 cidr2: 192.168.0.0/23 overlaps: -1
Contoh 3: Dua blok CIDR yang ditentukan tumpang tindih di akhir blok.
Log mentah:
cidr1: 192.168.0.0/23 cidr2: 192.168.1.0/24Aturan transformasi:
e_set("overlaps",ip_overlaps(v("cidr1"),v("cidr2")))Hasil:
cidr1: 192.168.0.0/23 cidr2: 192.168.1.0/24 overlaps: 1
ip2long
Fungsi ip2long digunakan untuk mengonversi alamat IP menjadi nilai bertipe long.
ip2long(value,default=0)Parameter
Tipe
Diperlukan
Deskripsi
value
String
Ya
Nilai yang ingin Anda konversi.
default
String
Tidak
Nilai yang dikonversi dari alamat IP yang tidak valid. Anda dapat menggunakan nilai kustom. Contoh: 0.
Nilai hasil konversi dari alamat IP yang valid dikembalikan dan bertipe long.
Contoh 1: Konversi alamat IP yang valid. Ini adalah skenario default.
Log mentah:
ip: 192.168.0.100Aturan transformasi:
e_set("long_ip",ip2long(v("ip")))Hasil:
ip: 192.168.0.100 long_ip: 167772160
Contoh 2: Konversi alamat IP yang tidak valid.
Log mentah:
ip: 47.100.XX.XXAturan transformasi:
e_set("long_ip",ip2long(v("ip"), "ignore"))Hasil:
ip:47.100.XX.XX long_ip:ignore
long2ip
Fungsi long2ip digunakan untuk mengonversi nilai bertipe long menjadi alamat IP.
long2ip(value,default="")Parameter
Tipe
Diperlukan
Deskripsi
value
String
Ya
Nilai yang ingin Anda konversi.
default
String
Tidak
String kosong yang dikonversi dari nilai bertipe long yang tidak valid. Anda dapat menggunakan string kustom.
Alamat IP yang dikonversi dari nilai bertipe long yang valid akan dikembalikan.
Contoh 1: Konversi nilai bertipe long yang valid. Ini adalah skenario default.
Log mentah:
long: 167772160Aturan transformasi:
e_set("ip",long2ip(v("long")))Hasil:
long: 167772160 ip: 192.168.0.100
Contoh 2: Konversi nilai bertipe long yang tidak valid.
Log mentah:
long: 4294967296Aturan transformasi:
e_set("ip",long2ip(v("long")))Hasil:
long: 4294967296 ip:
Contoh 3: Konversi nilai bertipe long yang tidak valid dan atur parameter default ke string kustom.
Log mentah:
long: 4294967296Aturan transformasi:
e_set("ip",long2ip(v("long"),default="xxx"))Hasil:
long: 4294967296 ip: xxx