SHELL-СКРИПТТЕРДІ БАҒДАРЛАМАЛАУ


Л. Н. ГУМИЛЕВ АТЫНДАҒЫ ЕУРАЗИЯ ҰЛТТЫҚ УНИВЕРСИТЕТІ

АҚПАРАТТЫҚ ТЕХНОЛОГИЯЛАР ФАКУЛЬТЕТІ

ИНФОРМАТИКА ЖӘНЕ АҚПАРАТТЫҚ ҚАУІПСІЗДІК ЖҮЙЕЛЕРІ КАФЕДРАСЫ

ЖҮЙЕЛІК БАҒДАРЛАМАЛЫ ҚАМТАМА ПӘНІ

БОЙЫНША КУРСТЫҚ ЖҰМЫС

ТАҚЫРЫП: “SHELL-СКРИПТТЕРДІ БАҒДАРЛАМАЛАУ ”

Орындаған: 5В100200 - Ақпараттық

қауіпсіздік жүйелері мамандығының

студенттері: Құмарғалиев Э.

Сагиналиев М.

Ғылыми жетекші: аға оқытушы, PhD доктор

Бурибаева А. К.

Астана

2017

Л. Н. ГУМИЛЕВ АТЫНДАҒЫ ЕУРАЗИЯ

ҰЛТТЫҚ УНИВЕРСИТЕТІ

Кафедра: Информатика ақпараттық қауіпсіздік жүйелері

Пән: Жүйелік бағдарламалы қамтама

БЕКІТЕМІН

Кафедра меңгерушісі

Сагиндыков К. М

«___»2017 ж.

Білім алушының курстық жұмысына

ТАПСЫРМА

Курстық жұмыстың тақырыбы - Shell-скрипттерді бағдарламалау

Курстық жұмыстың мақсаты - Shell-скрипттерді қолдана отырып, максималды түрде артықшылықтарын іс жүзінде дәлелдеу

Курстық жұмыстың көлемі 24 бет

Курстық жұмыстың орындалу барысын жетекшіге баяндау уақыты

а) жиналған деректер бойынша және курстық жұмыстың орындалу бойынша баяндама « » желтоқсан 2017 ж.

б) курстық жұмыстың жазылу барысы бойынша баяндама

« » желтоқсан 2017 ж.

Курстық жұмысты тапсыру мерзімі « » 2017 жыл.

Курстық жұмыстың жетекшісі PhD, аға оқытушы Бурибаева А. К.

« » 2017 жыл.

МАЗМҰНЫ

Кіріспе 4

  1. Теориялық бөлім 6
  1. Shell процедуралары 6
  2. Командалар құрылымы 6
  3. Командаларды топтау 7
  1. Тәжірибелік бөлім 11
  1. Тапсырманы анықтау 11
  2. Тапсырманың алгоритмі 11
  3. Алгоритм бағдарламалық іске асырылуы 13

Қорытынды 16

Пайдаланылған әдебиеттер тізімі 17

Қосымша 18

КІРІСПЕ

Қолданушы операциялық жүйемен тікелей жұмыс істемейді. Қолданушымен өзара әрекеттесуді арнайы бағдарлама жүзеге асырады. Unix жүйелерінде мұндай программалардың екі түрі бар - қабықша немесе мәтіндік режимде жұмыс жасау үшін арналған (командалық жол интерфейсі) shell және қолданушымен графикалық режимде өзара әрекеттесуді ұйымдастыратын GUI (Graphical User Interface) қолданушы графикалық интерфейсі. Көптеген бағдарламалар GUI арқылы іске қосуға бейімделмеген, сондықтан олар командалық жол арқылы іске асырылады.

Алғашқы Unix жүйелерінде shell (ағылш. қабықша) сөзінен қысқартылып алынған - sh атты бағдарламалар болды. Кейіннен GNU жобасының (Р. Столманның еркін ОЖ құрастыру бойынша жобасы) шеңберінде bash қабықшасы әзірленген болатын. Bash - ағылшын тілінде bourne agan shell дегенді білдіреді. Қазіргі заманда bash - Unix жүйелерінде ең көп таралған командалар интерпретаторы болып саналады.

Командалық қабықша тілін бағдарламалаушыға не үшін білу қажет? Командалық қабықша тілі туралы білімдер жүйені ұқыпты басқарудың басты шарты болып келеді. Тіптен өз сценарияларыңызды жазуды ойлап жүрмесеңіз де, Linux өзінің қосылуы барысында “/etc/rc. d” файлында орналасқан сценарий реттерін іске асырады. Бұл сценарийлер операциялық жүйенің негізг конфигурацияларын баптайды және де әртүрлі қызметтерді іске қосады. Сондықтан осы скриптерді түсіну және оларға өзгеріс енгізу жүйенің қалыпты жұмысы үшін өте маңызды.

Сценарий тілдері жаттауға және меңгеруге жеңіл болып келеді. Бұл тілде қиын операторлар мен құрылымдардың саны көп емес. Бұл тіл командалық жолда енгізілетін командаларға өте ұқсас болып келеді. Қысқа скрипттер кері өңдеуді қажет етпейді, ал үлкен скрипттерді қайта өңдеу көп уақыт алмайды.

Shell келесі мақсаттарды шешу үшін таптырмайтын құрал болып табылады:

  1. Терминалдағы интерактивті жұмыс:
  • Компиляцияны орындау, тапсырманы make арқылы іске қосу;
  • Текстік файлдарды салыстыру;
  • Мәліметтердің жылдам ad-hoc анализі;
  • Бір жолдық жаппай әрекеттер (көптеген файлдардың атын мерзімі бойынша өзгерту)
  • Жүйеде болып жатқан іс-әрекеттердің диагностикасы (семафорлар, логтар, дискрипторлар, дисктегі бос орын және т. б. )
  1. Скрипттеу:
  • Орналастыру скрипттері;
  • Интерактивті shell функцияларын өзгерту;
  • Бір жолдық жаппай файлдарды қайта кодтау скриптері;
  • Makefile-дар

Shell жалғыз және негізгі командалық тіл болып табылмайды (бірақ, ол POSIX шеңберінде стандартталған) . Мысалы, cshell, kshell және bashell сияқты тілдер де дүние жүзі бойынша кең түрде қолданылады. Сонымен қатар, кез келген қолданушы өзінің командалық тілін ойлап таба алады. Және де бір операциялық жүйе ішінде бірнеше командалық тілмен жұмыс істей алады.

Осы курстық жұмыстың негізгі мақсаты - shell-скрипттердің қазіргі жүйелер үшін маңыздылығын анықтау және осы shell-скрипттерді тәжірбие жүзінде жүйе ішіндегі пайдасын кішігірім бағдарлама жазу арқылы тексеру.

Осы жұмыс тақырыбы бойынша негізгі оқулықтарына келетін болсақ, онда көптеген кітаптар арасынан Мендел Купердің «Advanced Bash-Scripting Guide» және де «Bash Reference Manual» жұмыстарын атап кетуге болады. Біріншісі Андрей Кисилев аудармасында орысша кездессе де, екі кітапты қазақша басылымда табу мүмкін болып келмейді. «Bash Reference Manual» кітабында shell-скриптингтің барлық жақтары ауқымды қарастырылса да, Unix жүйелерімен таныс емес адамға бұл кітапты меңгеру қиынға соғуы мүмкін. Соған қарамастан кітапта негізгі shell-скриптердің айнымалылары, процестермен жұмыс және қабықшаның жұмыс ортасы туралы мәлімет өте жақсы қарастырылған. «Advanced Bash-Scripting Guide» кітабы орысша аудармада кездессе де, онда shell-скриптингтің барлық қыр-сырлары толықтай қамтылмаған. Бірақ кітап Unix жүйелерімен жаңа танысып жатқан адамдар үшін және shell-скрипттер туралы хабары аз адамдарға таптырмас оқу құралы болып табылады.

Біз өзіміздің курстық жұмысымызда теориялық және эмпирикалық зерттеу әдістерін пайдаландық. Теориялық зерттеу әдісін пайдалана отырып, біз желіде және кітаптардағы бар материалдарды жинастырып, оларды бір жүйеге келтірдік. Осының арқасында біз shell-скриптер туралы негізгі барлық мәліметті жинастырдық. Эмпирикалық зерттеу әдістерін пайдалана отырып, біз кітаптарда келтірілген кодтардың жұмысын бақыладық. Shell-скрипттерде пайдаланылған негізгі bash скрипттер тілін біз осыдан бұрын өткен әр түрлі бағдарламалау тілдерімен салыстырдық.

ТЕОРИЯЛЫҚ БӨЛІМ

  1. Shell процедуралары.

Қабықша өздігінен ешқандай қолданбалы тапсырмаларды орындамайды. Бірақ ол барлық қосымшалардың орындалуын қамтамасыз етеді: шақырылушы бағдарламаларды іздеп табу және олардың іске қосылуын мен енгізу-шығаруды ұйымдастыру сияқты операцияларды орындайды. Бұдан басқа, қабықша ортаның айнымалыларымен орындалатын жұмысқа жауап береді және түрлендірулер мен аргументтерді ауыстыруды жүзеге асырады. Қабықшаның қолданушы қолында өзін тиімді құрал ететін басты қасиеті - ол бағдарламалаудың қарапайым тілін қамтиды. Шартты операторлар, одан басқа меншіктеу мен цикл операторлар жұмысының жүзеге асырылуына толығымен қабықша жауап береді. Ол барлық утилиталар мен бағдарламаларды (операциялық жүйеде бар және жүйеге бөлек қондырылатын) оларға аргументтерді жіберуді және нәтижелерді басқа бағдарламаларға немесе қолданушыға жіберуді қамтамасыз ететін, өзі қолдайтын бағдарламалау тілінің негізгі операциялары ретінде қолданады. Нәтижесінде, өте күшті бағдарламалау тілі шығады.

Shell тілінің процедурасы - бұл командалық файл болып табылады. Командаларды жүзеге үшін, мәтіндік файлды орындалатын (chmod командасының көмегімен) етіп жасау қажет.

Жүзеге асыру келесі команданы командалық жолда жазу арқылы орындалады:

sh <>

Ерікті алгоритмдерді құрастыру үшін [ if then else ] және [ case] шарттарды тексеру операторлары қолданылады. Циклдердің жұмысын ұйымдастыру сәйкесінше for, while, until операторлары арқылы жүзеге асырылады.

  1. Командалар құрылымы.

Shell командалары әдетте келесі үлгіде беріледі:

< команда атауы > < кілттер > < аргумент(тер) >

Мысалы:

ls -ls /usr/bin

  • ls - орналасқан директорияның құрылымын мазмұнын көрсететін команда атауы;
  • -ls - кілттер ( “-” - кілт белгісі, l - ауқымды формат, s - блоктармен есептелген файл көлемі) .
  • /usr/bin - команда орындалатын директория атауы

Бұл команда экранға ауқымды форматтағы блоктармен есептелген /usr/bin директориясының мазмұнын шығарып береді.

Өкінішке орай, мұндай құрылым барлық командалар үшін орындалмайды. Барлық жағдай үшін кілт алдына “минус” қою қажетті емес, сонымен қатар кілттер әр жағдай үшін бір сөз болуы шарт емес. Аргументтерді сипаттаудың да өз ерекшеліктері бар. Қалыпты емес командалар қатарына келесі тізімдегі командаларды жатқызуға болады:

  • cc - C тілінің компиляторын шақыруға арналған команда;
  • find - файлдарды іздеуге арналған команда;
  • dd - байт бойынша бөлу арқылы көшіруге арналған команда;
  • tar - файлдарды сығуға арналған команда.

Әдетте, бірінші сөзді shell команда ретінде қарастырады. Сондықтан, командалық жолда енгізілген “cat cat” ішінен бірінші сөз shell-мен команда ретінде танылады.

  1. Командаларды топтау.

Командаларды топтау құралдары:

  • “ ; ” - командалардың ретті орындалуын қадағалайтын құрал;
  • “ & ” - алдыңғы команданың асинхронды орындалуын қадағалайтын құрал;
  • “ && ” - алдыңғы команданың өткен команданың қалыпты аяқталуы кезінде ғана орындалуы, әйтпесе команданы елемеу;
  • “ ” - алдыңғы команданың өткен команданың қалыпты емес аяқталуы кезінде ғана орындалуы, әйтпесе команданы елемеу;

Мысалы find командасының орындалуын қарастырайық. Ол фондық режимде түбірден бастап “ / ” және “ conf ” атты файлға дейін іздеуді орындап, содан соң қалыпты режимде “ pwd ” командасын орындайды. Экранда бұл бөлік мынандай күйде болады.

Кей кезде белгілі бір есептеулер саналуы үшін барлық фондық процесстер жабылуы қажет. Мұндай жағдайлар үшін арнайы “wait” командасын пайдалануға болады.

Сонымен қатар командаларды топтау үшін “ { } ” фигуралық жақшаларын және “ ( ) ” жай жақшаларын пайдалануға болады. Мысал үшін әртүрлі топтау әдістерін бір команда мысалында қарастырайық. Егер енгізілген команда:

“k1 && k2 ; k3”

Мұнда “k2” тек “k1”-дің қалыпты аяқталуынан кейін ғана орындалады.

“k1 && { k2 ; k3 }”

Мұнда екі команда (“k2” және “k3”) тек қана “k1”-дің қалыпты аяқталуында ғана орындалады.

“{k1 ; k2} &”

Мұнда фондық режимде рет-ретімен “k1” және “k2” командалары орындалады.

Bash скриптердің құрылымы. “touch” командасын қолдану арқылы бос файлды құрастырамыз. Файлдың бірінші жолында біз қандай қабықшаны қолданатынымызды көрсетіп өтуіміз керек. Бізді bash қабықшасы қызықтырады, сондықтан бірінші жолдың түрі осындай болуы керек:

Файлдың басқа жолдарында “ # ” символы түсініктемелер жазу үшін қолданылады, қабықша оларды өңдемейді. Алайда, бірінші жол - ерекше жағдай болып табылады, бұл жердегі торкөз символы, одан кейін орналасқан леп белгісі (бұл реттілікті шебанг деп атайды) және bash-қа көрсететін бағыт жүйеге сценарийдің арнайы bash үшін жазылғанын көрсетіп тұр. Қабықша командалары бір-бірінен жол ауыстыру арқылы оқшауланады, ал түсініктемелер торкөз символы көмегімен ерекшеленеді.

Командалық жолдағыдай, бұл жерде де командаларды үтірлі нүкте арқылы бір-бірінен ажырату арқылы жазуға болады. Алайда, командаларды әртүрлі жолдарға жазатын болсақ, файлды оқу жеңілге түседі. Бірақ, кез келген жағдайда қабықша оларды өңдеуге жібереді.

Сценарий файлына арналған рұқсаттарды орнату. Файлды myscript атауын беру арқылы сақтаймыз, осыдан әрекеттен соң bash-скриптті құрастыру жұмысымыз жартылай аяқталды десек те болады. Егер файлды орындалатын қылып жасамасақ, келесі қателікке тап боламыз:

https://habrastorage.org/getpro/habr/post_images/29f/743/3ec/29f7433ec002900e7518396a814fe351.png

Файлды орындалатын түрге өзгерту:

Файлды орындауға жіберу:

Қажетті баптауларды орындаған соң, барлығы ойдағыдай жұмыс жасауы тиіс:

https://habrastorage.org/getpro/habr/post_images/736/e67/1a5/736e671a5ff9a96e10bbb3c7e8ae537a.png

ТӘЖІРИБЕЛІК БӨЛІМ

2. 1. Тапсырманы анықтау.

Бұл курстық жұмыста shell тілінде бағдарлама құрастырылатын болады. Бағдарлама файл менеджері болып табылады. Файлдық менеджердің негізгі функциялары - файлдық жүйеде файлдар мен каталогтарды құру, жою, атауын өзгерту және іздеу. Интерфейс негізгі мәзір түрінде орындалған, оның ішінде сәйкес операцияларды орындауға арналған ішкі мәзір орналасқан. Бағдарлама пайдаланушыға сұратуларды ұйымдастыру кезінде түсіндірме жазулар мен мәтіндік түсіндірмелерін көрсетеді. Қолданушы сәйкес цифрларды енгізу арқылы мәзірдің тармақтарын таңдайды және бағдарлама сұралған ақпаратты (файлдар мен каталогтар атауы) енгізеді. Ақпаратты енгізу «Enter» пернесін басу арқылы тоқтатылады. Сұралған операцияны орындағаннан кейін менеджер негізгі мәзірді қайта көрсетеді.

  1. Тапсырманың алгоритмі.

Әзірленіп жатқан бағдарламаның алгоритмі басқаруды алғашында басты мәзірді шығаруға жауап беретін операторларға, содан соң цикл операторына ауыстыратын бастапқы блоктан басталады. Циклда селектрлік таңдау операторы жұмыс істейді. Селектор басқаруды жеке функцияларға бөлінген жеті блоктың біріне ауыстырады. Циклдан шығудың бірден-бір жолы - шығу үшін жауапты мәзір тармағында орналасқан селекторда таңдау жасау болып табылады.

Бағдарламаның жұмыс алгоритмінің блок-сызбасы 1-қосымшада көрсетілген.

Басты мәзірді шығару операторының орындалу процесі :

Жаңа файл құру мәзір операторының жұмыс процесі:

Жаңа файл атын енгізу:

2. 3. Алгоритмнің бағдарламалық іске асырлуы.

Қосымшаны қосу кезінде негізгі бағдарлама негізгі мәзірді шығарады. Бағдарламаның кез-келген тармағын таңдаған кезде басқару сәйкес функцияға беріледі. Функциялар сонымен қатар негізгі бағдарлама денесінде сипатталған. Функцияларға ешқандай аргументтер берілмейді. Бағдарламаны орындау барысында олар қолданушымен диалогты ұйымдастыру мен қажетті ақпаратты алу үшін өздерінің жергілікті айнымалыларын пайдаланады. Бағдарламаның барлық әрекеттеріне түсініктемелер жазылған. Функцияның жұмысы аяқталған соң басқарылу бас экранға мәзірді кері шығаратын бас бағдарламаға беріледі. Бағдарламаның мәзірі case операторы арқылы ұйымдастырылған. Қажетті тармақ сәйкес цифрды енгізу арқылы қолданушымен таңдалады. Бас бағдарлама case селекторы көмегімен қажетті тармақты таңдау кезінде басқаруды сәйкес функцияға береді. Шақырылған функция кезекті тармақты таңдауды ұсына отырып, өңделген команданы мәзір экранына шығарады. Содан соң белгіленген әрекетке жауапты операторлардың қызметі орындалады. Функция жұмысы аяқталған соң, басқарылу мәзірді кері шығарытын бас бағдарламаға беріледі. Бағдарламадан шығу «бағдарламадан шығу» тармағын таңдау арқылы жүзеге асады.

Case операторы арқылы мәзірді ұйымдастыру мысалы:

# функция : файл және каталогтардың атын ауыстыру #

func_rename()

{

while true

do

clear

printf " \n\t 1. Файлдың атын өзгерту "

printf " \n\t 2. Каталогтың атын өзгерту "

printf " \n\t 3. Бас мәзірге шығу "

printf "\n\t Қажетті тармақты таңдаңыз \n\t"

read ren

case $ren in

1) clear

echo "Файлдың атауын енгізіңіз"

read name1

echo "Файлға жаңа атау беріңіз"

read name2

mv $name1 $name2; ; #файл атын ауыстыру#

2) clear

echo "Каталог атын енгізіңіз"

read name3

echo "Каталогтың жаңа атын енгізіңіз "

read name 4

mv $name3 $name4; ; # Каталог атын ауыстыру#

3) break; ;

esac

done

}

Мысалды жүзеге асыру процесі:

Мысал орындау барысында біз теориялық бөлімде қарастырылған shell-скрипттерді жасау және орындау командаларын пайдаландық. Алғаш кодты жазып, файл қалыпты орындалу үшін файлға «+x» арқылы орындалуға рұқсат бердік.

Осы мысал нәтижесі төменгі кескінде көрсетілген:

ҚОРЫТЫНДЫ

Курстық жұмысты жазу процесінде shell тілінде файлдық менеджердің жұмысын атқаратын бағдарлама құрастырылды. Бағдарлама файлдар мен каталогтарды құрастыру, өшіру, атауын өзгерту және іздеу сияқты әрекеттерді орындайды.

Қорытындылай келе, бұл курстық жұмысты жазу кезінде shell-скрипттердің көптеген мүмкіндіктері және жақсы қырларымен таныстық:

  • Орта денгейлі қолданушыға меңгеруге өте жеңіл және синтаксистік тұрғыдан ешбір қиындықтар туғызбайды;
  • Shell-скрипттер қиын қосымшалардың бастапқы прототиптерін жасауға ыңғайлы құрал болып табылады;
  • Негізгі Unix жүйелерін басқару мақсаттарын өте жоғары денгейде орындап шығады;
  • Процестерді автоматтандыру саласында теңдесі жоқ деп сенімді түрде айтуға болады;
  • Курстық жұмысты жазу барысында жүйедегі жаппай өзгертулер мен операцияларды орындауда да өзін жақсы жағынан танытты.

Кейбір тапсырмалар үшін shell-скрипттер қолданымсыз болып келеді:

  • Ресурсты көп қажет етеін және орындалу жылдамдығы маңызды тапсырмалар үшін;
  • Кросс-платформалық бағдарламалау үшін;
  • Жүйенің қауіпсіздігімен байланысты тапсырмалар үшін;
  • Көп қырлы массивтермен жұмыс істейтін тапсырмалар үшін;
  • Компьютер аппаратурасына тікелей қатынаумен байланысты тапсырмалар үшін;
  • Кіру-шығу порттары және сокеттары арқылы алмасуға арналған тапсырмалар үшін.

ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ

... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Оқыту орталықтарының автоматтандырылған жүйесін құруға қолданылатын ақпараттық программалық жабдықтар
PHP тілі
PHP- мен бірге жұмыс істейтін сервердің классикалық құралы- APACHE +PHP+MySQL
PHP тілі. PHP-мен бірге жұмыс істейтін құралдар
Автоматттандырылған жүйенің программалық өнімдері
Action Script бағдарламалау тілінің теориялық негіздері
АЖ таңдау бойынша сұрыптау
Ядро және процестер
Виртуалды машинада Linux операциялық жүйесін орнату
Программалауда массивтерді сұрыптау
Пәндер



Реферат Курстық жұмыс Диплом Материал Диссертация Практика Презентация Сабақ жоспары Мақал-мәтелдер 1‑10 бет 11‑20 бет 21‑30 бет 31‑60 бет 61+ бет Негізгі Бет саны Қосымша Іздеу Ештеңе табылмады :( Соңғы қаралған жұмыстар Қаралған жұмыстар табылмады Тапсырыс Антиплагиат Қаралған жұмыстар kz