5 Shell Scripts ສຳ ລັບ Linux ທີ່ມັກຮຽນຮູ້ການຂຽນໂປແກຼມ Shell - Part II
ເພື່ອຮຽນຮູ້ບາງສິ່ງບາງຢ່າງທີ່ທ່ານຕ້ອງການທີ່ຈະເຮັດມັນ, ໂດຍບໍ່ຕ້ອງຢ້ານວ່າຈະບໍ່ປະສົບຜົນ ສຳ ເລັດ. ຂ້າພະເຈົ້າເຊື່ອວ່າໃນພາກປະຕິບັດຕົວຈິງແລະເພາະສະນັ້ນຈຶ່ງຈະພາທ່ານໄປສູ່ໂລກປະຕິບັດຕົວຈິງຂອງ Scripting Language.
ບົດຂຽນນີ້ແມ່ນການຂະຫຍາຍຂອງບົດຄວາມ ທຳ ອິດຂອງພວກເຮົາທີ່ເຂົ້າໃຈກ່ຽວກັບ Linux Shell ແລະ Basic Shell Scripting - ພາກທີ I, ເຊິ່ງພວກເຮົາໄດ້ໃຫ້ທ່ານໄດ້ຮັບລົດ Scripting, ສືບຕໍ່ວ່າພວກເຮົາຈະບໍ່ເຮັດໃຫ້ທ່ານຜິດຫວັງໃນບົດຄວາມນີ້.
ຂໍ້ທີ 1: ແຕ້ມຮູບແບບພິເສດ
#!/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"
ສ່ວນໃຫຍ່ຂອງ 'ຄຳ ສຳ ຄັນຂ້າງເທິງ' ຈະເປັນທີ່ຮູ້ຈັກຂອງທ່ານແລະ ຄຳ ເວົ້າສ່ວນຫຼາຍແມ່ນ ຄຳ ອະທິບາຍດ້ວຍຕົນເອງ. ເຊັ່ນ: MAX ກຳ ນົດມູນຄ່າສູງສຸດຂອງຕົວແປ, ສຳ ລັບແມ່ນ loop ແລະສິ່ງໃດ ໜຶ່ງ ພາຍໃນ loop ໄດ້ຮັບການປະຕິບັດອີກເທື່ອ ໜຶ່ງ ແລະອີກຄັ້ງຈົນກວ່າ loop ຈະຖືກຕ້ອງ ສຳ ລັບມູນຄ່າຂອງວັດສະດຸປ້ອນ.
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
ຖ້າທ່ານຮູ້ພຽງເລັກນ້ອຍກ່ຽວກັບພາສາການຂຽນໂປຼແກຼມໃດກໍ່ຕາມ, ການຮຽນຮູ້ອັກສອນຂ້າງເທິງບໍ່ແມ່ນເລື່ອງຍາກ, ເຖິງແມ່ນວ່າທ່ານຈະ ໃໝ່ ໃນການຄິດໄລ່, ການຂຽນໂປແກຼມແລະ Linux ກໍ່ຈະບໍ່ຍາກຫຼາຍ.
ຄິບທີ 2: ການສ້າງອັກສອນທີ່ມີສີສັນ
ໃຜເວົ້າວ່າ, Linux ບໍ່ມີສີສັນແລະ ໜ້າ ເບື່ອ, ບັນທຶກລະຫັດຂ້າງລຸ່ມນີ້ໄວ້ໃນສິ່ງໃດສິ່ງ ໜຶ່ງ, ເຮັດໃຫ້ມັນສາມາດປະຕິບັດໄດ້ແລະແລ່ນມັນ, ຢ່າລືມບອກຂ້ອຍວ່າມັນເປັນແນວໃດ, ຄິດວ່າທ່ານສາມາດປະສົບຜົນ ສຳ ເລັດໄດ້ແນວໃດ, ຈັດຕັ້ງປະຕິບັດຢູ່ບ່ອນໃດບ່ອນ ໜຶ່ງ.
#!/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"
ໝາຍ ເຫດ: ຢ່າກັງວົນກ່ຽວກັບລະຫັດສີດຽວນີ້, ສິ່ງ ສຳ ຄັນ ສຳ ລັບທ່ານແມ່ນຢູ່ໃນລີ້ນຂອງທ່ານ, ຄ່ອຍໆ.
ຄຳ ເຕືອນ: ທ່າເຮືອຂອງທ່ານອາດຈະບໍ່ມີສະຖານທີ່ກະພິບຕາ.
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: ເຂົ້າລະຫັດເອກະສານ/ລາຍຊື່
ສະຄິບນີ້ຈະເຂົ້າລະຫັດເອກະສານ (ຈື່ໄດ້ບໍ? ໄດເລກະທໍລີ/driver/…. ທຸກສິ່ງທຸກຢ່າງຖືວ່າເປັນເອກະສານ, ໃນ Linux). ຂໍ້ ຈຳ ກັດຂອງບົດຂຽນຂ້າງເທິງໃນປະຈຸບັນແມ່ນວ່າມັນບໍ່ສະ ໜັບ ສະ ໜູນ ການຂຽນຊື່ໂດຍອັດຕະໂນມັດໂດຍໃຊ້ແທັບ TAB. ຍິ່ງໄປກວ່ານັ້ນ, ທ່ານຈໍາເປັນຕ້ອງວາງສະຄິບແລະເອກະສານທີ່ຈະເຂົ້າລະຫັດຢູ່ໃນໂຟນເດີດຽວກັນ. ທ່ານອາດຈະຕ້ອງການຕິດຕັ້ງ“ pinentry-gui”, ໂດຍໃຊ້ yum ຫຼື apt the package, ຖ້າຕ້ອງການ.
yum install pinentry-gui apt-get install pinentry-gui
ສ້າງແຟ້ມເອກະສານທີ່ມີຊື່ວ່າ“ Encrypt.sh” ແລະໃສ່ຄິບຕໍ່ໄປນີ້, ເຮັດໃຫ້ມັນສາມາດປະຕິບັດໄດ້ແລະ ດຳ ເນີນການຕາມທີ່ສະແດງ.
#!/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
ຜົນໄດ້ຮັບຕົວຢ່າງ
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: ສິ່ງນີ້ຈະເຂົ້າລະຫັດເອກະສານຂອງທ່ານ, ໂດຍໃຊ້ລະຫັດຜ່ານຂອງ passkey aka. ໃນຂະບວນການຮຽນຮູ້ນີ້ທ່ານຄົງຈະບໍ່ເຄີຍຄິດວ່າຂັ້ນຕອນການຮຽນຮູ້ທີ່ແທ້ຈິງອາດຈະງ່າຍດາຍຫຼາຍ. ດັ່ງນັ້ນຫຼັງຈາກເຂົ້າລະຫັດເອກະສານສິ່ງທີ່ທ່ານຕ້ອງການ? ເຫັນໄດ້ແຈ້ງ! ຖອດລະຫັດເອກະສານ. ແລະຂ້ອຍຢາກໃຫ້ເຈົ້າ - ຜູ້ຮຽນ, ຜູ້ອ່ານຂຽນບົດຖອດລະຫັດຕົວທ່ານເອງ, ຢ່າກັງວົນວ່າຂ້ອຍບໍ່ປ່ອຍໃຫ້ເຈົ້າຢູ່ເຄິ່ງກາງ, ຂ້ອຍພຽງແຕ່ຢາກໃຫ້ເຈົ້າໄດ້ຮັບບາງສິ່ງບາງຢ່າງຈາກບົດຄວາມນີ້.
ໝາຍ ເຫດ: gpg -d filename.gpg> filename ແມ່ນສິ່ງທີ່ທ່ານ ຈຳ ເປັນຕ້ອງປະຕິບັດໃນສະຄຣິບຖອດລະຫັດຂອງທ່ານ. ທ່ານອາດຈະຂຽນບົດຂຽນຂອງທ່ານໃນ ຄຳ ເຫັນຖ້າປະສົບຜົນ ສຳ ເລັດ, ຖ້າບໍ່ທ່ານອາດຈະຂໍໃຫ້ຂ້ອຍຂຽນມັນໃຫ້ເຈົ້າ.
ຂໍ້ 4: ການກວດສອບການ ນຳ ໃຊ້ Server
ການກວດສອບການ ນຳ ໃຊ້ເຊີບເວີແມ່ນ ໜຶ່ງ ໃນ ໜ້າ ທີ່ ສຳ ຄັນຂອງຜູ້ບໍລິຫານ, ແລະຜູ້ບໍລິຫານທີ່ດີແມ່ນຜູ້ທີ່ຮູ້ວິທີການເຮັດວຽກຂອງຕົນເອງໃຫ້ເປັນປົກກະຕິ. ຂ້າງລຸ່ມນີ້ແມ່ນສະຄິບທີ່ຈະໃຫ້ຂໍ້ມູນຫຼາຍຢ່າງດັ່ງກ່າວກ່ຽວກັບເຊີບເວີຂອງທ່ານ. ກວດເບິ່ງຕົວທ່ານເອງ.
#!/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
ໝາຍ ເຫດ: ຂ້ອຍໄດ້ໃຫ້ສະຄິບທີ່ໃຫ້ຜົນຜະລິດຢູ່ປາຍມັນເອງ, ເຮັດແນວໃດກ່ຽວກັບການໄດ້ຮັບຜົນຜະລິດຢູ່ໃນເອກະສານ ສຳ ລັບການອ້າງອີງໃນອະນາຄົດ. ປະຕິບັດມັນໂດຍໃຊ້ຕົວປະຕິບັດການປ່ຽນເສັ້ນທາງ.
< <: ຜູ້ປະຕິບັດການປ່ຽນເສັ້ນທາງກໍ່ໃຫ້ເກີດການສ້າງເອກະສານ, ແລະຖ້າມັນມີຢູ່, ເນື້ອຫາຈະຖືກຂຽນທັບ.
ສະຄິບທີ 5: ກວດເບິ່ງພື້ນທີ່ Disk ແລະສົ່ງເຄື່ອງເຕືອນ Email
ເຮັດແນວໃດກ່ຽວກັບການໄດ້ຮັບອີເມວເມື່ອການໃຊ້ແຜ່ນດິດໃນການແບ່ງປັນ PART ແມ່ນໃຫຍ່ກວ່າທີ່ໄດ້ຮັບອະນຸຍາດສູງສຸດ, ມັນແມ່ນຕົວອັກສອນທີ່ຊ່ວຍຊີວິດໃຫ້ຜູ້ບໍລິຫານເວັບໂດຍມີການດັດແປງເລັກນ້ອຍ.
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
ໝາຍ ເຫດ: ເອົາ“ ຜູ້ໃຊ້” ອອກດ້ວຍຊື່ຜູ້ໃຊ້ຂອງທ່ານ. ທ່ານສາມາດກວດເບິ່ງອີເມວໂດຍໃຊ້ ຄຳ ສັ່ງ ‘mail’.
ການຂຽນແລະການຂຽນໂປແກຼມແມ່ນເກີນຂອບເຂດ, ສິ່ງໃດແລະທຸກຢ່າງສາມາດຖືກຈັດຕັ້ງປະຕິບັດໄດ້ຕາມຄວາມຕ້ອງການ. ທັງ ໝົດ ນີ້ ສຳ ລັບດຽວນີ້, ໃນບົດຂຽນຕໍ່ໄປຂອງຂ້ອຍຂ້ອຍຈະເອົາລົດຊາດທີ່ແຕກຕ່າງຂອງເຈົ້າມາຂຽນ. ຈົນກ່ວາຫຼັງຈາກນັ້ນໃຫ້ເຢັນແລະເບິ່ງ, ມ່ວນຊື່ນ.