Ha van rá már kész parancs vagy megoldás, akkor nem veszem zokon ha megosztjátok :)
--------------
#!/bin/sh
# IDENTIFY HOSTS BY MAC ADDRESSES ON LAN
MAC=$( mktemp )
chmod 0600 "$MAC"
trap "{ rm -f "$MAC"; exit; }" 0 1 2 3 5 15
# mac cím lista, kisbetűs hexa kóddal
echo "00:1f:aa:e4:56:fe nagy.natalia" >> "$MAC"
echo "00:22:43:67:23:55 besenyo.i" >> "$MAC"
echo "00:20:34:5a:c3:45 pandacsoki.b" >> "$MAC"
IFCONFIG="/sbin/ifconfig"
NMAP="/usr/bin/nmap"
ARP="/usr/sbin/arp"
COLOR="\E[30;47m"
BOLD="\033[1m"
NORMAL="\033[0m"
# arp tábla létrehozása nmap scan-nel
$IFCONFIG | grep -iEo "inet addr:[0-9.]*" | grep -iEo "[0-9.]*" | \
grep -v "^127\." | sed -r s/"[0-9]*$"/"1-254"/ | \
while read NUM; do
$NMAP -sP "$NUM" 1>/dev/null 2>/dev/null
done
# arp tábla kiírása a végén a host névvel
$ARP -n | head -n1 | tr -d "\n"; echo " Hostname"
$ARP -n | grep -v "incomplete" | tail -n+2 | \
while read TEXT; do
if [ -z $FLAG ]; then echo -en "$BOLD"; FLAG=1; \
else echo -en "$NORMAL"; FLAG=""; fi
M=$( echo "$TEXT" | tr -s " " "\t" | cut -f3 )
echo -n "$TEXT"
if N=$( grep -m1 "$M" "$MAC" ); then
HOST=$( echo "$N" | tr -s " " "\t" | cut -f2 )
echo " ($HOST)"
else
echo
fi
echo -en "$NORMAL"
done
rm -f "$MAC"
- log69 blogja
- A hozzászóláshoz be kell jelentkezni
- 2052 megtekintés
Hozzászólások
[margóra]
A SIGKILL (9) nem trap-pelhető, helyette én pl. a SIGQUIT (3) signal-t is el szoktam "kapni"
[/margóra]
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni
javítva, köszi!
szerk.: mégegyet javítottam, hogy ne csak az ismert MAC címeket írja ki, hanem a többi megtaláltat is.
szerk.: beletettem még a soronként felváltott kövér / normál kimemelést, mert hosszúak a sorok, és így olvashatóbb hogy melyik hostnév-hez melyik IP tartozik. $BOLD helyett még jó szerintem a $COLOR használata.
- A hozzászóláshoz be kell jelentkezni
Ez igazán hasznos, köszi! :)
-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
- A hozzászóláshoz be kell jelentkezni
bookmarked, thx.
- A hozzászóláshoz be kell jelentkezni
A BSD-s arp csak -a kapcsoloval eszi. Illetve az ifconfig-nak is lehet egy -a kapcsolot adni, ahol nincs fenn a iface, ott ugysincs inet addr (altalaban)
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
ok, köszi.
- A hozzászóláshoz be kell jelentkezni
arping?
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
nézem, ez is jónak tűnik az IP címekhez történő MAC címek felderítésére, olyan 17 sec alatt fut le, viszont sajna csak root joggal megy, és ahogy nézem kell a 10 ms a -w kapcsolónak, pl:
time for i in {1..254}; do arping -i wlan0 -c1 -w10 192.168.2.$i; done
viszont nmap ezért jobb imho, automatikusabb, mivel itt arping-nél nekem kell timeout időt saccolnom, és az meg kétes ugye. a broadcast ping nem ment nálam arping-gel.
szerk.: ja meg persze a sima ping is megfelelő akkor már, mert ott is megérkezik a MAC cím az arp request-re, csak az nmap ott is működik, ahol tiltva van az icmp echo. ezt teszteltem.
- A hozzászóláshoz be kell jelentkezni
Nem nagyon látom értelmét a broadcast teljes végigjárásnak, ha alapból is ismerjük a beengedett gépek MAC címét és host nevét. Tekintve, hogy a DHCP lekéréskor az új IP is regisztrálódik az ARP táblában, így azt kell mondjam, hogy az IP-t ismerjük is, az arpinget ráengedve meg akár a MAC címét is. Mondjuk nem tudom mennyi értelme van ilyen szinten a MAC szűrésnek, amikor a hostname alapján is lehetne dolgozni ( fentebbi példában pl "besenyo.i" ). Bár szó se róla, a timeout és a root jogkör problémája valós az arping esetén.
Amúgy meg csak kérdeztem, hogy nem e használható számodra ez a megoldás is, nem célom kioktatni senkit, szóval félreértés ne essék :))
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
"nem e használható"
nem használható-e
Csak, hogy ne rögzüljön :)
- A hozzászóláshoz be kell jelentkezni
Ne menjünk bele ilyen nyelvészkedési dolgokba pls :) Nem állítom, hogy bármilyen nyelven jól tudnék beszélni (se magyarul, se angolul ), de azért igyekszem megértetni magam :D
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
egyáltalán nem vettem kioktatásnak, sőt, köszi az ötletet. sokat tanulok belőle. igazad van, hogy ha csak az ismert host-okat keressük, akkor valóban gyorsabb lehet közvetlenül rákérdezni. ez megint egy olyan dolog, amire nem gondoltam. :)
speciel nekem azért jó látnom az összes csatlakoztatott host-ot, mert amelyik hiányzik a listából, azt akkor fel tudom venni, illetve hogy mit keres ott.
amit szintén mindig köszönök, ha valaki kijavítja a shell kódomat, mert abból megint sokat szoktam tanulni.
- A hozzászóláshoz be kell jelentkezni
"Tekintve, hogy a DHCP lekéréskor az új IP is regisztrálódik az ARP táblában"
ehhez még annyit, hogy nem a DHCP szerverről akarom indítani a script-et, hanem mindig a notimról, amellyel frissen kapcsolódok, annak az arp táblája meg ugye üres még.
- A hozzászóláshoz be kell jelentkezni
Az tök mind1 honnan indítod a kérést, ha tudod a host nevét. Mivel az IP kéréskor a DHCP szerver már tudni fogja az adott gép MAC-jét is (illetve bizonyos szempontból a hálózatban lévő gépek is (max nem regisztrálják) hála a broadcast DHCP requestnek ), így a DHPC ARP cache-ébe belekerül a megfelelő érték ( tekintsünk most el az ARP spoofing, vagy ARP flooding technikáktól, mert azok tényleg bekavarhatnak ). Innentől meg csak annyi a dolgod, hogy a megfelelő DHCP szervert megkérdezve (valszeg ugyan azt amire te is csatalkoztál ) lekéred a hosthoz tartozó IP-t, amivel már megkapod az ARP bejegyzést is kapásból.
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
és ha nincs DHCP szerver? :)
- A hozzászóláshoz be kell jelentkezni
hogy a több helyen dinamikus IP címmel kapcsolódó
Én ebből indultam ki :) Ahol meg nem DHCP van, ott fel se merül, hogy az IP-ket kelljen koslatni, mert mindenkinek statikusan megvan az IP-je, aztán vagy connected, vagy sem :D Ez esetben meg DHCP szerver helyett megteszi egy karbantartott /etc/hosts file is :)
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
igazad van, én tértem el a tárgytól :)
visszatérve, a DHCP szerver arp táblájában benne van az összes kliens, viszont egyelőre ennek a hozzáférésére 1 módszert látok így hamarjában:
ssh server /usr/sbin/arp -n
erre gondoltál?
- A hozzászóláshoz be kell jelentkezni
Nem.. Én még mindig ott tartok, hogy véges kliens ven ( és nem a full subnet ) amelyek hostnevei ismertek. Tekintve, hogy a domain suffixet a DNS adja, illetve, hogy tudod a host neveket, így szimplán ping/arping/nmon/whateva' programmal indított lekérés a hostname-re a DHCP szervernél fog kikötni, ami meg örömmel visszaadja neked az aktuális IP-t, és a hozzá tartozó ARP bejegyzést is. Nem érzem szükségességét annak, hogy az összes ARP adatot nyomban elkérjem egy ilyen feladat esetén a DHCP szervertől, főleg ha a hostok száma alacsony ( eléggé overkill megoldás az összes kliens ARP címét elkérni 1-2 host miatt )
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
mint feljebb írtam, én mindenképpen abból indulok ki, hogy a teljes arp táblára kíváncsi vagyok, éppen azért, mert én vagyok az admin, és látni akarom ki van csatlakozva, vagy milyen új eszköz jelent meg. :)
viszont ha akár abból indulok ki, hogy inkább a felvett MAC-eket akarnám arping-elni végig, lehet ez esetben is ez a hosszabb út, mivel lehet hogy több mint 256 címem lesz. nem írtam, de nyilván nem 4-5 címet fogok letárolni. és a címeket egybe terveztem tenni több alhálózatból.
(szerk.: itt persze már érdemes külön fájlban tárolni, és nem szórakozni az echo-val, így már nem is kell temp fájl.)
tehát ezek miatt még mindig az nmap-ot tartom gyorsabbnak, majd azt követve annak a kimenetéből összefésült eredményt :)
illetve még annyi, hogy ha nem kér címet a DHCP szervertől mert valami miatt statikus maradt, így akkoris fennakad a "hálómon", habár igaz hogy nem reális eset, de a teljesség miatt mérvadó. szerk.: ez így a hiba kizárás miatt is még egy plusz.
a te elképzelésed is tetszik, mert egy egész, már kész arp táblában gondolkodsz. viszont nem látom a megoldást arra, hogyan lehetne az eredeti igényeimmel összepárosítani.
- A hozzászóláshoz be kell jelentkezni
Azt hiszem egy ponton félresiklott a beszélgetés :) Én fentebb beláttam, hogy a te megoldásod jobb, mint az általam kínált megoldás, így onnantól már csak elméleti diskurzus folyt az altémákról :)
Viszont akkor hogy legyen valami építő jellegű javaslatom is: Akkor meg miért nem mész be tényleg kulcsal a DHCP szerverhez, és onnan kéred ki kapásból mindent ami ott van ( IP, ARP, hostname ) nmapolás nélkül? ( jó, a statikusan felvett hostok ellen tény, hogy nem véd )
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
ez elfogadható. akár lehet egy másik script, ami a szerverről fut, vagy lekérem az arp-ot kulccsal, mindegy, és akkor nmap nélkül azonnal megkapható a kliens lista.
ezt megfogom csinálni.
egyébként eredetileg azért indultam ki a MAC alapon azonosításból, mert ugye IP és host név változhat, akár lehet egyforma host név (akár hibázásból). nekem meg ami fontos a munkámhoz, hogy fizikailag be tudjam pontosan azonosítani a hálón lógó eszközöket.
lényeg hogy ez mindenképp egy jó ötlet tőled, mert ilyen szempontból -mint írtam- nem gondoltam arra, hogy egybe elkérni az arp táblát a DHCP-s szervertől. :)
ez nekem is szimpatikusabb, szebb megoldás lenne összességében is, ha teljesen találkozik az igényemmel.
köszi.
- A hozzászóláshoz be kell jelentkezni
Majd postold ki kérlek azt a megoldást is, ha nem nagy kérés :)
*btw - csak én hiányolom az ehhez hasonló szakmai beszélgetéseket a portálról? Ne válaszoljatok, költői kérdés volt..
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
tehát ha a szerverről futtatom, akkor ennyi a diff a másik script-hez képest:
@@ -56,13 +56,6 @@
BOLD="\033[1m"
NORMAL="\033[0m"
-# arp tábla létrehozása nmap scan-nel
-$IFCONFIG | grep -iEo "inet addr:[0-9.]*" | grep -iEo "[0-9.]*" | \
- grep -v "^127\." | sed -r s/"[0-9]*$"/"1-254"/ | \
- while read NUM; do
- $NMAP -sP "$NUM" 1>/dev/null 2>/dev/null
- done
-
# arp tábla kiírása a végén a host névvel
$ARP -n | head -n1 | tr -d "\n"; echo " Hostname"
$ARP -n | grep -v "incomplete" | tail -n+2 | \
- A hozzászóláshoz be kell jelentkezni
'DHCP szervernél fog kikötni, ami meg örömmel visszaadja neked az aktuális IP-t, és a hozzá tartozó ARP bejegyzést is.'
Ize, tudtommal a DHCP szerver nem szokott onmagaban dns szervert jatszani, ahhoz kell egy dns szerver is. De fixme.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Mi köze van a DNS-nek az ARP-hez? ( DNS => címfordítás az IP és a hálózati cím között ; ARP => MAC address és IP cím közötti "címfordítás" )
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
De te a hostnevekre irod, hogy a DHCP szerver arra vissza fog adni IP-t (meg mac cimet), ami viszont mar nem igaz, mert az DNS szerveri feladat.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Nem egészen. A DHCP szerver tárolja a DHCP-n keresztül kiosztott címek listáját, így ő is tud az IP-kről. Tekintve, hogy az IP-kről csak úgy szerezhet tudomást, ha a local ARP cache-ébe felveszi az adott ARP entry-t ( nem azt se a DNS szervertől fogja elkérni ), így ő tudni fog róla. Ha te viszont tudod a gép hostnevét, akkor a DHCP-t megkérdezve megtudhatod az IP-jét (még mindig nincs DNS szerver sehol ), és ezzel együtt a hozzá tartozó ARP bejegyzést is. DNS szerver max akkor kell, ha több DHCP, több domainjét akarod összefogni, vagy ha olyan gép IP-jét szeretnéd megtudni, ami nincs a DHCP-s zónán belül ( ez esetben viszont ARP-hez megint nem sok közöd van, mert NAT-on belül közöd nem lesz a távoli gép ARP címéhez )
A DNS szerver sehol nem foglalkozik MAC címekkel vagy ARP bejegyzésekkel, mivel az csupán címfordításra van, illetve a többi zónában lévő további DNS szerverek közötti szinkron fenntartására.
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
"Ha te viszont tudod a gép hostnevét, akkor a DHCP-t megkérdezve megtudhatod az IP-jét"
Nekem ezzel a mozzanattal van bajom. Hogyan kered el a DHCP szervertol tetszoleges gep hostnevehez az IP-t? Tekintve, hogy a ping a /etc/resolv.conf -ban tarolt nevszervereket hasznalja, meg a /etc/hosts file-t, az egyetlen megoldasnak a ssh dhcpserver 'grep hostnev /var/lib/dhcp/dhcp.leases' tunik,
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Nem tudom emlékszel e arra a jópofa tulajdonságra, hogy a DHCP szervertől kapott IP cím egyben tartalmazza a subnet, netmask, és domain adatokat is. Ez pedig autó felül is vágja neked a resolv.conf-ot is ( hacsak nem rendelkezel külön a dhcpd beállításaiban ). Az mondjuk tény, hogy ezzel meg is kapod a DNS szerver(ek) elérhetőségét is, amihez meg majd fordulhatsz a hostnév feloldáskor.
Mondjuk ezen gondolatmenet után rájöttem hol van/volt a kommunikációs probléma: Én fejeztem ki magam rosszul. Ott valóban kell a DNS szerver ( engem az zavart be, hogy a MAC-et, meg az ARP-t ide keverted, vagy én értettem csak így ) a címfordításhoz.
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
azert a rendszergarzada-kepzoben valami ragadt ram halozat alapismeretekbol... ;-)
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
én is köszi :P
- A hozzászóláshoz be kell jelentkezni
Subscribe, köszi :)
- A hozzászóláshoz be kell jelentkezni
találtam egy érdekes progit, hivatalos debian tárolóban benne van: arpwatch
"Arpwatch maintains a database of Ethernet MAC addresses seen on the network, with their associated IP pairs. Alerts the system administrator via e-mail if any change happens, such as new station/activity, flip-flops, changed and re-used old addresses."
hasonlít kicsit az én célomhoz is, hogy fel tudjam deríteni a MAC címek és IP-k változásait, viszont a lényeg amit a progim csinál azt nem tudja, hogy a listában átírja a MAC címeket nekem nevekre. viszont syslog-ba dobálja az értesítéseket, és fel lehet programozni a conf fájlt, hogy milyen változásnál küldjön pl. e-mailt az admin-nak.
akár a syslog-ban lévő MAC címeket is le lehetne egy script-tel cseréltetni a megtekintéshez, és akkor már egy komplett megoldás, csak név feloldással egészítjük ki. pl. a cat /var/log/syslog | grep arpwatch kimenetében sed-del kicserélni az összes MAC-et.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni