Титла: Bash script за намиране на PTR записи Публикувано от: abadon в Jul 08, 2014, 23:31 Здравейте,
Както съм написал и в темата, смятам се за начинаещ сприптописач на bash иначе с Линукса и доста други неща в ИТ-то съм добре запознат. Искам да направя скрипт който чете списък с мрежи вкарани в битов формат (примерно 192.168.100.0/24), след което обхожда всички ip-та от зададените мрежи и връща валидните PTR записи. Ето какво съм написал до момента: Код: NET_LST=nets.lst като в nets.lst съм сложил това: Код: 1.2.3.0/22 Кода се изпълнява без грешка, обаче взема PTR-ите на грешните мрежи, не на зададените за тест. Въпросите са ми следните: 1. Има ли начин с print да принтвам целия октет на мрежата, не само първия, втория или N-тия знак от нея? Ако разгледаме примерните мрежи от nets.lst, при обхождането да ми върне съответно 1 40 117, не както сега 1 4 1 Първоначалната ми идея беше всяка цифра от ip-то да я разбия на променлива, обаче сега ми се струва грешно, тъй като първия октет може да съдържа 1, 2 или 3 знака.... 2. За цифрите от HostMax втори масив ли трябва да се прави? Като този втори масив да се съдържа в първия? Благодаря предварително на всички които ще ми дадът идеи и примери за решаване на казуса ми! Титла: Re: Bash script за намиране на PTR записи Публикувано от: jet в Jul 09, 2014, 00:13 можеш да използваш awk:
echo "111.222.333.44" | awk -F'.' '{print $1}' връща 111 '.' е делимитъра който разделя стринга с '{print $1}' - можеш да избираш кой октет да ти вади Титла: Re: Bash script за намиране на PTR записи Публикувано от: abadon в Jul 09, 2014, 09:55 Блаягодаря jet преправих кода така:
Код: NET_LST=nets.lst nets.lst Цитат 1.2.3.0/30 Обаче като го изпълня получавам следния резултат: Цитат 1 40 112 Въпросите ми сега са следните: 1. Може ли във for на 12 ред да дефинирам range от две променливи, тъй като явно както съм го направил сега: Код: for ip in {"$o1min".."$o1max"} не работи 2. С масиви ли да задам HostMin и HostMax или има някакви други техники? Питам за да знам за какво да чета в нета. Сега от output-а който съм дал се вижда, че да вкарам втори масив във първия явно не е начина, тъй като двойките HostMin и HostMax които ще получа във for-а (след като намеря отговор на първия си въпрос) ще са 1 1 1 40 1 127 и т.н. а те трябва да са: 1 1 40 40 112 127 Предварително благодаря! Титла: Re: Bash script за намиране на PTR записи Публикувано от: abadon в Jul 10, 2014, 14:43 След доста главоблъскане и ровен в нета, промених цялостната стратегия и в крайна сметка след 3 дена борба нещата станаха:
Код: ############################ това е финалния код, дано на някой някога му е от полза Пуска се в конзолата с командата: Цитат ./show-prefix-PTRs.sh 23.91.120.0/21 37.18.176.0/22 66.36.176.0/21 като можете да си изредите колкото искате префикса. Титла: Re: Bash script за намиране на PTR записи Публикувано от: dexxa в Jul 10, 2014, 23:08 nmap -R -sL 10.0.0.1/24|awk 'match($6, /\(/) {print $5}'
Това е за една мрежа. За повече - да се напише цикъл е лесно. Програмирането е готино, но има хора, които вече са измислили това, което ми е нужно. Остава, само, да го намеря. [_]3 |