博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第11章代码《跟老男孩学习Linux运维:Shell高级编程实战》
阅读量:6682 次
发布时间:2019-06-25

本文共 5826 字,大约阅读时间需要 19 分钟。

本书历史上已出版最实战的Shell高级编程实战书籍,没有之一,和市面书籍不同,本书是作者经过18年的运维工作及教学工作后,创新类企业级实战书籍,适合所有学习及从事Linux相关工作的读者。

《跟老男孩学习Linux运维:Shell高级编程实战》第10章,本书预计于12月底出版,本章的部分代码如下:

有关代码的思路分析和详细注释,请支持作者购买正版书籍获得。

[root@oldboy C11]# for n in `ls *|sort -t_ -n -k2`;do echo;echo;echo "[root@oldboy C11]# cat $n";cat $n;done[root@oldboy C11]# cat 11_1_1.shfor ((i=1;i<=3;i++))do    echo $idone[root@oldboy C11]# cat 11_1_2.shi=1while ((i<=3))do   echo $i   ((i++))done[root@oldboy C11]# cat 11_2_1.shfor num in 5 4 3 2 1do    echo $numdone[root@oldboy C11]# cat 11_2_2.shfor n in {5..1}do  echo $ndone[root@oldboy C11]# cat 11_2_3.shfor n in `seq 5 -1 1`do    echo $ndone[root@oldboy C11]# cat 11_3_1.shcd /testfor filename in `ls`do    echo $filenamedone[root@oldboy C11]# cat 11_4_1.sh#!/bin/shcd /testfor filename in `ls|grep "txt$"`do   mv $filename `echo $filename|cut -d . -f1`.gifdone[root@oldboy C11]# cat 11_5_1.sh#!/bin/shcd /oldboyfor file in `ls *.jpg`  do  mv $file `echo $file|sed 's/_finished//g'` done[root@oldboy C11]# cat 11_8_1.sh#!/bin/bash  #!/bin/shGREEN_COLOR='\E[47;30m'RES='\E[0m'for num1 in `seq 9`do  for num2 in `seq 9`  do    if [ $num1 -ge $num2 ]      then        if (((num1*num2)>9))          then            echo -en "${GREEN_COLOR}${num1}x${num2}=$((num1*num2))$RES "          else            echo -en "${GREEN_COLOR}${num1}x${num2}=$((num1*num2))$RES  "        fi    fi  doneechodone[root@oldboy C11]# cat 11_11_1.sh#!/bin/shMYUSER=rootMYPASS=oldboy123SOCKET=/data/3306/mysql.sockMYCMD="mysql -u$MYUSER -p$MYPASS -S $SOCKET"for dbname in oldboy oldgirl xiaoting bingbingdo    $MYCMD -e "drop database $dbname;create database $dbname"done[root@oldboy C11]# cat 11_11_2.sh#!/bin/shDBPATH=/server/backupMYUSER=rootMYPASS=oldboy123SOCKET=/data/3306/mysql.sockMYCMD="mysql -u$MYUSER -p$MYPASS -S $SOCKET"MYDUMP="mysqldump -u$MYUSER -p$MYPASS -S $SOCKET"[ ! -d $DBPATH ] && mkdir $DBPATHfor dbname in `$MYCMD -e "show databases;"|sed '1,2d'|egrep -v "mysql|schema"`do  $MYDUMP $dbname|gzip >$DBPATH/${dbname}_$(date +%F).sql.gzdone[root@oldboy C11]# cat 11_12_1.sh#!/bin/shMYUSER=rootMYPASS=oldboy123SOCKET=/data/3306/mysql.sockMYCMD="mysql -u$MYUSER -p$MYPASS -S $SOCKET"for dbname in oldboy oldgirl xiaoting bingbingdo  $MYCMD -e "use $dbname;create table test(id int,name varchar(16));insert into test values(1,'testdata');"done[root@oldboy C11]# cat 11_12_2.sh#!/bin/shMYUSER=rootMYPASS=oldboy123SOCKET=/data/3306/mysql.sockMYCMD="mysql -u$MYUSER -p$MYPASS -S $SOCKET"for dbname in oldboy oldgirl xiaoting bingbingdo  echo ===============${dbname}.test====================  $MYCMD -e "use $dbname;select * from ${dbname}.test;"done[root@oldboy C11]# cat 11_12_3.sh#!/bin/shDBPATH=/server/backupMYUSER=rootMYPASS=oldboy123SOCKET=/data/3306/mysql.sockMYCMD="mysql -u$MYUSER -p$MYPASS -S $SOCKET"MYDUMP="mysqldump -u$MYUSER -p$MYPASS -S $SOCKET"[ ! -d $DBPATH ] && mkdir -p $DBPATHfor dbname in `$MYCMD -e "show databases;"|sed '1,2d'|egrep -v "mysql|schema"`do   mkdir $DBPATH/${dbname}_$(date +%F) -p   for table in `$MYCMD -e "show tables from $dbname;"|sed '1d'`   do    $MYDUMP $dbname $table|gzip >$DBPATH/${dbname}_$(date +%F)/${dbname}_${table}.sql.gz   donedone[root@oldboy C11]# cat 11_13_1.sh#!/bin/bashpath=/server/scriptsMAIL_GROUP="1111@qq.com 2222@qq.com"PAGER_GROUP="18600338340 18911718229"LOG_FILE="/tmp/web_check.log"[ ! -d $path ] && mkdir -p $pathfunction UrlList(){cat >$path/domain.list<
/dev/null 2>&1    if [ $? -ne 0 ]      then        let FAILCOUNT+=1;    else      break    fidonereturn $FAILCOUNT}function MAIL(){local SUBJECT_CONTENT=$1for MAIL_USER  in `echo $MAIL_GROUP` do    mail -s "$SUBJECT_CONTENT " $MAIL_USER <$LOG_FILEdone}function PAGER(){for PAGER_USER  in `echo $PAGER_GROUP`do TITLE=$1    CONTACT=$PAGER_USER HTTPGW=http://oldboy.sms.cn/smsproxy/sendsms.action #send_message method1 curl -d  cdkey=5ADF-EFA -d password=OLDBOY -d phone=$CONTACT -d message="$TITLE[$2]" $HTTPGWdone}function SendMsg(){  if [ $1 -ge 3 ]    then        RETVAL=1       NOW_TIME=`date +"%Y-%m-%d %H:%M:%S"`       SUBJECT_CONTENT="http://$2 is error,${NOW_TIME}."       echo -e "$SUBJECT_CONTENT"|tee $LOG_FILE       MAIL $SUBJECT_CONTENT       PAGER $SUBJECT_CONTENT $NOW_TIME  else      echo "http://$2 is ok"      RETVAL=0  fi  return $RETVAL}function main(){UrlListfor url in `cat $path/domain.list`  do   CheckUrl $url   SendMsg $? $urldone}main[root@oldboy C11]# cat 11_14_1.sh#!/bin/sh#author:oldboy#blog:http://oldboy.blog.51cto.comuser="oldboy"passfile="/tmp/user.log"for num in `seq -w 10` do   useradd $user$num   pass="`echo "test$RANDOM"|md5sum|cut -c3-11`"   echo "$pass"|passwd --stdin $user$num   echo  -e "user:$user$num\tpasswd:$pass">>$passfiledoneecho ------this is oldboy trainning class contents----------------cat $passfile[root@oldboy C11]# cat 11_14_2.sh#!/bin/sh#author:oldboy#blog:http://oldboy.blog.51cto.com. /etc/init.d/functionsuser="oldboy"passfile="/tmp/user.log"for num in `seq -w 11 15` do   pass="`echo "test$RANDOM"|md5sum|cut -c3-11`"   useradd $user$num &>/dev/null &&\   echo "$pass"|passwd --stdin $user$num &>/dev/null &&\   echo  -e "user:$user$num\tpasswd:$pass">>$passfile   if [ $? -eq 0 ]    then      action "$user$num is ok" /bin/true    else      action "$user$num is fail" /bin/false    fidoneecho ----------------------cat $passfile && >$passfile[root@oldboy C11]# cat 11_14_3.sh#!/bin/sh#author:oldboy#blog:http://oldboy.blog.51cto.com. /etc/init.d/functionsuser="xiaoting"passfile="/tmp/user.log"for num in `seq -w 10` do   pass="`echo "test$RANDOM"|md5sum|cut -c3-11`"   useradd $user$num &>/dev/null &&\   echo  -e "$user${num}:$pass">>$passfile   if [ $? -eq 0 ]    then      action "$user$num is ok" /bin/true    else      action "$user$num is fail" /bin/false    fidoneecho ----------------------chpasswd < $passfile cat $passfile && >$passfile

转载地址:http://tzxao.baihongyu.com/

你可能感兴趣的文章
PowerShell 获取Site Collection下被签出的文件
查看>>
见见面、聊聊天 - 5月22日晚7点Meetup,三里屯绿树旁酒吧,畅谈云技术和应用
查看>>
常用的HTML5、CSS3新特性能力检测写法
查看>>
安卓巴士诚招版主,希望各位巴友踊跃加入我们!
查看>>
【笔记】一些linux实用函数技巧【原创】
查看>>
JS验证集合
查看>>
第05篇:C#星夜拾遗之使用数据库
查看>>
现代软件工程讲义 4 方法论 - MSF
查看>>
线程同步工具类
查看>>
web服务器比较(IIS,Tomcat,Apache,Resin )
查看>>
协变和逆变之疑问
查看>>
Form Head Data
查看>>
UITextField的总结
查看>>
linux 自旋锁和信号量【转】
查看>>
匿名函数
查看>>
Android模拟器上网的设置
查看>>
Cannot get WiFi AP state 错误
查看>>
.NET调试实例-实验1:死锁 (原创翻译)
查看>>
Microsoft-PetSop4.0(宠物商店)-数据库设计-Oracle
查看>>
Python黑帽编程 3.4 跨越VLAN
查看>>