برای یاد گرفتن شل اسکریپتینگ بدون تمرین و دیدن اسکریپت های مختلف به نتیجه نخواهید رسید.
امروز چند تا اسکریپت براتون توی این پست قرار خواهم داد که با کد های مختلف آشنا بشید .
اسکریپت اول : اسکریپتی که توی خروجی یه سری کاراکتر رو به صورت خاصی پرینت میکنه
#!/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
به همین سادگی
امیدوارم که پست امروز براتون مفید واقع شد باشه .
پیروز باشید.