5 Shell-komentosarjaa Linux-aloittelijoille Shell-ohjelmoinnin oppimiseen - Osa II
Jos haluat oppia jotain, sinun on tehtävä se ilman pelkoa epäonnistumisesta. Uskon käytännöllisyyteen ja näin ollen seuraan sinua skriptikielen käytännön maailmaan.
Tämä artikkeli on jatkoa ensimmäiselle artikkelillemme Ymmärrä Linux Shell ja Basic Shell Scripting – osa I, jossa annoimme sinulle esimakua komentosarjasta ja jatkamme siitä, että emme petä sinua tässä artikkelissa.
Käsikirjoitus 1: Erikoiskuvion 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"
Useimmat yllä mainituista "avainsanoista" ovat sinulle tuttuja, ja useimmat niistä ovat itsestään selviä. esim. MAX asettaa muuttujan maksimiarvon, sillä se on silmukka ja mitä tahansa silmukan sisällä suoritetaan uudelleen ja uudelleen, kunnes silmukka on kelvollinen tietylle syötteen arvolle.
Näytelähtö
[root@tecmint ~]# chmod 755 Special_Pattern.sh
[root@tecmint ~]# ./Special_Pattern.sh
Enter Number between (5 to 9) : 6
.
. .
. . .
. . . .
. . . . .
. . . . . .
. . . . . .
. . . . .
. . . .
. . .
. .
.
Whenever you need help, linux-console.net is always there
Jos olet hieman tietoinen mistä tahansa ohjelmointikielestä, yllä olevan skriptin oppiminen ei ole vaikeaa, vaikka olet uusi laskennassa, ohjelmoinnissa ja Linuxissa, se ei tule olemaan paljon vaikeaa.
Lataa Special_Pattern.sh
Käsikirjoitus 2: Värikkään käsikirjoituksen luominen
Kuka sanoo: Linux on väritön ja tylsä, tallenna alla olevat koodit mihin tahansa [pisteeseen] sh, tee siitä suoritettava ja suorita se, älä Älä unohda kertoa minulle, kuinka 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ä nyt värikoodista, sillä sinulle tärkeät ovat kielelläsi, vähitellen.
Varoitus: Päätteessäsi ei ehkä ole mahdollisuutta vilkkua.
Näytelähtö
[root@tecmint ~]# chmod 755 Colorfull.sh
[root@tecmint ~]# ./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
Lataa Colorfull.sh
Komentosarja 3: Salaa tiedosto/hakemisto
Tämä komentosarja salaa tiedoston (muistatko? hakemisto/ohjain/…. Linuxissa kaikkea käsitellään tiedostona >). Yllä olevan skriptin nykyinen rajoitus on, että se ei tue nimen automaattista täydentämistä TAB-komennolla. Lisäksi sinun on asetettava komentosarja ja salattava tiedosto samaan kansioon. Saatat joutua asentamaan "pinentry-gui" käyttämällä pakettia yum tai apt tarvittaessa.
[root@midstage ~]# yum install pinentry-gui
[root@midstage ~]# apt-get install pinentry-gui
Kreeta tiedosto nimeltä Encrypt.sh ja aseta seuraava komentosarja, tee siitä suoritettava 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äytelähtö
[root@tecmint ~]# chmod 755 Encrypt.sh
[root@tecmint ~]# ./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 käyttämällä salasanaa eli salasanaa. Tässä oppimisprosessissa et olisi koskaan uskonut, että varsinainen oppimisprosessi voi olla niin helppoa. Mitä tarvitset tiedoston salaamisen jälkeen? Ilmeisesti! tiedoston salauksen purku. Ja haluan sinun – oppijan, lukijan kirjoittavan salauksenpurkukäsikirjoituksen itse, älä huoli, en jätä sinua keskelle, haluan vain sinun saavan jotain irti tästä artikkelista.
Huomaa: gpg -d tiedostonimi.gpg > tiedostonimi on se, mitä sinun on otettava käyttöön salauksenpurkuohjelmassasi. Voit lähettää käsikirjoituksesi kommentissa, jos onnistut, voit pyytää minua kirjoittamaan sen puolestasi.
Lataa Encrypt.sh
Komentosarja 4: Tarkistetaan palvelimen käyttöä
Palvelimen käytön tarkistaminen on yksi järjestelmänvalvojan tärkeistä tehtävistä, ja hyvä ylläpitäjä on sellainen, joka osaa automatisoida päivittäisen tehtävänsä. Alla on skripti, 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
Näytelähtö
[root@tecmint ~]# chmod 755 Server-Health.sh
[root@tecmint ~]# ./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 LOGIN@ 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 tulosteen itse päätteessä. Mitä jos haluat saada tulosteen tiedostoon myöhempää käyttöä varten. Ota se käyttöön uudelleenohjausoperaattorilla.
- ‘>’ : uudelleenohjausoperaattori luo tiedoston, ja jos sellainen on olemassa, sisältö korvataan.
- '>>' : kun käytät >> -toimintoa, lisäät tietoja sen sijaan, että korvaat niitä.
- ">>" on turvallinen verrattuna ">"
Lataa Server-Health.sh
Komentosarja 5: Tarkista levytila ja lähettää sähköpostihälytyksen
Entä sähköpostin saaminen, kun levyn käyttö osiossa PART on sallittua enimmäismäärää suurempi. Se on elämänpelastusskripti web-järjestelmänvalvojille vähällä muokkauksella.
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 sähköpostit käyttämällä mail-komentoa.
Lataa Check-Disk-Space.sh
Käsikirjoitus ja ohjelmointi on yli rajojen, mitä tahansa ja kaikkea voidaan toteuttaa tarpeen mukaan. Siinä kaikki toistaiseksi. Seuraavassa artikkelissani annan sinulle erilaisia käsikirjoituksen makuja. Siihen asti pysy viileänä ja kuulolla, nauti.