7-9工作日志

转载 2015年07月09日 23:09:35
个人认为学习shell脚本最好的方法就是看一个优秀的shell脚本,最近一段时间一直在研究pppoe,把pppoe的几个脚本文件看了一下,以前都没接触过shell的我感觉功力大涨(这里要感谢fp对我的支持),我把其中的一个脚本修改了一下,作为学习shell脚本以及以后编写时的模板,如下:
#!/bin/sh
#***********************************************************************
# useful tips for shell scripts
#***********************************************************************
# From AUTOCONF
prefix=/usr
exec_prefix=${prefix}
# Paths to programs
IFCONFIG=/sbin/ifconfig
PPPD=/usr/sbin/pppd
PPPOE=${exec_prefix}/sbin/pppoe
ECHO=/bin/echo
LOGGER="/usr/bin/logger -t `basename $0`"
CONFIG=/etc/ppp/pppoe.conf

copy() {
    cp $1 $2
#$?是指前一条指令的结果是否正常,如果正常退出为0
    if [ "$?" != 0 ] ; then
 $ECHO "*** Error copying $1 to $2"
 $ECHO "*** Quitting."
 exit 1
    fi
}

# 判断是否是root的代码
if [ "`/usr/bin/id -u`" != 0 ] ; then
    $ECHO "$0: Sorry, you must be root to run this script"
    exit 1
fi
# 判断config文件是否存在
if [ ! -r "$CONFIG" ] ; then
    $ECHO "Oh, dear, I don't see the file '$CONFIG' anywhere.  Please"
    $ECHO "re-install the PPPoE client."
    exit 1
fi
# 判断需要内嵌的可执行文件是否可以执行
if [ ! -x $PPPD ] ; then
    $ECHO "Oops, I can't execute the program '$PPPD'.  You"
    $ECHO "must install the PPP software suite, version 2.3.10 or later."
    exit 1
fi
export CONFIG
#定义,展开变量;注意是“点 空格“,下面的USER ETH等都是在这里定义的
. $CONFIG
#printf例子,读取外面变量
    $ECHO ""
    $ECHO "USER NAME"
    $ECHO ""
    printf "%s" ">>> Enter your PPPoE user name (default $USER): "
    read U
    if [ "$U" = "" ] ; then
 U="$USER"
    fi
# while[]; do done 这是格式
    while [ true ] ; do
 $ECHO ""
 $ECHO "PASSWORD"
 $ECHO ""
 stty -echo
 printf "%s" ">>> Please enter your PPPoE password:    "
 read PWD1
 $ECHO ""
 printf "%s" ">>> Please re-enter your PPPoE password: "
 read PWD2
 $ECHO ""
 stty echo
 if [ "$PWD1" = "$PWD2" ] ; then
     break
 fi
 printf "%s" ">>> Sorry, the passwords do not match.  Try again? (y/n)"
 read ANS
 case "$ANS" in
     N|No|NO|Non|n|no|non)
  $ECHO "OK, quitting.  Bye."
  exit 1
 esac
    done
#case例子,和while do done一起使用的。
 while [ true ] ; do
     printf "%s" ">>> Choose a type of firewall (0-2): "
     read a
     if [ "$a" = 0 -o "$a" = 1 -o "$a" = 2 ] ; then
  break
     fi
     $ECHO "Please enter a number from 0 to 2"
 done
 case "$a" in
     0)
  FIREWALL=NONE
  ;;
     1)
  FIREWALL=STANDALONE
  ;;
     2)
  FIREWALL=MASQUERADE
  ;;
 esac
    fi
 
    while [ true ] ; do
        printf "%s" '>>> Accept these settings and adjust configuration files (y/n)? '
        read ANS
 case "ANS" in
     Y|y|yes|Yes|oui|Oui)
  ANS=y
  ;;
            N|n|no|No|non|Non)
  ANS=n
  ;;
 esac
 if [ "$ANS" = "y" -o "$ANS" = "n" ] ; then
     break
        fi
    done
    if [ "$ANS" = "y" ] ; then
 break
    fi
done
 
# 将变动的变量更新到conf文件中
sed -e "s&^USER=.*&USER='$U'&" \
    -e "s&^ETH=.*Ð='$E'&" \
    -e "s&^PIDFILE=.*&PIDFILE=\"$VARRUN/\$CF_BASE-pppoe.pid\"&" \
    -e "s/^FIREWALL=.*/FIREWALL=$FIREWALL/" \
    -e "s/^DEMAND=.*/DEMAND=$D/" \
    -e "s/^DNSTYPE=.*/DNSTYPE=$DNSTYPE/" \
    -e "s/^DNS1=.*/DNS1=$DNS1/" \
    -e "s/^DNS2=.*/DNS2=$DNS2/" \
    -e "s/^PEERDNS=.*/PEERDNS=$PEERDNS/" \
    < $CONFIG-bak > $CONFIG
#又是$? 的用法
if [ $? != 0 ] ; then
    $ECHO "** Error modifying $CONFIG"
    $ECHO "** Quitting"
    exit 1
fi

#备份文件的操作
$ECHO "Adjusting /etc/ppp/pap-secrets and /etc/ppp/chap-secrets"
if [ -r /etc/ppp/pap-secrets ] ; then
    $ECHO "  (But first backing it up to /etc/ppp/pap-secrets-bak)"
    copy /etc/ppp/pap-secrets /etc/ppp/pap-secrets-bak
else
    cp /dev/null /etc/ppp/pap-secrets-bak
fi
if [ -r /etc/ppp/chap-secrets ] ; then
    $ECHO "  (But first backing it up to /etc/ppp/chap-secrets-bak)"
    copy /etc/ppp/chap-secrets /etc/ppp/chap-secrets-bak
else
    cp /dev/null /etc/ppp/chap-secrets-bak
fi
#以exit结束
exit 0

相关文章推荐

工作日志2016-5-9

一、2016年5月9日(星期一) 计划完成的事情: 1、      实现txt文件在浏览器里显示。 2、      Tif文件在浏览器显示。 一日工作总结 工作1完成,T...

工作记录日志软件

  • 2013-01-07 14:33
  • 2.30MB
  • 下载

SQL工作日志清理

  • 2014-03-27 08:14
  • 332KB
  • 下载

Oracle9i LogMiner日志分析工具入门

Oracle9i LogMiner日志分析工具入门参考:http://www.itpub.net/showthread.php?s=&threadid=51414http://www.chinauni...

wss工作日志管理软件

  • 2014-07-20 15:15
  • 1.83MB
  • 下载

【ZooKeeper Notes 9】ZooKeepr日志清理

在使用zookeeper过程中,我们知道,会有dataDir和dataLogDir两个目录,分别用于snapshot和事务日志的输出(默认情况下只有dataDir目录,snapshot和事务日志都保存...

工作日志程序

  • 2005-12-02 10:36
  • 96KB
  • 下载

工作日志工具_v4.0

  • 2014-01-03 09:12
  • 181KB
  • 下载

redis3.0集群 日志出现 Backgroud saving terminated by signal 9

出现Backgroud saving terminated by signal 9 ,之前有看到过一篇文章讲述。redis服务大量占用系统内存,导致只读不写。随即查看系统内存如下[root@adve...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)