学习基本Shell脚本
脚本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, youcl.com is always there"最上面的“ 关键词 ”将已知的你,其中大部分是自我解释。 例如 ,MAX设置变量的最大值,为是一个循环并在循环内什么沾到连连执行直到循环是有效的输入的给定值。
示例输出
[root@youcl ~]# chmod 755 Special_Pattern.sh [root@youcl ~]# ./Special_Pattern.sh Enter Number between (5 to 9) : 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Whenever you need help, youcl.com is always there如果你对任何编程语言有点了解,学习上述脚本并不困难,即使你是新来的计算,编程和Linux,也不会很难。
脚本2:创建多彩脚本
谁说 ,Linux是无色枯燥,下面的代码保存到什么[ 点 ] SH,使其可执行文件并运行它,不要忘了告诉我是怎么回事,你觉得你能达到什么,什么地方实现它。#!/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"注意 :现在不要理会颜色代码,那些对你很重要将在你的舌头,渐渐地。 警告 :您的终端可能没有闪烁的设施。
示例输出
[root@youcl ~]# chmod 755 Colorfull.sh [root@youcl ~]# ./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:加密文件/目录
该脚本将加密 文件 (记得吗? 目录 / 驱动器 / ...。一切都被视为文件,在 Linux中)。 上述脚本的当前限制是它不使用 TAB支持名称的自动完成。 此外,您需要将要加密的脚本和文件放在同一个文件夹中。 您可能需要安装“ 的pinentry桂 ”,使用 yum或 apt包,如果需要的话。[root@midstage ~]# yum install pinentry-gui [root@midstage ~]# 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
示例输出
[root@youcl ~]# chmod 755 Encrypt.sh [root@youcl ~]# ./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:这将加密您的文件,并使用一个密钥又名 密码 。在这个学习过程中,你从来没有想过实际的学习过程可能会那么容易。所以在加密文件后你需要什么?明显!解密文件。我想让你 - 学习者,读者自己写解密脚本,不要担心我不会离开你在中间,我只是希望你从这篇文章中获得一些东西。 注 :GPG -d filename.gpg> 文件名是您需要在解密的脚本来实现的。如果成功,你可以在评论中发布你的脚本,如果不是你可以请我写你的脚本。
脚本4:检查服务器利用率
检查服务器利用率是管理员的重要任务之一,良好的管理员是知道如何自动执行日常任务的人员。以下是将提供有关您的服务器的许多此类信息的脚本。自己检查。#!/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@youcl ~]# chmod 755 Server-Health.sh [root@youcl ~]# ./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 youcl pts/0 116.72.134.162 21:48 0.00s 0.03s 0.03s sshd: youcl [priv] -------------------- Last logins: youcl pts/0 Tue Jul 16 21:48 still logged in 116.72.134.162 youcl 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:检查磁盘空间并发送电子邮件警报
如何得到一个电子邮件时在分隔 部磁盘使用大于允许的最大,这是很少的修改Web管理员生命的救星脚本。MAX=95 EMAIL=USER@domain.com 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注 :与您的用户名删除 “USER”。 您可以使用“ 邮件 ”命令,使用检查邮件。 脚本编写和编程超越了界限,任何东西和一切都可以根据需要实现。这就是现在,在我的下一篇文章中,我会给你一些不同的口味的脚本。直到然后保持冷静和调整,享受。