Титла: Помощ за скрипт Публикувано от: never_mind в Jan 28, 2008, 10:51 Добър ден. Идеята е следната. Имам списък с мрежи, но в cisco формат, тоест с обратна маска ( пример 0.0.31.255 ). Искам да го преобразувам автоматично в списък с нормална CIDR маска, ( пример /19 ). Намерих инструмента calcmask, който прави следното:
Така, до тук добре, но следва трудна част за мен. от следният ред
аз трябва да получа
за да може pf да го разпознае... и това трябва да става автоматично чрез скрипт... и то за всеки един ред от списъка... явно ще има цикъл, който обхожда всеки ред... и замества обратната маска с CIDR, като я взима от изхода на програмата... Идеи? Титла: Помощ за скрипт Публикувано от: shadowx в Jan 28, 2008, 11:12
Титла: Помощ за скрипт Публикувано от: never_mind в Jan 28, 2008, 23:09 Мерси много. Работи перфектно. Мисля да се помъча сам за останалата част, набарах една книга и ще я прочета цялата, специално за шел скриптинга... после ще постна крайният ми скрипт...
![]() Титла: Помощ за скрипт Публикувано от: zeridon в Jan 29, 2008, 17:04 Като свършиш публикувай го моля те в ето тази категория: http://www.linux-bg.org/cgi-bin....t=21864
Титла: Помощ за скрипт Публикувано от: never_mind в Jan 29, 2008, 18:11 баси, единствената спъкна е да отделя определен ред... не мога нито с tail, нито с cat...
п.с сичко е 6 вече Титла: Помощ за скрипт Публикувано от: bubu в Jan 29, 2008, 18:56 awk или sed не ти ли вършaт работа ? Дай да го видим този ред и ще помислим как може да го отделиш
![]() Титла: Помощ за скрипт Публикувано от: never_mind в Jan 29, 2008, 19:17
Аз стигнах до това. Сигурно може да се оптимизира, затова предлагайте ![]() Титла: Помощ за скрипт Публикувано от: shadowx в Jan 29, 2008, 20:17 100% има доста по-добри от моя варянт , но лично аз бих го написал така :
Титла: Помощ за скрипт Публикувано от: Hapkoc в Jan 29, 2008, 20:18 while read line; do
# process line here ... done < filename (моите 2 ст.) Титла: Помощ за скрипт Публикувано от: never_mind в Feb 06, 2008, 10:14 Нещо не мога да го направя с while read line... мисля, че ми интерпретира целия файл като 1 ред... понеже използвайки това
изхода ми е
тоест маската изобщо не я хваща... A пък при
файлът ip съдържа всички ip-та, като 1 ред... Иначе това ми е финалната версия на скрипта... засега...
Титла: Помощ за скрипт Публикувано от: Hapkoc в Feb 06, 2008, 15:29 Имах предвид нещо от рода на:
while read line; do ip=$( echo $line | awk '{ print $1 }' ) mask=$( echo $line | awk ... ) done < filename В случая line е променливата, в която е прочетен реда от файла. Както и да е, просто отбелязах, в крайна сметка по-важното в някои случаи е да работи, не как е написано. :) Титла: Помощ за скрипт Публикувано от: never_mind в Feb 06, 2008, 16:42 Да, прав си, но аз по принцип обичам всичко да е максимало оптимизирано и правилно написано. Твоят вариант стана така:
което е доста по-малко код и по-добре написано... въпреки, че не се постига бързодействие на скрипта ( и в този вариант отнема около 40-50 сек за конвертиране на всичките над 500 мрежи ). Засега това е актуалната версия на скрипта ![]() Титла: Помощ за скрипт Публикувано от: radoulov в Feb 07, 2008, 13:15
В такав случай използвай повече shell и по-малко external utilities:
P.S. Ако имаш bash compiled с --enable-net-redirections можеш да пробваш без curl/wget:
Титла: Помощ за скрипт Публикувано от: never_mind в Feb 08, 2008, 21:43 Доста съм зле все още с тази материя... и ти ме разби... в момента се опитвам да разбера всяко едно нещо от твоите предложения какво прави всъщност и донякъде успявам...
![]() Можеш ли да ми препоръчаш някакво четиво... но наистина подробно и цялостно... виждам, че си на ти с скриптовете... ![]() btw версиятата ти работи и то ужасно бързо... ![]() Титла: Помощ за скрипт Публикувано от: radoulov в Feb 08, 2008, 23:16 Разбира се,
няколко задължителни (по мое мнение) четива: Bruce Barnett's tutorials on UNIX shell programming and various other arcane subjects Advanced Bash-Scripting Guide by Mendel Cooper За по-напреднали: Effective AWK Programming by Arnold Robbins A User's Guide to ZSH Надявам се да са ти полезни, както бяха (и все още са) за мен. P.S. Изключително са важни и някой форуми и news groups, но не знам, дали е уместно да поствам подобни линкове тук. |