منبع اصلی نوشتار زیر در این لینک قرار دارد

آموزش Shell Scripting – چند اسکریپت کاربردی

برای یاد گرفتن شل اسکریپتینگ بدون تمرین و دیدن اسکریپت های مختلف به نتیجه نخواهید رسید.

امروز چند تا اسکریپت براتون توی این پست قرار خواهم داد که با کد های مختلف آشنا بشید .

اسکریپت اول : اسکریپتی که توی خروجی یه سری کاراکتر رو به صورت خاصی پرینت میکنه

#!/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 "nnttt SecLinux.ir"

خروجی اسکریپت فوق :

[root@seclinux ~]# chmod 755 Special_Pattern.sh
[root@seclinux ~]# ./Special_Pattern.sh
Enter Number between (5 to 9) : 6
       .
      . .
     . . .
    . . . .
   . . . . .
  . . . . . .
  . . . . . .
   . . . . .
    . . . .
     . . .
      . .
       .

                         Seclinux.ir

اسکریپت دوم : چاپ خروجی در رنگ های مختلف

#!/bin/bash
clear 
echo -e "33[1m SecLinux.ir"
# bold effect
echo -e "33[5m Blink"
# blink effect
echo -e "33[0m SecLinux.ir"
# back to normal
echo -e "33[31m SecLinux.ir"
# Red color
echo -e "33[32m SecLinux.ir"
# Green color
echo -e "33[33m SecLinux.ir"
# See remaining on screen
echo -e "33[34m SecLinux.ir"
echo -e "33[35m SecLinux.ir"
echo -e "33[36m SecLinux.ir"
echo -e -n "33[0m"
# back to normal
echo -e "33[41m SecLinux.ir"
echo -e "33[42m SecLinux.ir"
echo -e "33[43m SecLinux.ir"
echo -e "33[44m SecLinux.ir"
echo -e "33[45m SecLinux.ir"
echo -e "33[46m SecLinux.ir"
echo -e "33[0m SecLinux.ir"

اسکریپت سوم : کنترل آپتایم سرور ، لاگ ها ، اتصالات و …

#!/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

خروجی :

[root@seclinux ~]# ./Server-Health.sh
Thu Nov 13 08:56:34 EST 2014
uptime:
 ۰۸:۵۶:۳۴ up 24 days, 12:04,  1 user,  load average: 2.27, 1.19, 0.56
Currently connected:
 ۰۸:۵۶:۳۴ up 24 days, 12:04,  1 user,  load average: 2.27, 1.19, 0.56
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    ssh.seclinux.ir     08:56    0.00s  0.01s  0.00s -bash
--------------------
Last logins:
root     pts/0        Thu Nov 13 08:56   still logged in    81.28.40.137
root     pts/2        Wed Nov 12 21:14 - 23:05  (01:50)     151.240.13.204
root     pts/1        Wed Nov 12 21:14 - 23:25  (02:11)     81.28.32.37
--------------------
Disk and memory usage:
Free/total disk: 35G / 470G
Free/total memory: 710 / 8081 MB
--------------------
OOM errors since Nov  9 04:02 : 0
--------------------
Utilization and most expensive processes:
top - 08:56:35 up 24 days, 12:04,  1 user,  load average: 2.27, 1.19, 0.56
Tasks:  96 total,   2 running,  94 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.8%us,  1.0%sy,  0.1%ni, 81.5%id, 14.3%wa,  0.1%hi,  0.1%si,  0.0%st

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
۱۰۲۵۶ smmsp     18   0 13712 6896 1060 D 11.9  0.7   0:12.93 sendmail
  ۵۲۹ root      10  -5     0    0    0 D  6.0  0.0 117:39.98 kjournald
    ۱ root      15   0  2172  568  540 S  0.0  0.1   0:00.76 init
--------------------
Open TCP ports:

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2014-11-13 08:56 EST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 65528 closed ports
PORT      STATE SERVICE
۸۰/tcp    open  http
۱۱۱/tcp   open  rpcbind

Nmap finished: 1 IP address (1 host up) scanned in 6.369 seconds
--------------------
Current connections:
Total: 97 (kernel 115)
TCP:   11 (estab 1, closed 2, orphaned 0, synrecv 0, timewait 2/0), ports 10

Transport Total     IP        IPv6
*         ۱۱۵       -         -
RAW       0         0         0
UDP       3         3         0
TCP       9         9         0
INET      12        12        0
FRAG      0         0         0

--------------------
processes:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2172   568 ?        Ss   Oct19   0:00 init [3]
root         2  0.0  0.0      0     0 ?        S<   Oct19   0:00 [migration/0]
root         3  0.0  0.0      0     0 ?        SN   Oct19   0:01 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S<   Oct19   0:00 [events/0]
root         5  0.0  0.0      0     0 ?        S<   Oct19   0:00 [khelper]
root         6  0.0  0.0      0     0 ?        S<   Oct19   0:00 [kthread]
--------------------
vmstat:
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 ۴  ۰ ۱۱۷۶۶۸  ۸۸۵۹۶ ۱۶۶۹۰۸ ۴۷۲۲۷۶    ۱    ۱   ۱۷۵   ۱۷۰    ۸    ۶  ۳  ۱ ۸۲ ۱۴  ۰
 ۰  ۱ ۱۱۷۶۶۸  ۸۸۶۷۶ ۱۶۶۹۰۸ ۴۷۲۲۹۲    ۰    ۰     ۰  ۴۰۰۸ ۱۳۴۴  ۸۹۱  ۳  ۳  ۰ ۹۴  ۰
 ۰  ۱ ۱۱۷۶۶۸  ۸۸۷۰۸ ۱۶۶۹۰۸ ۴۷۲۲۵۲    ۰    ۰     ۰ ۱۱۰۳۲ ۱۸۲۶ ۲۲۸۶  ۵ ۱۰  ۰ ۸۵  ۰
 ۰  ۱ ۱۱۷۶۶۸  ۸۸۶۲۰ ۱۶۶۹۰۸ ۴۷۲۲۷۶    ۰    ۰     ۰  ۵۸۶۰ ۱۴۷۵ ۱۲۹۳  ۳  ۷  ۰ ۹۰  ۰
 ۰  ۱ ۱۱۷۶۶۸  ۸۸۷۴۸ ۱۶۶۹۰۸ ۴۷۲۲۷۶    ۰    ۰     ۰ ۱۲۶۲۴ ۱۹۷۵ ۲۷۰۶  ۵ ۱۱  ۰ ۸۴  ۰
[root@seclinux ~]#

همینطور که میبینید با کمی ابتکار میشه یه اسکریپتی بهتر از اسکریپت بالا نوشت که به طور منظم خروجیش برای شما ایمیل بشه.

حالا چطوری میشه از ایمیل استفاده کرد ، اسکریپت بعدی رو ببینید.

اسکریپت چهارم : چک کردن هارد دیسک به طور منظم و ایمیل کردن خروجی

MAX=95
[email protected]
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

به همین سادگی :D

امیدوارم که پست امروز براتون مفید واقع شد باشه .

پیروز باشید.

 



برچسب ها : , , , , , ,