Автор Тема: bash script  (Прочетена 2649 пъти)

mirgeorgiev

  • Участници
  • ***
  • Публикации: 6
  • Distribution: Debian 5.0
  • Лекувам с пушка!
    • Профил
bash script
« -: Nov 13, 2009, 23:12 »
Здравейте,
моля да ми помогните със следния скрипт.
Трябва ми скрипт който през дестина минути да проверява арп - таблицата, и в някъкъв файл да записва новите мак адреси. Доста порових тук, но не можах да намеря нищо по тази тема във форума.

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

"Човек трябва да бъде достатъчно голям, за да признае грешките си, достатъчно умен, за да спечели от тях, и достатъчно силен, за да ги поправи."
Джон Максуел

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: bash script
« Отговор #1 -: 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
« Последна редакция: Nov 14, 2009, 12:28 от VladSun »
Активен

0x2B|~0x2B

mirgeorgiev

  • Участници
  • ***
  • Публикации: 6
  • Distribution: Debian 5.0
  • Лекувам с пушка!
    • Профил
Re: bash script
« Отговор #2 -: Nov 14, 2009, 07:26 »
Много ти благодаря  за бързия отговор. Върши ми  идеална работа. Трябва да поразгледам опцията sort - нещо ми е убягнала. Още веднъж много благодаря!
Активен

"Човек трябва да бъде достатъчно голям, за да признае грешките си, достатъчно умен, за да спечели от тях, и достатъчно силен, за да ги поправи."
Джон Максуел

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: bash script
« Отговор #3 -: Nov 14, 2009, 08:18 »
sort е програма, а явно имаш предвид опцията u. И аз до скоро не я знаех. И си ползвах sort|uniq което работи на всички UNIX-и :)
Активен

0x2B|~0x2B

ntrance

  • Напреднали
  • *****
  • Публикации: 696
    • Профил
Re: bash script
« Отговор #4 -: 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"


Ако това ти върши работа мога ти го подобря . Да ти слага всички ип-та и да ти  маха дублиращите и така на татака
« Последна редакция: Nov 14, 2009, 12:27 от VladSun »
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: bash script
« Отговор #5 -: 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
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

mirgeorgiev

  • Участници
  • ***
  • Публикации: 6
  • Distribution: Debian 5.0
  • Лекувам с пушка!
    • Профил
Re: bash script
« Отговор #6 -: Nov 14, 2009, 22:09 »
Да става дума за опцията -u. Иначе наистина благодаря на всички за отговорите с малко тунинг и crontab скриптчето си свърши работата. Благодаря ВИ.
Активен

"Човек трябва да бъде достатъчно голям, за да признае грешките си, достатъчно умен, за да спечели от тях, и достатъчно силен, за да ги поправи."
Джон Максуел

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: bash script
« Отговор #7 -: 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 сървъра намиращ се на тази машина или машината е маршрутизатор или машината е прокси МАК адреса вече го има в таблицата
Активен

0x2B|~0x2B

ntrance

  • Напреднали
  • *****
  • Публикации: 696
    • Профил
Re: bash script
« Отговор #8 -: Nov 15, 2009, 13:32 »
Аз не съм на принципа ако , ако , ако. По добре се направи като хората от колкото да разчитам на "Ако" . Не казвам че съм прав просто дадох идея и я реализирах. Кой както иска така да си го прави.
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: bash script
« Отговор #9 -: Nov 15, 2009, 14:30 »
Аз не съм на принципа ако , ако , ако. По добре се направи като хората от колкото да разчитам на "Ако" . Не казвам че съм прав просто дадох идея и я реализирах. Кой както иска така да си го прави.
тогава трябва да разчиташ само на стандартен софтуер, никакви fping и подобни
Активен

0x2B|~0x2B

ntrance

  • Напреднали
  • *****
  • Публикации: 696
    • Профил
Re: bash script
« Отговор #10 -: Nov 15, 2009, 15:14 »
Аз не съм на принципа ако , ако , ако. По добре се направи като хората от колкото да разчитам на "Ако" . Не казвам че съм прав просто дадох идея и я реализирах. Кой както иска така да си го прави.
тогава трябва да разчиташ само на стандартен софтуер, никакви fping и подобни

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

eniac111

  • Напреднали
  • *****
  • Публикации: 263
  • Distribution: Debian / Ubuntu
  • Window Manager: Enlightenment DR16 / KDE4
    • Профил
    • WWW
Re: bash script
« Отговор #11 -: 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
Активен

ntrance

  • Напреднали
  • *****
  • Публикации: 696
    • Профил
Re: bash script
« Отговор #12 -: Nov 15, 2009, 19:34 »
Пимисли сам. Тук стана мерене на пи...
Активен

eniac111

  • Напреднали
  • *****
  • Публикации: 263
  • Distribution: Debian / Ubuntu
  • Window Manager: Enlightenment DR16 / KDE4
    • Профил
    • WWW
Re: bash script
« Отговор #13 -: Nov 15, 2009, 20:55 »
В случая ми е /24
Активен

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: bash script
« Отговор #14 -: Nov 15, 2009, 23:07 »
Аз не съм на принципа ако , ако , ако. По добре се направи като хората от колкото да разчитам на "Ако" . Не казвам че съм прав просто дадох идея и я реализирах. Кой както иска така да си го прави.
тогава трябва да разчиташ само на стандартен софтуер, никакви fping и подобни

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

0x2B|~0x2B

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Bash script и извеждането му
Web development
martien 3 3430 Последна публикация Nov 02, 2006, 11:55
от morbid_viper
Bash script за следене съдържанието на директория
Общ форум
mishot 9 4413 Последна публикация Mar 05, 2008, 00:38
от maniac
Bash script
Общ форум
vikktor 14 5408 Последна публикация Mar 04, 2009, 23:38
от CappY
Помощ за bash script
Общ форум
LinuxFanUNIX 4 2929 Последна публикация May 15, 2009, 23:05
от LinuxFanUNIX
bash script
Общ форум
samiboy 3 1613 Последна публикация May 26, 2009, 06:45
от Hapkoc