5 Shell-komentosarjaa Linux-aloittelijoille oppia Shell-ohjelmointi - osa II
Jos haluat oppia jotain, sinun on tehtävä se pelkäämättä epäonnistumista. Uskon käytännöllisyyteen ja tulemme siten seuraamaan teitä komentosarjakielen käytännön maailmaan.
Tämä artikkeli on jatkoa ensimmäiselle artikkelillemme Understand Linux Shell and Basic Shell Scripting - Part I, jossa annoimme sinulle makua komentosarjoista, jatkaen, ettemme petä sinua tässä artikkelissa.
Skripti 1: Erityiskuvion piirtäminen
#!/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"
Suurin osa yllä olevista avainsanoista olisi sinulle tiedossa, ja useimmat niistä ovat itsestään selviä. esim. MAX asettaa muuttujan maksimiarvon, sillä on silmukka ja kaikki silmukan sisällä oleva suoritetaan uudestaan ja uudestaan, kunnes silmukka on kelvollinen syötetylle arvolle.
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
Jos olet vähän tietoinen mistään ohjelmointikielestä, yllä olevan komentosarjan oppiminen ei ole vaikeaa, vaikka oletkin uusi laskennassa, ohjelmoinnissa ja Linuxissa, se ei tule olemaan kovin vaikeaa.
Skripti 2: Värikkään skriptin luominen
Kuka sanoo, Linux on väritön ja tylsä, tallenna alla olevat koodit mihin tahansa pisteeseen, tee se suoritettavaksi ja suorita se, älä unohda kertoa minulle, miten se oli, Ajattele mitä voit saavuttaa, toteuttamalla sen jossain.
#!/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"
Huomaa: Älä välitä värikoodista nyt. Ne, jotka sinulle ovat tärkeitä, ovat kielelläsi vähitellen.
Varoitus: Päätelaitteessasi ei ehkä ole mahdollisuutta vilkkua.
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
Skripti 3: Salaa tiedosto/hakemisto
Tämä komentosarja salaa tiedoston (muista? Hakemisto/ohjain /…. Kaikkea käsitellään tiedostona Linuxissa). Yllä olevan komentosarjan nykyinen rajoitus on, että se ei tue nimen automaattista täydentämistä TAB: lla. Lisäksi sinun on sijoitettava salattava komentosarja ja tiedosto samaan kansioon. Saatat joutua asentamaan "pinentry-gui" tarvittaessa käyttämällä pakettia yum tai apt.
yum install pinentry-gui apt-get install pinentry-gui
Kreeta tiedosto nimeltä Encrypt.sh ja aseta seuraava komentosarja, tee se suoritettavaksi ja suorita se kuvan mukaisesti.
#!/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
Näyte tuotos
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: Tämä salaa tiedostosi salasanalla. Tässä oppimisprosessissa et olisi koskaan ajatellut, että varsinainen oppimisprosessi voisi olla niin paljon helppoa. Joten kun olet salannut tiedoston, mitä tarvitset? Ilmeisesti! purkaa tiedosto. Ja haluan sinun - oppija, lukija kirjoittavan salauksen itse, älä huoli, en jätä sinua keskelle, haluan vain sinun saavan jotain tästä artikkelista.
Huomaa: gpg -d-tiedostonimi.gpg> tiedostonimi on se, mitä sinun on käytettävä salauksenpurkuohjelmaan. Voit lähettää komentosarjan onnistuneesti kommenttiin, jos ei, voit pyytää minua kirjoittamaan sen sinulle.
Skripti 4: Palvelimen käytön tarkistus
Palvelimen käytön tarkistus on yksi järjestelmänvalvojan tärkeistä tehtävistä, ja hyvä järjestelmänvalvoja on se, joka osaa automatisoida päivittäisen tehtävänsä. Alla on komentosarja, joka antaa monia tällaisia tietoja palvelimestasi. Tarkista se itse.
#!/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
Huomaa: Olen antanut sinulle komentosarjan, joka antaa lähdön itse päätelaitteelle, entä miten tulostaa tiedosto tiedostoon myöhempää tarvetta varten. Toteuta se uudelleenohjausoperaattorin avulla.
- ‘>’: uudelleenohjausoperaattori aiheuttaa tiedoston luomisen, ja jos sellaista on, sisältö korvataan.
- ‘>>’: kun käytät >>, lisäät tietoja sen sijaan, että korvaaisit ne.
- ‘>>’ on turvallinen verrattuna kohtaan>>
Skripti 5: Tarkista levytila ja lähettää sähköpostihälytyksen
Entä sähköpostin saaminen, kun levyn käyttö osiossa PART on suurempi kuin suurin sallittu, se on web-järjestelmänvalvojille elämänsäästäjäkomentosarja, jossa on vähän muutoksia.
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
Huomaa: Poista "USER" käyttäjänimelläsi. Voit tarkistaa postin käyttämällä postia -komentoa.
Komentosarjojen kirjoittaminen ja ohjelmointi on rajojen ulkopuolella, kaikki ja kaikki voidaan toteuttaa tarpeen mukaan. Siinä kaikki nyt. Seuraavassa artikkelissani annan sinulle erilaisia makuja skripteistä. Siihen asti pysy viileänä ja viritettynä, nauti.