Sziasztok
A következő feladatot kellene megoldanom:
Adva van két hálózat több virtuális géppel.
Szeretném, ha a gépeknek kiosztott IP címek visszaköszönnének a MAC-en is.
192.168.22.100 -> xx:yy:zz:22:10:0c
192.168.33.5 -> xx:yy:zz:33:00:5c
192.168.33.50 -> xx:yy:zz:33:05:0c
192.168.33.150 -> xx:yy:zz:33.15:0c
Az xx, yy, zz, c előre deffiniált értékek, most nem érdekesek. 192.168. szintén fix, nem kell feltüntetni.
A lényeg, hogy a MAC második felében fel kellene tünteni az IP végét. Ráadásul helyiérték helyesen, azaz .5 az 005
Az IP-ket én mondom meg egy generáló scripttel, ezt kellene bővíteni, hogy automatikusan generáljon hozzá MAC-et.
Nekem egy awk-val történő felbontás, for ciklusos számolós tákolás jutott eszembe, de félek gányolás lenne.
Van valakinek esetleg egy jó ötlete?
Előre is köszönöm!
Ui. bash, perl előnyben
Update: 2013.02.06.
Köszönöm mindenkinek a segítséget.
A legfrappánsabb megoldást ekképpen használtam fel:
tag="22.215"
ip="192.168.$tag"
MAC=`IFS=. ; echo "$tag" | while read a b ; do c=$(printf "%03da\n" $b); echo "00:16:3e:$a:${c:0:2}:${c:2}" ; done`
echo $MAC
vm_uuid=$(xe vm-list name-label=$xen --minimal)
vif_uuid=$(xe vm-vif-list vm=$xen --minimal)
network_uuid=$(xe vm-vif-list vm=$xen params=network-uuid --minimal)
xe vif-destroy uuid=${vif_uuid}
xe vif-create network-uuid=${network_uuid} vm-uuid=${vm_uuid} device=0 mac=${MAC}
echo "...Done."
Így a Citrix Xenserverben futó VM-ek MAC címét szépen át lehet írni, nem az általa generált teljesen random MAC lesz. Nem utolsó sorban az arp-scan ezen VM-eket xen-ként fogja azonosítani.
- 5944 megtekintés
Hozzászólások
arp? :)
------------------------
Nincs a világon se jó, se rossz. A gondolkodás teszi azzá... (W. Shakespeare)
- A hozzászóláshoz be kell jelentkezni
Azzal a másik fele lesz megoldva. Az arp-scannel ellenőrzöm, hogy nincs-e sumákság :)
Az IP <-> MAC ellenőrzést így egyszerűbbnek találtam, mintha valahol letároltam volna a rendszerek MAC címét és az ellenőrzéskor mindig ki kellene onnan keresni, hogy mi tartozik hozzá.
- A hozzászóláshoz be kell jelentkezni
Akkor mar egyszerubb indulaskor betolteni a MAC <-> IP osszerendeleseket (
arp -f /etc/ethers
), es akkor a router nem is beszelget senkivel, akinek nem jo a MAC/IP cime.
- A hozzászóláshoz be kell jelentkezni
Én egy ilyet raktam össze magamnak, nem tudom hogy neked is erre van-e szükséged, vagyis hogy lássad a hálózatban hogy adott gépek milyen IP-vel figyelnek, mindezt MAC cím alapján azonosítva.
- A hozzászóláshoz be kell jelentkezni
a 33.15ot es a 33.150et hogy tervezed abrazolni?
Nem lenne egyszerubb hostnevben tarolni az ip informaciot?
- A hozzászóláshoz be kell jelentkezni
Ha jól értem a példákat, akkor így:
192.168.33.15 -> xx:yy:zz:33:01:5c
192.168.33.150 -> xx:yy:zz:33.15:0c
openSUSE 12.2, vagy ami éppen jön.
- A hozzászóláshoz be kell jelentkezni
ahh tenyleg, azt nem is neztem :)
- A hozzászóláshoz be kell jelentkezni
És a .1xx.100 -at (meg a .2xx.100-at)? Egyébként meg tessen megtanulni hexában olvasni a számokat, és akkor nincs gond a megfeleltetéssel :-D
- A hozzászóláshoz be kell jelentkezni
100: xx:yy:zz:33:10:0c
200: xx:yy:zz:33:20:0c
Van 3 "mezőm", oda max 999 befér, nekem elég 255 -ig:)
- A hozzászóláshoz be kell jelentkezni
Mondom 192.168.100.100-at :-P
- A hozzászóláshoz be kell jelentkezni
Ja, hogy ja:)
Na olyan nincs, szerencsére az eddigi alhálók csak 2 helyiértékűek. :)
- A hozzászóláshoz be kell jelentkezni
_még_ nincs :)
Egyébként meg 192.168.123.234-ből aa:bb:c1:23:23:4c lehetne akár (nem minden esetben!), de én inkább maradnék a hexa formátum mellett, az (egy idő után) egyszerűbb :-)
- A hozzászóláshoz be kell jelentkezni
A hostnevet nem határozhatom meg, bármikor bármi lehet, nincs beleszólásom.
- A hozzászóláshoz be kell jelentkezni
IFS=. ; while read a b ; do c=$(printf "%03dc\n" $b); echo "$a.$b -> xx:yy:zz:$a:${c:0:2}:${c:2}" ; done <<<$'22.100\n33.5\n33.50\n33.150'
- A hozzászóláshoz be kell jelentkezni
Félelmetesen jó megoldás! Megkönnyezi az ember és fejet hajt.
Köszönöm szépen:)
- A hozzászóláshoz be kell jelentkezni
szivesen
- A hozzászóláshoz be kell jelentkezni
tudom láma vagyok de valaki elmagyarázná ezt:
do c=$(printf "%03dc\n" $b)
echo "$a.$b -> xx:yy:zz:$a:${c:0:2}:${c:2}"
done <<<$'22.100\n33.5\n33.50\n33.150'
az érték adás asszem ok:
Here Strings
A variant of here documents, the format is:
<<
The word is expanded and supplied to the command on its standard input.
A printf pedig paraméterezve hogy b változót 3 elemű értékként írja ki és a végére egy c-t és egy soremelést
tesz.
de az echo "$a.$b -> xx:yy:zz:$a:${c:0:2}:${c:2}" ez nekem most nem tiszta.
ok, kitolja az a és b változó értékét de mi ez a nyíl? valamint a kapcsos zárójelek? esetleg ez:
${parameter:offset:length} azaz parameter exansion?
--
A legértékesebb idő a pillanat amelyben élsz.
http://phoenix-art.hanzo.hu/
https://sites.google.com/site/jupiter2005ster/
- A hozzászóláshoz be kell jelentkezni
Az, az, substring a bashben.
A nyíl meg egy pofás nyíl, hogy az összerendelés szép legyen a kimeneten.
- A hozzászóláshoz be kell jelentkezni
a nyilacskára tudnál egy másik példát is mutatni? mert ez még nem jött át :(
--
A legértékesebb idő a pillanat amelyben élsz.
http://phoenix-art.hanzo.hu/
https://sites.google.com/site/jupiter2005ster/
- A hozzászóláshoz be kell jelentkezni
Most ugratsz, ugye?
$ x=42; echo "x -> $x"
x -> 42
- A hozzászóláshoz be kell jelentkezni
nem ugrattalak. a nagy karakter bűvölésben nem ismertem fel hogy az ott egy sima string és "nincs" jelentősége a script végeredményére, csak a kinézetére.
komolyan nem esett le még a kozmetika után sem :(
de köszönöm a magyarázatot.
--
A legértékesebb idő a pillanat amelyben élsz.
http://phoenix-art.hanzo.hu/
https://sites.google.com/site/jupiter2005ster/
- A hozzászóláshoz be kell jelentkezni
OK, tényleg szép sorminta része volt, és Zahy nem minden alap nélküli bonmójával ("bash-nál bármi lehet") együtt nézve teljesen érthető a dekódolási zavar.
- A hozzászóláshoz be kell jelentkezni
"a nyilacskára tudnál egy másik példát is mutatni?"
Melyik "nyilacskára" gondolsz? Az echoban lévő nyíl egyszerű szöveg, ahogy fent lx is írta, csupán a végeredmény megjelenítésének szépítése céljából. Kozmetika. De valószínűtlennek tartom, hogy erre vonatkozott volna a kérdés, mert nagyon triviális.
# echo 'Egyre hosszabb jobbra mutato nyilak -> --> ---> ----> -----> itt a vege'
Egyre hosszabb jobbra mutato nyilak -> --> ---> ----> -----> itt a vege
#
Ha viszont az "<<<" jelölésre gondoltál nyílként, akkor éppen te idézted a bash manualjának ide vonatkozó részének elejét, csak pont a lényeget nem: "The word is expanded and supplied to the command on its standard input."
# cat <<< Szoveg
Szoveg
#
- A hozzászóláshoz be kell jelentkezni
Most azt nem érted, hogy:
a -> b
- mert szerintem az ott csak simán nyíl, amit az echo nyílként kiír (és nem valami nagyon trükkös átirányítás). Bár bash-nál bármi lehet :-)
- A hozzászóláshoz be kell jelentkezni
man bash
--
Debian Linux rulez... :D
- A hozzászóláshoz be kell jelentkezni
Csak én vagyok olyan konzervatív, hogy azt mondom, MAC címet tömegesen változtatni nem világbajnok ötlet?
- A hozzászóláshoz be kell jelentkezni
Nem csak te... Az egésznek maximum virtualizált környezetben van relevanciája, a virtuális hálózati csatolók hardvercímének legyártásakor. Mivel a MAC második fele bárhol átírható, így azonos gyártó eszközével simán fejen lehet csapni a MAC-szűrést, már ha erre kell neki. Mondjuk ezen az alapon akár DECnet-et is használhatna, ha jól rémlik, ott is fix kapcsolat volt a MAC és a DECnet címzés között :-P
- A hozzászóláshoz be kell jelentkezni
Idéznék a bevezetőből:
"A következő feladatot kellene megoldanom:
Adva van két hálózat több virtuális géppel."
Mondjuk *természetesen* ez nem egyenértékű azzal, amit te írtál, de én az első pillanattól arra gondoltam, hogy ezt a vicces "átnevezést" virtuális gépekkel óhajtja megtenni, és nem élesekkel. VM-ek esetén támogatom, fizikai gépek esetén egy nagy -1.
- A hozzászóláshoz be kell jelentkezni
Figyelmetlen voltam - hiába, én is öregszem :-P Virtualizációnál én is az ip-ből generált mac használata mellett teszem le a voksomat (simán négy hexadecimális bájtként hozzácsapva az adott környezetre jellemzően felvett aa:bb prefixhez) - biztos, hogy nem lesz ütközés mac-szinten sem, ráadásul a dhcp konfigot is egyszerűen lehet generálni hozzá :-)
- A hozzászóláshoz be kell jelentkezni
is???
szorri
- A hozzászóláshoz be kell jelentkezni
Zahy! Zárd le a bold taget! (ergo te sem leszel fiatalabb...) Köszi :)
- A hozzászóláshoz be kell jelentkezni