Утиліта для ідентифікації вузлів та ресурсів у мережі
Аналіз технічного завдання: призначення розробки, відомості про LAN-мережі. Принципи ідентифікації вузлів комп’ютерної мережі в багатозадачних операційних системах. Проектування компонентів програми. Аналіз синтаксису Bash. Результати тестування.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 23.01.2012 |
Размер файла | 645,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
Тернопільський національний технічний університет
імені Івана Пулюя
Курсова робота
з дисципліни Системне програмування
Утиліта для ідентифікації вузлів та ресурсів у мережі
Вступ
Для зручності роботи мережі, її контролюють. Контролювати роботу будь-якої мережі вручну є дуже нелегкою і досить клопіткою задачею. Тому для спрощення контролю були придумані і розробленні системні утиліти для контролю за роботою комп'ютерної мережі.
Системні утиліти відчутно полегшують життя, як системного адміністратора, так й простого користувача.
Є різні системні утиліти за контролем мережі, проте в даній курсовій роботі було написано код програми власної системної утиліти, яка робить ідентифікації системних вузлів і ресурсів комп'ютерної мережі та зберігає дані.
На першому етапі буде розглянуто питання організація мережі, засоби та способи ідентифікації вузлів а також створено алгоритм програми, функціональну та структурну блок схеми.
На дургому етапі буде розглянуто вибір середовища розробки і надано його опис, а також опис головних функцій програми.
На третьому етапі ми здійснимо інтеграцію програми.
На четвертому буде зроблено тестування програми, для перевірки його працездатності.
На п'ятому етапі зробимо висновки.
1. Розробка структури програми
1.1 Аналіз технічного завдання
Темою технічного завдання і курсової роботи є «Утиліта для ідентифікації вузлів та ресурсів у мережі»
1.1.1 Призначення розробки
Дана програма забезпечує отримання інформації про наявні вузли в комп'ютерній мережі, здійснює їх ідентифікацію та надає інформацію про можливість доступу до них, а також виконує додаткові функції пошуку ресурсів комп'ютерної мережі.
Створенню локальних мереж і глобальної єдиної мережі комп'ютерів надають таке ж значення, що й будівництву швидкісних автомагістралей у шістдесяті роки XX ст. Тому комп'ютерну мережу називають «інформаційною супермагістраллю». Підкреслюючи вигоду, що принесе застосування мереж усім користувачам, фахівці говорять про інформацію «на кінчиках пальців».
Сучасні мережні технології сприяли новій технічній революції. Створення мережі на підприємстві, фірмі сприяє набагато вищому процесу обміну даними, відомостями між різними структурними підрозділами, прискоренню документообігу, контролю за рухами матеріалів й інших засобів, збільшенню й прискоренню передачі й обміну оперативною інформацією.
Комп'ютерна мережа -- це сукупність комп'ютерів і різних пристроїв, що забезпечують інформаційний обмін між комп'ютерами в мережі без використання яких-небудь проміжних носіїв інформації.
В даній курсвоій роботі буде розглядатись доступ до мережі класу LAN і загальної мережі( тобто буде виконуватись ще перевірка зв'язку з інтернет провайдером, а саме з його сервером).
1.1.2 Деякі відомомсті про LAN мережі
Із розвитком нових досягнень в технологіях мереж на початку 80-х років мережі почали поширюватись. Кожна компанія створювала власні стандарти та обладнання, технічні засоби мереж та програмне забезпечення. Ця конкуренція привела до несумісності створених технологій, та виникненню проблем узгодження обладнання. Необхідно було робити повне оновлення обладнання.
Спочатку були створені стандарти LAN. Ці стандарти були відкритим набором директив для створення мережевих технічних засобів та програмного забезпечення. Апаратне забезпечення різних компаній було узгоджено, що давало можливість будувати надійні і стабільні LAN.
Локамльна комп'юмтерна меремжа (англ. Local Area Network(LAN) являє собою об'єднання певного числа комп'ютерів (іноді досить великого) на відносно невеликій території. В порівнянні з глобальною мережею (WAN), локальна мережа зазвичай має більшу швидкість обміну даними, менше географічне покриття та відсутність необхідності використовувати запозиченої телекомунікаційної лінії зв'язку.
Локальна комп'ютерна мережа -- комп'ютерна мережа для обмеженого кола користувачів, що об'єднує комп'ютери в одному приміщенні або в рамках одного підприємства.
Розроблена системна утиліта перевірятиме також які протоколи використовуватиме комп'ютерна мережа.
Мережемвий протокомл в комп'ютерних мережах -- заснований на стандартах набір правил, що визначає принципи взаємодії комп'ютерів в мережі. Протокол також задає загальні правила взаємодії різноманітних програм, мережевих вузлів чи систем і створює таким чином єдиний простір передачі. Хости (будь-який вузол мережі що відправляє або приймає дані через мережу називають хостом (host)) взаємодіють між собою. Для того, щоб прийняти і обробити відповідним чином повідомлення, їм необхідно знати як сформовані повідомлення і що вони означають. Прикладами використання різних форматів повідомлень в різних протоколах можуть бути встановлення з'єднання з віддаленою машиною, відправка повідомлень електронною поштою, передача файлів. Зрозуміло, що різні служби використовують різні формати повідомлень.
Оскільки в інтрнет мережах найбільш поширеними протоколами на даний момент є протоколи IP, а саме IPv4 і IPv6, то розроблена системна утиліта ідентифікація вузлів та ресурсів комп'ютерної мережі здійснюватиме ідентифікацію цих протоколів.
Варто сказати, що IPv4 (англ. Internet Protocol version 4) -- четверта версія мережевого протоколу IP. Перша версія протоколу, яка набула широко розповсюдження. Протокол IPv4, описаний у RFC 791 (вересень 1981 року), прийшов на заміну описаному у RFC 760 (січень 1980 року). Використовує 4 байтну форму запису адрес пристроїв в комп'ютерній мережі.
IPv4 використовує 32-бітні (4 байтні) адреси, які обмежують адресний простір 4 294 967 296 (себто 28?4) можливими унікальними адресами.
Формою запису IP-адреси (IPv4) зазвичай є запис у вигляді 4 десяткових чисел від 0 до 255 (28), розділених крапками, наприклад: 127.0.0.1 (посилання пристрою на самого себе), або 91.198.174.225 (адреса ресурсу).
Деякі адреси IPv4 зарезервовані для спеціальних цілей та не можуть бути глобально маршрутизованими (доступними з будь-якого пристрою, що підключений до мережі інтернет). Так для приватних ІР-адрес ("сірих IP") в локальних мережах зарезервовано близько 18 млн адрес. Ще близько 270 млн адрес зарезервовано для групових передач (англ. multicast).
Обмежене число унікальних адрес у ~4.3 млрд у зв'язку з бурхливим розвиток Інтернету та резервуванням діапазону ~290 млн було вичерпане. 3 лютого 2011 року організація IANA видала останні 5 блоків IP-адрес організації Регіональних Інтернет Регістрів (RIR).
Задля вирішення цієї проблеми ще з 1990-их розвивався протокол IPv6, запущений з 2006 року.
IPv6 (англ. Internet Protocol version 6) -- нова версія IP-протоколу -- IP версії 6. Розробка протоколу IPv6 почалася 1992 року, а з 2003 р. його підтримку забезпечують виробники більшості телекомунікаційного устаткування (корпоративного рівня). IPv6 -- новий крок у розвитку Інтернету. Цей протокол розроблено з урахуванням вимог до Глобальної мережі, що зростають. При нинішніх темпах розвитку мережі за умови використання старого протоколу IPv4 адреси закінчаться до 2012 року.
Найбільш суттєва різниця між IPv4 та IPv6 полягає в тому, що раніше на інтернет-адресу виділяли 4 байти (32 біта), що відповідає стандартній на сьогодні чотирьохблочній IP-адресі, а протокол IPv6 виділяє на адресу 16 байтів (128 біт). Це відповідає 340 трильйонам трильйонів трильйонів адрес (3,4x1038) або по 5x1028 адрес на кожну людину.
5 лютого 2008 року вночі організація ICANN, яка наглядає за використанням інтернет-протоколів, почала додавати в DNS-сервери записи, що містять адреси у форматі протоколу IPv6[1]. Це поклало початок переходу з нинішнього протоколу IPv4 на сучасніший IPv6.
У квітні 2009 у мережі UA-IX запущено процес перевірки протоколу IPv6. У числі перших компаній, що ухвалили рішення про участь в тестуванні -- «ТопНЕТ» і «Датагруп». Вони встановили IPv6 BGP-з'єднання з маршрутизатором UA-IX, і здійснили обмін маршрутною інформацією між ними. У квітні 2011 розпочалось масове впровадження IPv6 серед домашніх користувачів інтернет. Першою мережею з підтримкою IPv6 для всіх користувачів стала Alfa-inet.
IPv6 адреси відображаються як вісім груп по чотири шістнадцяткові цифри, розділених двокрапками. Приклад адреси:
2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d
Якщо одна чи більше груп підряд дорівнюють 0000, то вони можуть скорочено записуватись як подвійна двокрапка (::). Наприклад, 2001:0db8:0000:0000:0000:0000:ae21:ad12 може бути скорочена до 2001:db8::ae21:ad12, 0000:0000:0000:0000:0000:0000:ae21:ad12 - до ::ae21:ad12. Скорочення не дозволяється у випадку, коли адреса містить 2 окремі нульові групи через виникнення невизначеності.
При використанні IPv6-адреси в URL необхідно брати адресу в квадратні дужки:
http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]/
Якщо потрібно вказати порт, то він пишеться після дужок:
http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]:8080/
1.1.3 Принципи ідентифікації вузлів комп'ютерної мережі в багатозадачних операційних системах
Комп'ютеру простіше працювати з числами, ніж з символьними іменами. Людині, наприклад, набагато простіше запам'ятати символьне ім'я ivanov, чим адреса 192.168.57.51. Правда? Тут вже позначається психологія людини - символьне ім'я зіставляється з якимсь чином - Івановим, а не якимись абстрактними числами.
Комп'ютер же просто так влаштований, що йому «зручніше» оперувати з числами.
Проблема дозволу імен, тобто перетворення IP-адреси комп'ютера в символьне ім'я і назад, хвилювала розробників мереж давно -- з моменту появи перших мереж. Спочатку для дозволу імен використовувався файл hosts. У цьому файлі зберігалася наступна інформація:
IP-адреса; ім'я; псевдоніми вузла.
Наприклад:
127.0.0.1 localhost
192.168.1.1 gateway
192.168.1.5 dhsilabs
В межах однієї організації і за умови, що комп'ютери небагато, скажемо 5. 10 або менша кількість, файл hosts повинен влаштовувати всіх. Ви його заповнюєте.
у файл hosts і знову скопіювати даний файл на всі комп'ютери від 1 до N+1. Не дуже зручно, чи неправда? Але, невже у вас щодня додаються нові комп'ютери у вашу мережу? Зазвичай мережа невеликого підприємства - це від 2 до 10 комп'ютерів, причому нові комп'ютери рідко підключаються до мережі. В цьому випадку файл hosts повинен повністю задовольнити ваші вимоги.
Кожен компютер у мережі має свою адресу. Проте вони можуть використовувати різні протоколи зєднання з глобальною мережею, так як у LAN мережі можуть бути старіші і новіші комп'ютери. До того ж прописувати весь час вказану вище процедуру вручну не є ефективно. Для полегшення роботи було придумано системні утиліти.
1.1.4 Засоби ідентифікації вузлів комп'ютерної мережі в операційних системах сімейств Microsoft Windows/Unix/Linux
Багато технологій так чи інакше передають інформацію про користувача та комп'ютери.Все це дозволяє «впізнавати» навіть відвідувача, який спеціально видалив кукі, змінив браузер і перейшов на інший IP.
Найбільше поширеними засобами ідентифікацій вузлів є так звані системні утиліти.
Утилімта (англ. Utility program, utility) -- сервісна програма, що допомагає керувати файлами, отримувати інформацію про комп'ютер, діагностувати й усувати проблеми, забезпечувати ефективну роботу мережі. Утиліти -- сервісні програми, що розширюють можливості ОС.
Утилімта (в програмуванні) -- невеличка прикладна програма.
Основним процедури, які виконують системні утиліти є пошук вузлів, надання про них інформації, пошук русерсів, перевірка зєдання та ідентифікації сервера.
1.2 Проектування компонентів програми
Рисунок 1- Алгоритм роботи програми
Рисунок 2 - Структурна схема програми
На даній схемі ми бачимо у якій послідовності буде виконуватись програма та що вона робитиме у випадку якщо одна з складових не виконуватиметься.
На даному рисунку ми бачимо структурну схему програми. Описано підсистему вводу, підсистему ідентифікації та підсистему виводу.
Рисунок 3 - Функціональна схема програми
На даному рисунку ми бачимо функціональну схему програми. Тут відобрежено головні її функцію, такі як: функція ідентифікації сервера,функція ідентифікації вузлів, функція ідентифікації ресурсів, функція збережння даних програми та функція відображення відомостей про програму.
2. Реалізація програми
2.1 Вибір середовища розробки
2.1.1 Основні моменти синтаксису Bash
Для даної курсової роботи я вибрав bash середовище програмування у якому буде створено системну утиліту ідентифікації вузлів та ресурсів комп'ютерної мережі.
Bash це командний процесор Unix написаний для проекту GNU. Його ім'я це акронім від Bourne-again shell - гра слів (Bourne again / born again) в Bourne shell (sh), який був раніше дуже важливим командному процесором. Bourne shell поширювався разом з Unix Version 7, приблизно в 1978. Оригінальний Bourne shell був написаний Стефаном Борном, який працював дослідником в Bell Labs. Bash shell був написаний в 1987 Брайном Фоксом. У 1990, Чет Рамей став основним мейнтейнером. Bash це командний процесор за замовчуванням в багатьох Linux системах.
Синтаксис команд Bash це надмножество синтаксису команд Bourne shell. Остаточна специфікація синтаксису команд Bash є в Bash Reference Manual, що постачається проектом GNU. Ами буде розглянуто деякі з унікальних особливостей синтаксису Bash.
Безліч важливих скриптів командного процесора Bourne можуть виконуватися без зміни в Bash, за винятком тих скриптів Bourne, які посилаються на спеціальні змінні Bourne або використовують вбудовані команди Bourne. Синтаксис команд Bash включає в себе ідеї скопійовані з Korn shell (ksh) та C shell (csh), такі як редагування командного рядка, історія команд, стек директорії, змінні $ RANDOM і $ PPID, і синтаксис заміни команди POSIX: $ (.. .). Коли Bash використовується як інтерактивний командний процесор, він підтримує автозавершення імен програм, імен файлів, імен змінних тощо, якщо користувач натискає кнопку TAB.
Синтаксис Bash містить безліч розширень, в яких потребував Bourne shell. Деякі з них наведено тут.
2.1.2 Цілочисельна математика
Головне обмеження Bourne shell це те, що він не може виконувати обчислення з цілими числами без породження зовнішнього процесу. Bash може виконувати цілочисельні обчислення усередині процесу використовуючи команду ((...)) і синтаксис змінної $[...].
Команда ((...)) так само може використовуватися в умовних твердженнях, тому що її вихідний параметр це 0 або 1, які можуть інтерпретуватися як true або false:
if ((VAR == Y * 3 + X * 2))
then
echo Yes
fi
((Z> 23)) & & echo Yes
Команда ((...)) підтримує такі відносні оператори:'==','!=', '>', '<','>=', і'<='.
Bash не підтримує обчислення усередині процесу з числами з плаваючою крапкою. Тільки командні процесори Unix підтримують цю можливість Korn Shell (версія 1993 року) і zsh (починаючи з версії 4.0).
Перенаправлення I / O
Bash має індивідуальний синтаксис перенаправлення, який не підтримує Bourne shell. Bash може перенаправляти стандартний вивід і стандартні помилки одночасно, використовуючи наступний синтаксис:
command &> file
що простіше надрукувати, ніж еквівалентну команду використовуючи синтаксис Bourne shell "command> file 2> & 1". Bash, починаючи з версії 2.05b, може перенаправляти стандартний ввід з рядка використовуючи наступний синтаксис (іноді званий "here strings"):
command <<<"string to be read as standard input"
Якщо рядок містить пробіли, він повинен бути укладеним в лапки.
Приклад: Перенаправлення стандартного виводу у файл, запис даних, закриття файлу, скидання stdout
мережа ідентифікація комп`ютерний bash
# Make Filedescriptor (FD) 6 a copy of stdout (FD 1)
exec 6> & 1
# Open file "test.data" for writing
exec 1> test.data
# Produce some content
echo "data: data: data"
# Close file "test.data"
exec 1> & -
# Make stdout a copy of FD 6 (reset stdout)
exec 1> & 6
# Close FD6
exec 6> & -
Відкриття та закриття файлів:
# Open file test.data for reading
exec 6 <test.data
# Read until end of file
while read-u 6 dta
do
echo "$ dta"
done
# Close file test.data
exec 6 <& -
Захоплення виводу зовнішніх команд:
# Execute 'find' and store results in VAR
# Search for filenames which end with the letter "h"
VAR = $ (find.-Name "* h")
Регулярні обчислення усередині процесу
Bash 3.0 підтримує всередині процесні регулярні обчислення відповідні Вашого наступного синтаксису, що нагадує Perl:
[[String = ~ regex]]
Синтаксис регулярних обчислень такий же що і задокументований на сторінках документації regex (3). Статус виходу вищезазначеної команди 0 якщо перерахування regex це рядок, 1 якщо це не так. До введеним подвираженій в регулярному виразі можна отримати доступ, використовуючи змінну командного процесора BASH_REMATCH, як показано нижче:
if [[abcfoobarbletch = ~ 'foo (bar) bl (.*)']]
then
echo The regex matches!
echo $ BASH_REMATCH - outputs: foobarbletch
echo $ {BASH_REMATCH [1]} - outputs: bar
echo $ {BASH_REMATCH [2]} - outputs: etch
fi
Цей синтаксис дає краще виконання породження окремого процесу щоб виконати команду grep, бо відповідний регулярний вираз має місце в межах процесу Bash. Якщо регулярний вираз або рядок містять пропуски або метасимволи (такі як '*' or'?'), вони повинні бути поміщені в лапки.
2.1.3 Зворотні escape послідовності
Слова, що мають форму $ 'рядок' розглядаються окремо. Слово розширюється до рядка, за допомогою символів зворотних escape послідовностей, описаних у мові програмування C.
Стартові скрипти Bash
Коли запускається Bash, він виконує команди, записані в різноманітних скриптах.
Коли Bash викликається інтерактивною командною оболонкою, або неінтерактивною оболонкою з параметром - login, він спочатку читає і виконує команди з файлу / etc / profile, якщо він існує. Після прочитання цього файлу, він у такому порядку шукає ~ /. Bash_profile, ~ /. Bash_login, і ~ /. Profile, читає і виконує команди з першого, який виконується і читається. Параметр - noprofile може використовуватися, коли командна оболонка перешкоджає такій поведінці.
Коли командна оболонка завершує свою роботу, Bash читає і виконує команди з файлу ~ /. Bash_logout, якщо він існує.
Коли інтерактивна оболонка, яка не є командною оболонкою, запускається, Bash читає і виконує команди з ~ /. Bashrc, якщо цей файл існує. Це може бути загальмовано параметром - norc. Параметр - rcfile file змусить Bash читати і виконувати каманди з file замість ~ /. Bashrc.
Коли Bash запускається неінтерактивному, то для запуску скрипта оболонки, наприклад, він шукає змінну BASH_ENV в середовищі, розширює своє значення якщо він з'явиться там, і використовує розширене значення як ім'я файлу для читання та виконання. Bash поводиться так, як якщо б були виконані наступні команди:
if [-n "$ BASH_ENV"]; then. "$ BASH_ENV"; fi
але значення змінної PATH не використовується для пошуку файлу.
Якщо Bash викликається з параметром sh, він намагається імітувати запуск історичних комманд sh на скільки це можливо, в той час як відповідний стандарт POSIX так само. Якщо Bash запущено в якості інтерактивної оболонки, або у формі не інтерактивної с - login опцією, це перша спроба на читання і виконання команд с / etc / profile і ~ /. Profile, в такому порядку. Ця - noprofile опція може бути використана для інгібіції. При виклик як інтерактивної оболонки з ім'ям sh, Bash дивиться на змінні ENV, на їхнє значення, якщо змінна визначена, і використовує розширене значення як ім'я файлу для запису і виконання. Поки shell викликається як sh, то параметр - rcfile не дає результату. Чи не інтерактивна оболонка викликана за параметром sh не намагається читати і виконувати команди від будь-яких інших файлів запуску. Коли викликана за sh, Bash входить в posix mode після автозапуску готових файлів.
Коли Bash запущена в POSIX-режимі, з параметром - posix в командному рядку, Це слід POSIX-стандарту для файлів автозапуску. У цьому режимі, оболонка доповнюється ENV змінної і командами, які готові для виконання з файлу, чиє ім'я і є ця змінна.
Bash намагається визначити коли вона буде запущена на remote shell daemon, звичайно це rshd. Якщо Bash опреділіть, що оболонка в даний час запущена rshd, то читаються і виконуються команди з ~ /. Bashrc, якщо цей файл доступний звичайно. Це не відбудеться якщо Bash викликана за sh. Опція - norc може бути використана для інгібінаціі такої поведінки, і опція - rcfile може бути задіяна для запису іншого файлу, але rshd як правило, не посилається на оболонку з цими опціями, або щоб їх можна було вказати.
2.2 Реалізація компонентів програми
Компоненти програми я реалізував за допомогою bash script у середовищі Unix.
#!/bin/bash
Опис головних функцйцій програми :
Головними функціями програми є ідентифікація сервіса, ідентифікація вузлів та ресурсів комп'ютерної мережі.
Ідентифікація сервіса комп'ютерної мережі здійснюється за допомогою наступної функції :
AUDITFL=`hostname -s` де команда `hostname -s` власне і вказує на сервер комп'ютерної мережі.
Пошуку вузлів у моїй системні утиліті здійснюється за допомогою функції :
case "$MJR" in
"2" )
case "$MIR" in
"0" | "1" )
FWILBIN="ipfwadm";
IPPROC="ip_[mfp][ao][rs][wqt][qha]*";;
"2" | "3" )
FWILBIN="ipchains";
IPPROC="ip_[fm][wa][cns]*";;
* )
FWILBIN="iptables";
IPPROC="ip_tables*";;
esac;;
"3" )
FWILBIN="iptables";
IPPROC="ip_table*";;
* )
FWILBIN="Unknown";;
esac
if [ $IP4E ]; then IPV="IPV4"; fi
if [ $IP6E ]; then IPV=$IPV"/IPV6"; fi
FWILPROC1=`ls /proc/net/$IPPROC 2>/dev/null | grep -c ip_tables`
FWILPROC2=`which $FWILBIN 2>/dev/null | grep -c $FWILBIN`
if [ $FWILPROC1 -ne 0 -a $FWILPROC2 -ne 0 ] ; then FWILSTAT="IP_Tables"; else FWILSTAT="None"; fi
Дана фінкція виконує пошук вузлів з протоколами IP4 i IP6 , вказує шлях їх пошуку та якшо нічого не знайдено,то при роботі програми буде вибиватись помилка.
Ідентифікація ресурсів мережі здійснюється за допомогою наступної функції :
for P in `awk ' { print $2 } ' $TMPFD/$FLTC`
do
PP=$PP$P,
lsof -i tcp:$P | grep LISTEN | awk -v P=$P -v TMPFL=$TMPFD/$TMPFL3 ' { printf " %12s %12s %20s\n", P, $1, $2 >> TMPFL } '
done
echo "$PP details" >> $TMPFD/$AUDITFL
sort -g -k3 $TMPFD/$TMPFL3 > $TMPFD/$TMPFL2
awk -v TMPFL3=$TMPFD/$TMPFL3 ' BEGIN { }
{ if(cf != $2)
printf "%12s %12s %20s\n", $1, $2, $3 > TMPFL3
cf = $2 }
END { } ' $TMPFD/$TMPFL2
line
lsof -i tcp:$PP | grep LISTEN | sort -d > $TMPFD/$TMPFL2
awk -v TMPFL1=$TMPFD/$TMPFL1 ' BEGIN { }
{ if(cf != $1)
print $1, $2, $9 > TMPFL1
cf = $1 }
END { } ' $TMPFD/$TMPFL2
printf "%5s %10s %8s %30s %20s %s\n" "PID" "Process" "Port" "As per /proc" "As per Which" "Working Dir" >> $TMPFD/$AUDITFL
for ID in `awk ' { print $2 } ' $TMPFD/$TMPFL1`
do
PROCEXE=`ls -l --full-time /proc/$ID/exe | awk ' { print $11 } '`
PROCPWS=`ls -l --full-time /proc/$ID/cwd | awk ' { print $11 } '`
PROC=`awk -v P=$ID ' { if (P == $2) print $1 } ' $TMPFD/$TMPFL1`
WPROC=`which 2>/dev/null $PROC`
P=`awk -v ID=$ID ' BEGIN { } { if (ID == $3) print $1 } END { } ' $TMPFD/$TMPFL3`
printf "%5s %10s %8s %30s %20s %s\n" "$ID" "$PROC" "$P" "-$PROCEXE" "-$WPROC" "-$PROCPWS" >> $TMPFD/$AUDITFL
done
line
netstat -tulnp | grep LISTEN | awk ' { print $4, $7 } ' | sed 's/\(.*\)\:/\1 /' | sed 's/\// /g' > $TMPFD/$TMPFL1
printf "%20s %8s %8s %20s\n" "IP" "PORT" "PID" "PROCESS" >>
3. Інтеграція
Далі ми інтегруємо всю програму і програмний код в термінал середовища UNIX.
Робим це наступним чином:
В командому рядку термінала прописуємо наступну команду:
sudo bash,
після чого вказуємо місце знаходження нашої програми.
4. Тестування та результати
Після того як ми зробили інтеграцію програми ми натискаємо клавішу Enter і можем спостерігати за результатами.
У даному вікні ми можемо побачити результат виконання програми. Зокерма кількість вузлів, відстань до них,імя сервера, ІР адресу мережі і ІР маски мережі, Назву операційної системи яку ми використовуємо, ресурси(процеси) які запущені у даній мережі.
Вкінці виконаної програми ми можем побачити місце куди зберігаються дані а нашому випадку це tmp/netadtchk/oleh-VirtualBox.
Висновки
Виконуючи курсову роботу я створив системну утиліту для ідентифікації вузлів та ресурсів у мережі.
Моя програма забезпечує отримання інформації про наявні вузли в комп'ютерній мережі, ресурси та здійснює їх ідентифікацію , надає інформацію про можливість доступу до них, а також виконує додаткові функції пошуку ресурсів комп'ютерної мережі, зокрема перевірки Firmware Status.
Крім цього, я також розгялнув питання організації комп'ютерної мережі, способи їх організації, методи та засоби пошуку вузлів та ресурсів у комп'ютерні мережі.
Список використаної літератури
1. Deitel Paul, Deitel Harvey. C# 2010 for programmers. Fourth edition. - 1239 p.
2. Freeman Adam. Introducing Visual C# 2010. - 1321 p.
3. Shildt Herbert. C#4.0 The Complete Reference. 2010. - 976 p.
4. http://ua.textreferat.com/referat-7828.html - особливості організації роботи комп'ютерної мережі та доступу до її вузлів.
3. http://softkey.info/reviews/review461.php - засоби ідентифікації вузлів комп'ютерної мережі в операційних системах сімейств Microsoft Windows/Unix/Linux.
4. http://ua-referat.com/Операційна_система_Unix - Середовище UNIX.
Додаток
Лістинг програми
#!/bin/bash
##################################################################
#
# Script to check / audit systems process using network resources
# and report a detailed info from various system file, process and
# outputs
#
##################################################################
#
# Author: Volodymyr Nykorchuk
# License: GNU GPL v3
##################################################################
VERSION=1
##################################################################
AUDITFL=`hostname -s`
CHKPID="/var/run/netaudchk-ppid"
FLWPID="/var/run/netaudchk-fpid"
TMPFD="/tmp/netadtchk"
TMPFL1="tmpfl1"
TMPFL2="tmpfl2"
TMPFL3="tmpfl3"
OPSYS=`uname -o`
OPKER=`uname -s`
OPDST=`uname -r`
HSTNM=$AUDITFL
FLTC="tcpflen"
FWTSTIN="fwtest.in"
FETSTOUT="fwtest.out"
HNIC=`lspci | grep -ic ethernet`
VNIC=`ip -d link | grep ^[0-9] | awk '{ print $2 }' | sed 's/://' | grep -vi "lo" | grep -vc "eth"`
LNIC=`ip -d link | grep ^[0-9] | awk '{ print $2 }' | sed 's/://' | grep -ic "lo"`
TNIC=`expr $HNIC + $VNIC + $LNIC`
IP4E=`ip -d addr | grep -ic inet`
IP6E=`ip -d addr | grep -ic inet6`
TTCP=`ss -t | wc -l`
TTCPL=`ss -t -l | wc -l`
TTCPC=`ss -t -a | wc -l`
IPFW=`cat /proc/sys/net/ipv4/ip_forward`
IPMQ=`cat /proc/sys/net/ipv4/ip_dynaddr`
IPPROC=""
MJR=${OPDST:0:1}
MIR=${OPDST:2:1}
FWILBIN="None"
FWON="Off"
FWIN="False"
FWOT="False"
FWFW="False"
FWMQ="False"
NMSR=`grep nameserver /etc/resolv.conf | grep -v ^# | head -1 | awk '{ print $2 } '`
DFGW=`ip route | grep default | sed 's/default\|proto\|static//g'`
###################################################################
# Functions
function lpnt {
for r in {1..80..1}
do
printf "%c" $1
done
printf "\n"
}
#
###################################################################
function cleanup {
rm -f $CHKPID
rm -f $FLWPID
}
###################################################################
function create_workspace {
mkdir $TMPFD
}
###################################################################
function remove_workspace {
rm -Rf $TMPFD
}
###################################################################
function pause {
echo -n "Press enter to continue..."
read
}
###################################################################
function line {
echo >> $TMPFD/$AUDITFL
}
###################################################################
#Main Program
if [ $UID -ne 0 ]
then
echo
echo "No root previleges"
exit 0
fi
if [ "$1" == "-c" ]
then
cleanup
echo "PID files removed"
exit 0
fi
if [ "$1" == "-h" ]
then
echo
echo "Usage: "
echo "netadtchk [option]"
echo " -a All"
echo " -h Help"
echo " -c Clear PID files"
echo " no option prints the summery information to the stdout and into the /tmp/netadtchk/$AUDITFL file."
echo
exit 0
fi
if [ -f $CHKPID ]
then
echo " Net Auditor running with PID `cat $CHKPID`"
echo " To clear the PID files use the -c option"
exit 0
else
echo $$ > $CHKPID
fi
#
#
if [ -d $TMPFD ]
then
remove_workspace
create_workspace
else
create_workspace
fi
#
case "$MJR" in
"2" )
case "$MIR" in
"0" | "1" )
FWILBIN="ipfwadm";
IPPROC="ip_[mfp][ao][rs][wqt][qha]*";;
"2" | "3" )
FWILBIN="ipchains";
IPPROC="ip_[fm][wa][cns]*";;
* )
FWILBIN="iptables";
IPPROC="ip_tables*";;
esac;;
"3" )
FWILBIN="iptables";
IPPROC="ip_table*";;
* )
FWILBIN="Unknown";;
esac
if [ $IP4E ]; then IPV="IPV4"; fi
if [ $IP6E ]; then IPV=$IPV"/IPV6"; fi
FWILPROC1=`ls /proc/net/$IPPROC 2>/dev/null | grep -c ip_tables`
FWILPROC2=`which $FWILBIN 2>/dev/null | grep -c $FWILBIN`
if [ $FWILPROC1 -ne 0 -a $FWILPROC2 -ne 0 ] ; then FWILSTAT="IP_Tables"; else FWILSTAT="None"; fi
#
if [ $FWILBIN == "iptables" ]
then
$FWILBIN -L | grep -i chain > $TMPFD/$TMPFL1
for C in `awk ' { print $2 } ' $TMPFD/$TMPFL1`
do
if [ $C == "INPUT" ]
then
if [ `$FWILBIN -L $C | grep -wc 'all\|tcp\|udp'` -gt 0 ] ; then FWIN="True"; fi
fi
if [ $C == "OUTPUT" ]
then
if [ `$FWILBIN -L $C | grep -wc 'all\|tcp\|udp'` -gt 0 ] ; then FWOT="True"; fi
fi
if [ $C == "FORWARD" ]
then
if [ `$FWILBIN -L $C | grep -wc 'all\|tcp\|udp'` -gt 0 ] ; then FWFW="True"; fi
fi
done
fi
#
FWR=`$FWILBIN -L | sed '/^$/d' | grep -iv chain | grep -ivc "target\|source\|destination"`
if [ $FWR -gt 0 -a $FWIN == "True" ] ; then FWON="On"; fi
#
printf "%12s %12s %20s %20s %9s\n" "Hostname" "OS" "Kernel" "Release" "IPV" >> $TMPFD/$AUDITFL
printf "%12s %12s %20s %20s %9s\n\n" "$AUDITFL" "$OPSYS" "$OPKER" "$OPDST" "$IPV" >> $TMPFD/$AUDITFL
#
printf "%15s%12s%20s%20s%25s\n" "FW Binary" "Forwarding" "Masquerading" "1st Name Srv" "Default Gateway" >> $TMPFD/$AUDITFL
printf "%15s%12s%20s%20s%25s\n\n" "$FWILBIN" "$IPFW" "$IPMQ" "$NMSR" "$DFGW" >> $TMPFD/$AUDITFL
#
printf "%14s%14s%14s%14s%14s\n" "FW Status" "FW In" "FW Out" "FW Forward" "FW Masq" >> $TMPFD/$AUDITFL
printf "%14s%14s%14s%14s%14s\n" "$FWON" "$FWIN" "$FWOT" "$FWFW" "$FWMQ" >> $TMPFD/$AUDITFL
#
printf "\n%15s %15s %20s\n" "Type" "Name" "IP Details" >> $TMPFD/$AUDITFL
for N in `ip -d link | grep ^[0-9] | awk '{ print $2 }' | sed 's/://'`
do
case "$N" in
"lo" )
TYPE="Loopback";;
"eth0" | "eth1" | "eth2" | "eth3" | "eth4" | "eth5" )
TYPE="Hardware";;
* )
TYPE="Virtual/Other"
esac
IPDET=`ifconfig $N | grep -w "inet"`
printf "%15s %15s %s\n" "$TYPE" "$N" "$IPDET" >> $TMPFD/$AUDITFL
done
line
echo "Routes:" >> $TMPFD/$AUDITFL
netstat -rn >> $TMPFD/$AUDITFL
line
ss -nl4 | awk ' { print $3 } ' | grep -iv local | sed 's/*/0.0.0.0/g' > $TMPFD/$TMPFL1
ss -nl6 | awk ' { print $3 } ' | grep -iv local | sed 's/\(.*\)\:/\1 /' > $TMPFD/$TMPFL2
sed -i 's/\:/ /g' $TMPFD/$TMPFL1
sort $TMPFD/$TMPFL1 > $TMPFD/$TMPFL3
sort $TMPFD/$TMPFL2 >> $TMPFD/$TMPFL3
echo "This system has `expr $TTCPL - 1` Listening Sockets (IPv4/IPv6) at TCP/Ports: " >> $TMPFD/$AUDITFL
cp $TMPFD/$TMPFL3 $TMPFD/$FLTC
#
#
for P in `awk ' { print $2 } ' $TMPFD/$FLTC`
do
PP=$PP$P,
lsof -i tcp:$P | grep LISTEN | awk -v P=$P -v TMPFL=$TMPFD/$TMPFL3 ' { printf " %12s %12s %20s\n", P, $1, $2 >> TMPFL } '
done
echo "$PP details" >> $TMPFD/$AUDITFL
sort -g -k3 $TMPFD/$TMPFL3 > $TMPFD/$TMPFL2
awk -v TMPFL3=$TMPFD/$TMPFL3 ' BEGIN { }
{ if(cf != $2)
printf "%12s %12s %20s\n", $1, $2, $3 > TMPFL3
cf = $2 }
END { } ' $TMPFD/$TMPFL2
line
lsof -i tcp:$PP | grep LISTEN | sort -d > $TMPFD/$TMPFL2
awk -v TMPFL1=$TMPFD/$TMPFL1 ' BEGIN { }
{ if(cf != $1)
print $1, $2, $9 > TMPFL1
cf = $1 }
END { } ' $TMPFD/$TMPFL2
printf "%5s %10s %8s %30s %20s %s\n" "PID" "Process" "Port" "As per /proc" "As per Which" "Working Dir" >> $TMPFD/$AUDITFL
for ID in `awk ' { print $2 } ' $TMPFD/$TMPFL1`
do
PROCEXE=`ls -l --full-time /proc/$ID/exe | awk ' { print $11 } '`
PROCPWS=`ls -l --full-time /proc/$ID/cwd | awk ' { print $11 } '`
PROC=`awk -v P=$ID ' { if (P == $2) print $1 } ' $TMPFD/$TMPFL1`
WPROC=`which 2>/dev/null $PROC`
P=`awk -v ID=$ID ' BEGIN { } { if (ID == $3) print $1 } END { } ' $TMPFD/$TMPFL3`
printf "%5s %10s %8s %30s %20s %s\n" "$ID" "$PROC" "$P" "-$PROCEXE" "-$WPROC" "-$PROCPWS" >> $TMPFD/$AUDITFL
done
line
netstat -tulnp | grep LISTEN | awk ' { print $4, $7 } ' | sed 's/\(.*\)\:/\1 /' | sed 's/\// /g' > $TMPFD/$TMPFL1
printf "%20s %8s %8s %20s\n" "IP" "PORT" "PID" "PROCESS" >> $TMPFD/$AUDITFL
awk ' { printf "%20s %8s %8s %20s\n", $1, $2, $3, $4 } ' $TMPFD/$TMPFL1 >> $TMPFD/$AUDITFL
line
lpnt "#" >> $TMPFD/$AUDITFL
##################################################################
## Print details from Audit file
clear
cat $TMPFD/$AUDITFL
echo "Complete Information is stored at $TMPFD/$AUDITFL"
if [ "$1" == "-a" ]
then
echo "All TCP Listening Process Details" >> $TMPFD/$AUDITFL
netstat -tunlp | grep -v udp >> $TMPFD/$AUDITFL
line
echo "ALL UDP Listening Process Details" >> $TMPFD/$AUDITFL
netstat -tunlp | grep -v tcp >> $TMPFD/$AUDITFL
line
echo "Current established connections - NETSTAT" >> $TMPFD/$AUDITFL
netstat -tunap >> $TMPFD/$AUDITFL
line
echo "Current established connections - SS" >> $TMPFD/$AUDITFL
ss -o state established >> $TMPFD/$AUDITFL
line
lpnt "#" >> $TMPFD/$AUDITFL
fi
#
cleanup
exit 0
#
###################################################################
Размещено на Allbest.ru
Подобные документы
Обгрунтування фізичної топології комп’ютерної мережі. Розробка схеми фізичного розташування кабелів та вузлів. Типи кабельних з’єднань та їх прокладка. Вибір сервера та інсталяція його програмного забезпечення, налаштування ОС Windows 2008 Server.
курсовая работа [1,4 M], добавлен 07.02.2016Вибір та обґрунтування компонентів мережі, клієнтської частини, комунікаційного обладнання та прикладного програмного забезпечення. Опис фізичної та логічної структури мережі. Принципова схема топології мережі та cхема логічної структури мережі.
курсовая работа [487,4 K], добавлен 16.02.2015Побудова і декомпозиція корпоративної комп'ютерної мережі з різною кількістю абонентів у системі проектування "Packet Tracer". Фіксація даних по завантаженню комутаторів і часу транзакції абонентів. Принципи висхідного та низхідного конструювання мережі.
курсовая работа [2,5 M], добавлен 24.09.2010Використання мережі із топологією "розподілена зірка", витої пари та концентраторів (для сполучення), мережевої карти із роз'ємами типу RG-45, встановлення операційної системи та монтаж мережі комп'ютерної лабораторії із підключенням до Інтернету.
контрольная работа [1,0 M], добавлен 12.06.2010Фізичне та логічне представлення топології мереж, кабельна система. Вибір мережевого устаткування. Імітаційне моделювання корпоративної комп’ютерної мережі в NetCracker 4.0. Представлення локальної мережі в Microsoft Visio 2013, економічне обґрунтування.
курсовая работа [993,5 K], добавлен 17.05.2015З’єднання компонентів мережі офісу на фізичному та канальному рівні, створення топології мережі, налаштування адресації та маршрутизації. Моделювання потоків трафіку і обміну пакетами між роутерами мережі, розрахунок подвоєної затримки поширення сигналу.
курсовая работа [402,1 K], добавлен 23.12.2015Міжрівневі взаємодії, що відбуваються при передачі даних по мережі. Процес відправлення повідомлень з одного місця в інше, мережні процеси, протоколи. Характеристика та призначення протоколу ARP. Визначення фізичної адреси локального, віддаленого вузлів.
контрольная работа [12,4 K], добавлен 22.09.2009Розрахунок інформаційних потоків у ЛОМ підприємства, планування середнього трафіку і коефіцієнта використання мережі. Планування структурованої кабельної системи. Структура клієнт-серверних компонентів корпоративної комп’ютерної мережі, захист інформації.
курсовая работа [828,7 K], добавлен 01.06.2013Вибір архітектури і топології мережі, її оптимальної конфігурації. Налагодження операційної системи сервера. Технічне та програмне обслуговування комп’ютерної мережі. Розрахунок необхідної довжини кабелю та кількості й типів мережного обладнання.
дипломная работа [6,2 M], добавлен 15.06.2014Загальна характеристика мережі та мережевого обладнання, а також програмного забезпечення підприємства. Обґрунтування необхідності створення та налаштування комп’ютерної мережі, зміст відповідних заходів. Розрахунок затрат на матеріали і комплектуючі.
дипломная работа [2,4 M], добавлен 21.06.2014