5 Shell forskriftir fyrir Linux nýliða til að læra Shell forritun - Part II
Til að læra eitthvað þarftu að gera það, án þess að óttast að vera árangurslaus. Ég trúi á hagkvæmni og mun þess vegna fylgja þér í hagnýtan heim skriftarmálsins.
Þessi grein er framlenging á fyrstu grein okkar Skildu Linux Shell og Basic Shell Scripting - Part I, þar sem við gáfum þér smakk af Scripting, áfram að við munum ekki valda þér vonbrigðum í þessari grein.
Handrit 1: Að teikna sérstakt mynstur
#!/bin/bash MAX_NO=0 echo -n "Enter Number between (5 to 9) : " read MAX_NO if ! [ $MAX_NO -ge 5 -a $MAX_NO -le 9 ] ; then echo "WTF... I ask to enter number between 5 and 9, Try Again" exit 1 fi clear for (( i=1; i<=MAX_NO; i++ )) do for (( s=MAX_NO; s>=i; s-- )) do echo -n " " done for (( j=1; j<=i; j++ )) do echo -n " ." done echo "" done ###### Second stage ###################### for (( i=MAX_NO; i>=1; i-- )) do for (( s=i; s<=MAX_NO; s++ )) do echo -n " " done for (( j=1; j<=i; j++ )) do echo -n " ." done echo "" done echo -e "\n\n\t\t\t Whenever you need help, linux-console.net is always there"
Flest ofangreindra „lykilorða“ væru þekkt fyrir þig og flest þeirra skýra sig sjálf. td, MAX setur hámarksgildi breytunnar, því er lykkja og allt innan lykkjunnar heldur áfram að keyra aftur og aftur þar til lykkjan er gild fyrir gefið gildi inntaks.
chmod 755 Special_Pattern.sh ./Special_Pattern.sh Enter Number between (5 to 9) : 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Whenever you need help, linux-console.net is always there
Ef þú ert svolítið meðvitaður um hvaða forritunarmál sem er, þá er ekki erfitt að læra ofangreind handrit, jafnvel þó þú sért nýr í útreikningum, forritun og Linux þá verður það ekki mikið erfitt.
Handrit 2: Að búa til litríkt handrit
Hver segir, Linux er litlaus og leiðinlegt, vistaðu kóðana hér að neðan í hvað sem er [punktur] sh, gerðu það keyranlegt og keyrðu það, ekki gleyma að segja mér hvernig það var, hugsaðu hvað þú getur náð, útfærðu það einhvers staðar.
#!/bin/bash clear echo -e "33[1m Hello World" # bold effect echo -e "33[5m Blink" # blink effect echo -e "33[0m Hello World" # back to normal echo -e "33[31m Hello World" # Red color echo -e "33[32m Hello World" # Green color echo -e "33[33m Hello World" # See remaining on screen echo -e "33[34m Hello World" echo -e "33[35m Hello World" echo -e "33[36m Hello World" echo -e -n "33[0m" # back to normal echo -e "33[41m Hello World" echo -e "33[42m Hello World" echo -e "33[43m Hello World" echo -e "33[44m Hello World" echo -e "33[45m Hello World" echo -e "33[46m Hello World" echo -e "33[0m Hello World"
Athugið: Ekki nenna litakóðanum núna, þeir sem eru mikilvægir fyrir þig verða smám saman við tunguna þína.
Viðvörun: Mögulegt er að flugstöðin þín hafi ekki möguleika á að blikka.
chmod 755 Colorfull.sh ./Colorfull.sh Hello World Blink Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World
Forskrift 3: Dulkóða skrá/skrá
Þetta handrit mun dulkóða skrá (munið þið eftir? möppu/bílstjóri/... allt er meðhöndlað sem skrá, í Linux). Núverandi takmörkun á ofangreindu handriti er að það styður ekki sjálfvirka útfyllingu nafns með TAB. Þar að auki þarftu að setja handritið og skrána sem á að dulkóða í sömu möppu. Þú gætir þurft að setja upp \pinentry-gui, með því að nota yum eða apt pakkann, ef þess er krafist.
yum install pinentry-gui apt-get install pinentry-gui
Búðu til skrá sem heitir Encrypt.sh og settu eftirfarandi skriftu, gerðu það keyranlegt og keyrðu það eins og sýnt er.
#!/bin/bash echo "Welcome, I am ready to encrypt a file/folder for you" echo "currently I have a limitation, Place me to thh same folder, where a file to be encrypted is present" echo "Enter the Exact File Name with extension" read file; gpg -c $file echo "I have encrypted the file successfully..." echo "Now I will be removing the original file" rm -rf $file
Sýnishorn úttak
chmod 755 Encrypt.sh ./Encrypt.sh Welcome, I am ready to encrypt a file/folder for you currently I have a limitation, Place me to the same folder, where a file to be encrypted is present Enter the Exact File Name with extension package.xml ┌─────────────────────────────────────────────────────┐ │ Enter passphrase │ │ │ │ │ │ Passphrase *******_________________________________ │ │ │ │ <OK> <Cancel> │ └─────────────────────────────────────────────────────┘ Please re-enter this passphrase ┌─────────────────────────────────────────────────────┐ │ Please re-enter this passphrase │ │ │ │ Passphrase ********________________________________ │ │ │ │ <OK> <Cancel> │ └─────────────────────────────────────────────────────┘ I have encrypted the file successfully... Now I will be removing the original file </pre>
gpg -c : Þetta mun dulkóða skrána þína með því að nota aðgangslykil aka lykilorð. Í þessu námsferli hefði þér aldrei dottið í hug að raunverulegt nám gæti verið svona auðvelt. Svo eftir að hafa dulkóðað skrá hvað þarftu? Augljóslega! afkóða skrána. Og ég vil að þú - nemandinn, lesandinn skrifi afkóðunarforritið sjálfur, ekki hafa áhyggjur, ég skil þig ekki eftir í miðjunni, ég vil bara að þú fáir eitthvað út úr þessari grein.
Athugið: gpg -d filename.gpg > skráarnafn er það sem þú þarft að útfæra í afkóðun skriftu. Þú mátt setja handritið þitt í athugasemd ef það tekst, ef ekki geturðu beðið mig um að skrifa það fyrir þig.
Forskrift 4: Athugaðu netþjónanotkun
Að athuga nýtingu netþjónsins er eitt mikilvægasta verkefni stjórnanda og góður stjórnandi er sá sem veit hvernig á að gera daglegt verkefni sitt sjálfvirkt. Hér að neðan er handritið sem mun gefa margar slíkar upplýsingar um netþjóninn þinn. Athugaðu það sjálfur.
#!/bin/bash date; echo "uptime:" uptime echo "Currently connected:" w echo "--------------------" echo "Last logins:" last -a |head -3 echo "--------------------" echo "Disk and memory usage:" df -h | xargs | awk '{print "Free/total disk: " $11 " / " $9}' free -m | xargs | awk '{print "Free/total memory: " $17 " / " $8 " MB"}' echo "--------------------" start_log=`head -1 /var/log/messages |cut -c 1-12` oom=`grep -ci kill /var/log/messages` echo -n "OOM errors since $start_log :" $oom echo "" echo "--------------------" echo "Utilization and most expensive processes:" top -b |head -3 echo top -b |head -10 |tail -4 echo "--------------------" echo "Open TCP ports:" nmap -p- -T4 127.0.0.1 echo "--------------------" echo "Current connections:" ss -s echo "--------------------" echo "processes:" ps auxf --width=200 echo "--------------------" echo "vmstat:" vmstat 1 5
chmod 755 Server-Health.sh ./Server-Health.sh Tue Jul 16 22:01:06 IST 2013 uptime: 22:01:06 up 174 days, 4:42, 1 user, load average: 0.36, 0.25, 0.18 Currently connected: 22:01:06 up 174 days, 4:42, 1 user, load average: 0.36, 0.25, 0.18 USER TTY FROM [email IDLE JCPU PCPU WHAT tecmint pts/0 116.72.134.162 21:48 0.00s 0.03s 0.03s sshd: tecmint [priv] -------------------- Last logins: tecmint pts/0 Tue Jul 16 21:48 still logged in 116.72.134.162 tecmint pts/0 Tue Jul 16 21:24 - 21:43 (00:19) 116.72.134.162 -------------------- Disk and memory usage: Free/total disk: 292G / 457G Free/total memory: 3510 / 3838 MB -------------------- OOM errors since Jul 14 03:37 : 0 -------------------- Utilization and most expensive processes: top - 22:01:07 up 174 days, 4:42, 1 user, load average: 0.36, 0.25, 0.18 Tasks: 149 total, 1 running, 148 sleeping, 0 stopped, 0 zombie Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.3%id, 0.6%wa, 0.0%hi, 0.0%si, 0.0%st PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 3788 1128 932 S 0.0 0.0 0:32.94 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root RT 0 0 0 0 S 0.0 0.0 0:14.07 migration/0
Athugið: Ég hef gefið þér handritið sem gefur úttakið í flugstöðinni sjálfu, hvernig væri að fá úttakið í skrá til framtíðarviðmiðunar. Innleiða það með því að nota tilvísunaraðila.
- ‘>‘ : Tilvísunarstjórnandinn veldur skráargerð og ef hún er til er innihaldinu skrifað yfir.
- ‘>>‘ : þegar þú notar >> ertu að bæta við upplýsingum í stað þess að skipta þeim út.
- ‘>>‘ er öruggt samanborið við ‘>‘
Forskrift 5: Athugaðu diskpláss og sendir tölvupóstviðvörun
Hvernig væri að fá tölvupóst þegar diskanotkun í skiptingunni PART er stærri en hámarks leyfilegt, það er björgunarforskrift fyrir vefstjórnendur með litlum breytingum.
MAX=95 [email PART=sda1 USE=`df -h |grep $PART | awk '{ print $5 }' | cut -d'%' -f1` if [ $USE -gt $MAX ]; then echo "Percent used: $USE" | mail -s "Running out of disk space" $EMAIL fi
Athugið: Fjarlægðu „USER“ með notendanafninu þínu. Þú getur athugað póst með því að nota „mail“ skipunina.
Handritaskrif og forritun er út fyrir landamæri, allt og allt var hægt að útfæra eftir þörfum. Það er allt í bili, í næstu grein minni mun ég gefa þér mismunandi bragðtegundir af handriti. Þangað til vertu kaldur og stilltur, njóttu.