====== Bash Script: Cara Mendapatkan Ip Address Dari String dengan Regex ======
Bagaimana cara menggunakan bash regex untuk mendapatkan ip address dari string log seperti ini
2020-01-11 09:45:15 login authenticator failed for (User) [46.38.144.202]: 535 Incorrect authentication data (set_id=na@mailku.net)
2020-01-11 09:45:15 login authenticator failed for (User) [46.38.144.64]: 535 Incorrect authentication data (set_id=maximus@mailku.net)
2020-01-11 09:45:15 login authenticator failed for (User) [46.38.144.124]: 535 Incorrect authentication data (set_id=reklama@mailku.net)
2020-01-11 09:45:15 login authenticator failed for (User) [46.38.144.202]: 535 Incorrect authentication data (set_id=na@mailku.net)
2020-01-11 09:45:16 login authenticator failed for (User) [46.38.144.57]: 535 Incorrect authentication data (set_id=traveler@mailku.net)
2020-01-11 09:45:18 login authenticator failed for (User) [46.38.144.57]: 535 Incorrect authentication data (set_id=traveler@mailku.net)
2020-01-11 09:45:18 login authenticator failed for (User) [46.38.144.231]: 535 Incorrect authentication data (set_id=premium@mailku.net)
2020-01-11 09:45:18 login authenticator failed for (User) [46.38.144.247]: 535 Incorrect authentication data (set_id=ns31@mailku.net)
2020-01-11 09:45:19 login authenticator failed for (User) [46.38.144.146]: 535 Incorrect authentication data (set_id=ggutierrez@mailku.net)
2020-01-11 09:45:20 login authenticator failed for (User) [46.38.144.64]: 535 Incorrect authentication data (set_id=maximus@mailku.net)
Hasil yang ingin didapatkan adalah ip addressnya saja, maka anda bisa menggunakan kode berikut ini :
tail -n 10 /var/log/exim/mainlog | grep 'login authenticator failed' | awk '{print $8'} | egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}'
Hasil yang didapatkan adalah
46.38.144.117
46.38.144.64
46.38.144.231
46.38.144.124
46.38.144.17
46.38.144.247
46.38.144.79
46.38.144.17
46.38.144.202
46.38.144.179
dari hasil tersebut apabila ada yang duplikat kita bisa menggunakan **uniq**
tail -n 10 /var/log/exim/mainlog | grep 'login authenticator failed' | awk '{print $8'} | egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}' | uniq
Demikian selamat berkreasi
Sumber :
- https://stackoverflow.com/questions/427979/how-do-you-extract-ip-addresses-from-files-using-a-regex-in-a-linux-shell/428086