5 Shelli skripti Linuxi algajatele, kes õpivad Shelli programmeerimist - II osa
Et midagi õppida, peate seda tegema, kartmata ebaõnnestumist. Usun praktilisusse ja seepärast saadan teid skriptikeele praktilisse maailma.
See artikkel on laiendus meie esimesele artiklile Linuxi kesta ja põhikujude skriptimise mõistmine - I osa, kus pakkusime teile skriptide maitset, jätkates, et me ei peta teid selles artiklis.
1. skript: erilise mustri joonistamine
#!/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"
Enamik ülaltoodud märksõnadest oleks teile teada ja enamik neist on iseenesestmõistetavad. nt MAX määrab muutuja maksimaalse väärtuse, kuna on silmus ja kõik tsükli sees olevad asjad käivitatakse uuesti ja uuesti, kuni tsükkel kehtib sisendi antud väärtuse jaoks.
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
Kui olete programmeerimiskeelest väheke teadlik, ei ole ülaltoodud skripti õppimine keeruline, isegi kui olete arvutamise, programmeerimise ja Linuxi jaoks uus, pole see eriti keeruline.
2. skript: värvilise skripti loomine
Kes ütleb, et Linux on värvitu ja igav, salvestage allolevad koodid ükskõik millisesse punkti, tehke see käivitatavaks ja käivitage, ärge unustage mulle öelda, kuidas see oli, mõelge, mida saate saavutada, rakendades seda kuskil.
#!/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"
Märkus. Ärge muretsege värvikoodi pärast. Need, kes teile olulised, on järk-järgult teie keele juures.
Hoiatus: Teie terminalil ei pruugi vilkuda.
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
3. skript: faili/kataloogi krüptimine
See skript krüpteerib faili (pea meeles? Kataloogi/draiverit/.... Kõike käsitletakse failina Linuxis). Ülaltoodud skripti praegune piirang on see, et see ei toeta nime automaatset täitmist TAB-i abil. Pealegi peate krüptitava skripti ja faili paigutama samasse kausta. Vajadusel peate võib-olla installima "pinentry-gui", kasutades paketti yum või apt.
yum install pinentry-gui apt-get install pinentry-gui
Kreeta fail nimega “Encrypt.sh” ja asetage järgmine skript, muutke see käivitatavaks ja käivitage see nagu näidatud.
#!/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
Proovi väljund
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: see krüpteerib teie faili, kasutades parooli ehk parooli. Selles õppeprotsessis poleks te kunagi arvanud, et tegelik õppeprotsess võib olla nii palju lihtne. Nii et mida vajate pärast faili krüptimist? Ilmselgelt! faili dekrüpteerimine. Ja ma tahan, et te - õppija, lugeja, kirjutaks ise dekrüpteerimisskripti, ärge muretsege, et ma ei jäta teid keskele, vaid tahan, et saaksite sellest artiklist midagi.
Märkus. Gpg -d failinimi.gpg> failinimi on see, mida peate oma dekrüpteerimisskripti juurutama. Edu korral võite oma skripti kommentaari postitada, kui ei, siis võite paluda mul selle teile kirjutada.
Skript 4: Serveri kasutamise kontrollimine
Serveri kasutamise kontrollimine on üks administraatori olulisi ülesandeid ja hea administraator on see, kes teab, kuidas oma igapäevast ülesannet automatiseerida. Allpool on skript, mis annab palju sellist teavet teie serveri kohta. Kontrollige seda ise.
#!/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
Märkus. Olen andnud teile skripti, mis annab väljundi terminalis, kuidas oleks väljund faili saada tulevaseks kasutamiseks. Rakendage see ümbersuunamisoperaatori abil.
- ‘>’: ümbersuunamisoperaator põhjustab faili loomise ja kui see on olemas, kirjutatakse sisu üle.
- ‘>>’: kui kasutate >>, siis lisate teavet, mitte ei asenda seda.
- ‘>>’ on ohutu, võrreldes ‘>’
5. skript: kontrollige kettaruumi ja saadate e-posti märguande
Kuidas oleks saada e-kirja, kui partitsioonis PART kettakasutus on suurem kui lubatud maksimaalne, see on vähese muudatusega veebiadministraatorite päästmisskript.
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
Märkus. Eemaldage „USER“ oma kasutajanimega. E-posti saate kontrollida käsuga ‘mail’.
Skriptide kirjutamine ja programmeerimine ületab piire, kõike ja kõike saaks rakendada vastavalt vajadusele. See on praegu kõik. Oma järgmises artiklis annan teile mõned erinevad skriptide maitsed. Kuni selle ajani püsige jahedas ja häälestatud, nautige.