5 Shell-skript for Linux-nybegynnere for å lære Shell-programmering - Del II
For å lære noe må du gjøre det, uten frykt for å mislykkes. Jeg tror på praktisk og vil følge deg til den praktiske verden av skriptspråk.
Denne artikkelen er en utvidelse av vår første artikkel Forstå Linux Shell og Basic Shell Scripting – Del I, hvor vi ga deg en smakebit på skripting, og fortsetter at vi ikke vil skuffe deg i denne artikkelen.
Skript 1: Tegn et spesielt mønster
#!/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"
De fleste av de ovennevnte «nøkkelordene» vil være kjent for deg, og de fleste av dem er selvforklarende. for eksempel, MAX setter den maksimale verdien av variabelen, for er en løkke og alt i løkken fortsetter å utføres igjen og igjen til løkken er gyldig for gitt verdi av input.
Eksempelutgang
[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
Hvis du er litt klar over et hvilket som helst programmeringsspråk, er det ikke vanskelig å lære skriptet ovenfor, selv om du er ny på databehandling, programmering og Linux, kommer det ikke til å være mye vanskelig.
Last ned Special_Pattern.sh
Skript 2: Lag fargerikt manus
Hvem sier, Linux er fargeløst og kjedelig, lagre kodene nedenfor til hva som helst [dot] sh, gjør det kjørbart og kjør det, ikke Ikke glem å fortelle meg hvordan det var, Tenk hva du kan oppnå, implementer det et sted.
#!/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"
Merk: Ikke bry deg om fargekoden nå, de som er viktige for deg vil være ved tungen din, gradvis.
Advarsel: Terminalen din har kanskje ikke muligheten til å blinke.
Eksempelutgang
[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
Last ned Colorfull.sh
Skript 3: Krypter en fil/katalog
Dette skriptet vil kryptere en fil (husker du? katalog/driver/... alt behandles som en fil i Linux >). Den nåværende begrensningen for skriptet ovenfor er at det ikke støtter automatisk fullføring av navn ved å bruke TAB. Dessuten må du plassere skriptet og filen som skal krypteres i samme mappe. Du må kanskje installere "pinentry-gui ", ved å bruke yum eller apt pakken, hvis nødvendig.
[root@midstage ~]# yum install pinentry-gui
[root@midstage ~]# apt-get install pinentry-gui
Lag en fil kalt «Encrypt.sh» og plasser følgende skript, gjør det kjørbart og kjør det som vist.
#!/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
Eksempelutgang
[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 : Dette vil kryptere filen din ved å bruke en passordnøkkel aka passord. I denne læringsprosessen ville du aldri trodd at selve læringsprosessen kunne være så lett. Så etter å ha kryptert en fil, hva trenger du? Åpenbart! dekryptere filen. Og jeg vil at du – eleven, leseren skal skrive dekrypteringsskriptet selv, ikke bekymre deg, jeg forlater deg ikke i midten, jeg vil bare at du skal få noe ut av denne artikkelen.
Merk: gpg -d filnavn.gpg > filnavn er det du trenger for å implementere i dekrypteringsskriptet ditt. Du kan legge inn manuset ditt i kommentarfeltet hvis det lykkes, hvis ikke kan du be meg om å skrive det for deg.
Last ned Encrypt.sh
Skript 4: Sjekker serverutnyttelse
Å sjekke serverbruken er en av de viktige oppgavene til en administrator, og en god administrator er en som vet hvordan han skal automatisere den daglige oppgaven. Nedenfor er skriptet som vil gi mye slik informasjon om serveren din. Sjekk det selv.
#!/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
Eksempelutgang
[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
Merk: Jeg har gitt deg skriptet som gir utdata i selve terminalen, hva med å få utdata i en fil for fremtidig referanse. Implementer det ved å bruke omdirigeringsoperatør.
- '>' : omdirigeringsoperatøren forårsaker en filoppretting, og hvis den eksisterer, blir innholdet overskrevet.
- '>>': når du bruker >>, legger du til informasjon i stedet for å erstatte den.
- «>>» er trygt sammenlignet med «>»
Last ned Server-Health.sh
Skript 5: Sjekk diskplass og sender et e-postvarsel
Hva med å få en e-post når diskbruk i partisjonen DEL er større enn maksimalt tillatt, det er et livredderskript for nettadministratorer med liten modifikasjon.
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
Merk: Fjern «BRUKER» med brukernavnet ditt. Du kan sjekke e-post ved å bruke «mail»-kommandoen.
Last ned Check-Disk-Space.sh
Skriptskriving og programmering er utenfor grenser, alt og alt kan implementeres etter behov. Det var alt for nå, i min neste artikkel vil jeg gi deg noen forskjellige varianter av skripting. Inntil da hold deg kjølig og innstilt, nyt.