5 skriptov lupine za začetnike Linuxa, ki se učijo programiranja lupine - II. Del
Če se želite nekaj naučiti, morate to storiti, brez strahu pred neuspehom. Verjamem v praktičnost in vas bo zato spremljal v praktični svet skriptnega jezika.
Ta članek je podaljšek našega prvega članka Razumevanje skriptov Linux Shell in Basic Shell - I. del, kjer smo vam okušali skriptiranje in nadaljevali, da vas v tem članku ne bomo razočarali.
Skripta 1: Risanje posebnega vzorca
#!/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"
Večina zgornjih "ključnih besed" bi vam bila znana in večina jih je samoumevnih. npr. MAX nastavi največjo vrednost spremenljivke, saj je zanka in vse v zanki se vedno znova izvaja, dokler zanka ne velja za dano vrednost vnosa.
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
Če se malo zavedate katerega koli programskega jezika, učenje zgornjega skripta ni težko, četudi ste novi v računalništvu, programiranju in Linuxu, ne bo veliko težko.
Skripta 2: Ustvarjanje pisanega scenarija
Kdo pravi, da je Linux brezbarven in dolgočasen, shranite spodnje kode na kar koli [dot] sh, naredite ga izvedljiv in ga zaženite, ne pozabite mi povedati, kako je bilo, pomislite, kaj lahko dosežete, in to nekje implementirajte.
#!/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"
Opomba: Ne obremenjujte se z barvno kodo zdaj, tisti, ki so vam pomembni, vam bodo postopoma na jeziku.
Opozorilo: Vaš terminal morda ne bo utripal.
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
Skripta 3: Šifriranje datoteke/imenika
Ta skript bo šifriral datoteko (ne pozabite? Direktorij/gonilnik /…. V Linuxu se vse obravnava kot datoteka). Trenutna omejitev zgornjega skripta je, da ne podpira samodejnega dokončanja imena s pomočjo TAB. Poleg tega morate skript in datoteko za šifriranje postaviti v isto mapo. Morda boste morali namestiti\"pinentry-gui" z uporabo yuma ali po potrebi namestiti paket.
yum install pinentry-gui apt-get install pinentry-gui
Ustvarite datoteko z imenom "Encrypt.sh" in postavite naslednji skript, naredite ga izvedljiv in zaženite, kot je prikazano.
#!/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
Vzorec izhoda
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: To bo šifriralo vašo datoteko z geslom aka geslo. V tem procesu učenja nikoli ne bi pomislili, da je dejanski proces učenja lahko tako enostaven. Torej po šifriranju datoteke, kaj potrebujete? Očitno! dešifriranje datoteke. In želim si, da - učenec, bralec, sami napišete skript za dešifriranje, ne skrbite, ne puščam vas na sredini, želim le, da iz tega članka nekaj pridobite.
Opomba: gpg -d ime datoteke.gpg> ime datoteke je tisto, kar morate uporabiti v skriptu za dešifriranje. Če je uspešen, ga lahko objavite v komentarju, če ne, me lahko prosite, naj vam ga napišem.
Skripta 4: Preverjanje uporabe strežnika
Preverjanje uporabe strežnika je ena pomembnih nalog skrbnika, dober skrbnik pa je tisti, ki zna avtomatizirati vsakodnevno opravilo. Spodaj je skript, ki vsebuje veliko takšnih informacij o vašem strežniku. Preverite sami.
#!/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
Opomba: dal sem vam skript, ki daje izhodne podatke v samem terminalu, kako pa je, če izhod dobite v datoteki za poznejšo uporabo. Izvedite ga s pomočjo operaterja preusmeritve.
- ‘>‘: operater preusmeritve povzroči ustvarjanje datoteke in če ta obstaja, se vsebina prepiše.
- ‘>>‘: ko uporabljate >>, dodajate informacije in jih ne nadomeščate.
- ‘>>‘ je varno v primerjavi z ‘>‘
Skripta 5: preverite prostor na disku in pošlje e-poštno opozorilo
Kako pa je, če bi dobili e-pošto, če je uporaba diska v particiji DEL večja od največje dovoljene, to je skript za življenjske rešitve za spletne skrbnike z malo spremembami.
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
Opomba: Odstranite “USER” z vašim uporabniškim imenom. E-pošto lahko preverite z uporabo ukaza ‘mail’.
Pisanje scenarijev in programiranje presegata meje, vse in vse bi lahko izvedli po potrebi. Za zdaj je to vse. V naslednjem članku vam bom predstavil nekaj različnih okusov skriptiranja. Do takrat ostanite hladni in nastavljeni, uživajte.