[Bash] [Potok] Jak przekazać adres IP jako parametr do geoiplookup

Cel: chcę znać geolokalizację adresu IP z którego wykonano logowanie do systemu korzystając z terminala.
Narzędzia: geoiplookup, lastb.

Próbowałem w potoku poniższej komendy, ale nie działa.

lastb | awk ‘{print $3}’ | geoiplookup

Może geoiplookup po prostu nie obsługuje rury.

Spróbuj tak:
geoiplookup $(lastb | awk ‘{print $3}’)

Niestety nie działa - błąd poniżej.

awk: cmd. line:1: ‘{print
awk: cmd. line:1: ^ invalid char ‘▒’ in expression
Usage: geoiplookup [-h] [-?] [-d custom_dir] [-f custom_file] [-v] [-i] [-l] <ipaddress|hostname>

A sama komenda działa poprawnie?
lastb | awk '{print $3}'

Albo na forum to tylko tak dziwnie wygląda - tam są pojedyncze apostrofy. Twoje wyglądają jakoś dziwnie.

PS
Nie wiem w jakim kontekście ma to być użyte, ale dobrze by było bardziej to usystematyzować:

#!/bin/bash

for IP in $(lastb | awk '{print $3}' | sort -u); do
geoiplookup $IP; done

lastb | awk ‘{print $3}’

wyświetla w odzielnych liniach IP, z wyjątkiem przedostatniej (pusta linia) oraz ostatniej (Dzień tygodnia) w formacie jak poniżej.

X.X.X.X
Y.Y.Y.Y

.

Sat

Nie chcę używać skryptu, preferuję jednolinijkowiec jak to możliwe.

`#!/bin/bash

for IP in $(lastb | awk ‘{print $3}’ | sort -u); do
geoiplookup $IP; done

No to przecież jest :stuck_out_tongue_winking_eye:

for IP in $(lastb | awk '{print $3}' | sort -u); do geoiplookup $IP; done

PS
Jeśli chodzi o SSH to nie lepiej wyciągnąć IP z /var/log/auth.log (o ile jest rsyslog, syslog-ng?)

Tego szukałem - dzięki.

Zrób sobie do tego relay server np. z użyciem Postfix i możesz pchać wyniki na maila:
for IP in $(lastb | awk '{print $3}' | sort -u); do geoiplookup $IP | mail -s "Logowanie z "$IP":" root; done

1 polubienie