Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: mirgeorgiev в Nov 13, 2009, 23:12



Титла: bash script
Публикувано от: mirgeorgiev в Nov 13, 2009, 23:12
Здравейте,
моля да ми помогните със следния скрипт.
Трябва ми скрипт който през дестина минути да проверява арп - таблицата, и в някъкъв файл да записва новите мак адреси. Доста порових тук, но не можах да намеря нищо по тази тема във форума.

Да прави нещо от рода:
arp -n >> arp.txt , като в arp.txt сравнява наличните записи, и ако има нов в мак таблицата да се добави най - отдолу, като се опише кой ИП адрес е получил съответния мак адрес.
Благодаря предварително.


Титла: Re: bash script
Публикувано от: romeo_ninov в Nov 14, 2009, 00:16
Ако не държиш да е най-отдолу става на един ред:
Код
GeSHi (Bash):
  1. arp  -a >> arp.lst; cat arp.lst | sort -u > arp.lst.new; mv arp.lst.new arp.lst


Титла: Re: bash script
Публикувано от: mirgeorgiev в Nov 14, 2009, 07:26
Много ти благодаря  за бързия отговор. Върши ми  идеална работа. Трябва да поразгледам опцията sort - нещо ми е убягнала. Още веднъж много благодаря!


Титла: Re: bash script
Публикувано от: romeo_ninov в Nov 14, 2009, 08:18
sort е програма, а явно имаш предвид опцията u. И аз до скоро не я знаех. И си ползвах sort|uniq което работи на всички UNIX-и :)


Титла: Re: bash script
Публикувано от: ntrance в Nov 14, 2009, 12:26
Така за да ти се вкарат ип-тата в arp  е нужно поне да е имало пинг  определеното-ип (дадената машина) , макар и физически ип-то да е в мрежата може да го нямаш в arp tablicata.! За това ти препоръчвам ако имаш локална мрежа да направиш един range пинг. Примерно
Код
GeSHi (Bash):
  1. #!/bin/bash
  2. #fping -s -g  172.16.1.1 -r 172.16.1.21 -r 1 > range-ip
  3. fping -s -g 172.16.1.1 172.16.1.12 -r 1 > range-ip
  4. grep alive range-ip > arp-tables
  5. awk '{print $1}' arp-tables  > sort-ip
  6. rm  range-ip ; rm arp-tables
  7. echo "all done"


Ако това ти върши работа мога ти го подобря . Да ти слага всички ип-та и да ти  маха дублиращите и така на татака


Титла: Re: bash script
Публикувано от: VladSun в Nov 14, 2009, 12:30
Ако не държиш да е най-отдолу става на един ред:
Код
GeSHi (Bash):
  1. arp  -a >> arp.lst; cat arp.lst | sort -u > arp.lst.new; mv arp.lst.new arp.lst

Не е ли същото:
Код
GeSHi (Bash):
  1. arp  -a | sort -u > arp.lst


Титла: Re: bash script
Публикувано от: mirgeorgiev в Nov 14, 2009, 22:09
Да става дума за опцията -u. Иначе наистина благодаря на всички за отговорите с малко тунинг и crontab скриптчето си свърши работата. Благодаря ВИ.


Титла: Re: bash script
Публикувано от: romeo_ninov в Nov 15, 2009, 00:04
Ако не държиш да е най-отдолу става на един ред:
Код
GeSHi (Bash):
  1. arp  -a >> arp.lst; cat arp.lst | sort -u > arp.lst.new; mv arp.lst.new arp.lst

Не е ли същото:
Код
GeSHi (Bash):
  1. arp  -a | sort -u > arp.lst
Не, защото не се пази историята на тези МАК адреси на които им е изтекъл живота в таблицата
Така за да ти се вкарат ип-тата в arp  е нужно поне да е имало пинг  определеното-ип (дадената машина) , макар и физически ип-то да е в мрежата може да го нямаш в arp tablicata.! За това ти препоръчвам ако имаш локална мрежа да направиш един range пинг. Примерно
Код
GeSHi (Bash):
  1. #!/bin/bash
  2. #fping -s -g  172.16.1.1 -r 172.16.1.21 -r 1 > range-ip
  3. fping -s -g 172.16.1.1 172.16.1.12 -r 1 > range-ip
  4. grep alive range-ip > arp-tables
  5. awk '{print $1}' arp-tables  > sort-ipа
  6. rm  range-ip ; rm arp-tables
  7. echo "all done"


Ако това ти върши работа мога ти го подобря . Да ти слага всички ип-та и да ти  маха дублиращите и така на татака
ако адреса е взет от DHCP сървъра намиращ се на тази машина или машината е маршрутизатор или машината е прокси МАК адреса вече го има в таблицата


Титла: Re: bash script
Публикувано от: ntrance в Nov 15, 2009, 13:32
Аз не съм на принципа ако , ако , ако. По добре се направи като хората от колкото да разчитам на "Ако" . Не казвам че съм прав просто дадох идея и я реализирах. Кой както иска така да си го прави.


Титла: Re: bash script
Публикувано от: romeo_ninov в Nov 15, 2009, 14:30
Аз не съм на принципа ако , ако , ако. По добре се направи като хората от колкото да разчитам на "Ако" . Не казвам че съм прав просто дадох идея и я реализирах. Кой както иска така да си го прави.
тогава трябва да разчиташ само на стандартен софтуер, никакви fping и подобни


Титла: Re: bash script
Публикувано от: ntrance в Nov 15, 2009, 15:14
Аз не съм на принципа ако , ако , ако. По добре се направи като хората от колкото да разчитам на "Ако" . Не казвам че съм прав просто дадох идея и я реализирах. Кой както иска така да си го прави.
тогава трябва да разчиташ само на стандартен софтуер, никакви fping и подобни

Всеки сам решава как  ще го прави , имам консола   имам готови пакети , имам фпинг . Сметнал съм че ми е достатъчно да си свърша работата, но може и да има по добър вариянт незнам. Не ми се е налагало да търся.


Титла: Re: bash script
Публикувано от: eniac111 в Nov 15, 2009, 19:06
Така за да ти се вкарат ип-тата в arp  е нужно поне да е имало пинг  определеното-ип (дадената машина) , макар и физически ип-то да е в мрежата може да го нямаш в arp tablicata.! За това ти препоръчвам ако имаш локална мрежа да направиш един range пинг. Примерно
Код
GeSHi (Bash):
  1. #!/bin/bash
  2. #fping -s -g  172.16.1.1 -r 172.16.1.21 -r 1 > range-ip
  3. fping -s -g 172.16.1.1 172.16.1.12 -r 1 > range-ip
  4. grep alive range-ip > arp-tables
  5. awk '{print $1}' arp-tables  > sort-ip
  6. rm  range-ip ; rm arp-tables
  7. echo "all done"


Ако това ти върши работа мога ти го подобря . Да ти слага всички ип-та и да ти  маха дублиращите и така на татака

не е ли по- лесно с ping към broadcast?

Код
GeSHi (Bash):
  1. ping 192.168.0.255 -b


Титла: Re: bash script
Публикувано от: ntrance в Nov 15, 2009, 19:34
Пимисли сам. Тук стана мерене на пи...


Титла: Re: bash script
Публикувано от: eniac111 в Nov 15, 2009, 20:55
В случая ми е /24


Титла: Re: bash script
Публикувано от: romeo_ninov в Nov 15, 2009, 23:07
Аз не съм на принципа ако , ако , ако. По добре се направи като хората от колкото да разчитам на "Ако" . Не казвам че съм прав просто дадох идея и я реализирах. Кой както иска така да си го прави.
тогава трябва да разчиташ само на стандартен софтуер, никакви fping и подобни

Всеки сам решава как  ще го прави , имам консола   имам готови пакети , имам фпинг . Сметнал съм че ми е достатъчно да си свърша работата, но може и да има по добър вариянт незнам. Не ми се е налагало да търся.
Прочети първия си пост (това, което съм цитирал). Защото ти самия опираш до ако (имам инсталиран пакета).