练习:写一个脚本
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示有多少个这类用户;否则,就显示没有这类用户;
#!/bin/bash # grep '<bash$' /etc/passwd &> /dev/null RETVAL=$? if [ $RETVAL -eq 0 ]; then USERS=`grep "<bash$" /etc/passwd | wc -l` echo "hava $USERS users use default bash" else echo "没有默认使用bash的用户"
fi
练习:写一个脚本
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示其中一个的用户名;否则,就显示没有这类用户;
#!/bin/bash # grep '<bash$' /etc/passwd &> /dev/null RETVAL=$? if [ $RETVAL -eq 0 ]; then USER=`grep "<bash$" /etc/passwd | head -1 | cut -d: -f1` echo "user $USER use default bash" else echo "没有默认使用bash的用户" fi
练习:写一个脚本
给定一个文件,比如/etc/inittab
判断这个文件中是否有空白行;
如果有,则显示其空白行数;否则,显示没有空白行。
#!/bin/bash grep "^$" /etc/inittab &> /dev/null RETVAL=$? if [ $RETVAT -eq 0 ]; then echo "没有空白行" else NUM=`grep "^$" /etc/inittab | wc -l` echo "有$NUM空白行"
fi
练习:写一个脚本
给定一个用户,判断其UID与GID是否一样
如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”。
#!/bin/bash # USERNAME="user1" USERID=`id -u $USERNAME` GROUPID=`id -g $USERNAME` if [ USERID -eq GROUPID ]; then echo "good guy" else echo "bad guy" fi
#!/bin/bash # USERNAME=user1 USERID=`grep "^$USERNAME>" /etc/passwd | cut -d: -f3` GROUPID=`grep "^$USERNAME>" /etc/passwd | cut -d: -f4` if [ USERID -eq GROUPID ]; then echo "good guy" else echo "bad guy" fi
练习:写一个脚本
给定一个用户,获取其密码警告期限;
而后判断用户密码使用期限是否已经小于警告期限;
提示:计算方法,最长使用期限减去已经使用的天数即为剩余使用期限;
如果小于,则显示“Warning”;否则,就显示“OK”。
expr : 圆整:丢弃小数点后的所有内容#!/bin/bash#
#!/bin/bash
USER=root
id -u $USER &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then WARNDATE=`grep "^$USER>" /etc/shadow | cut -d: -f6` LATESTDATE=`grep "^$USER>" /etc/shadow | cut -d: -f3` MAXDATE=`grep "^$USER>" /etc/shadow | cut -d: -f5` MILLS=`date +%s` NOWDATEUSED=`expr $MILLS / 86400` SY=$[$MAXDATE - $[$NOWDATEUSED - LATESTDATE]] if [ $SY -gt $WARNDATE ];then echo "OK" else echo "Warning" fi
else
exit
fi
#!/bin/bash USER=root if ! grep "^$USER>" /etc/shadow; then exit 1 fi WARNDATE=`grep "^$USER>" /etc/shadow | cut -d: -f6` LATESTDATE=`grep "^$USER>" /etc/shadow | cut -d: -f3` MAXDATE=`grep "^$USER>" /etc/shadow | cut -d: -f5` MILLS=`date +%s` NOWDATEUSED=`expr $MILLS / 86400` SY=$[$MAXDATE - $[$NOWDATEUSED - LATESTDATE]] if [ $SY -gt $WARNDATE ];then echo "OK" else echo "Warning" fi
练习:写一个脚本
判定命令历史中历史命令的总条目是否大于1000;如果大于,则显示“Some command will gone.”;否则显示“OK”。
#!/bin/bash SUM=`history | tail -1 | cut -d' ' -f3` if [ $SUM -lt 50 ]; then echo 'Some command will gone' else echo 'ok' fi
练习:写一个脚本
给定一个文件:
如果是一个普通文件,就显示之;
如果是一个目录,亦显示之;
否则,此为无法识别之文件;
#!/bin/bash # FILE=/etc/rc.d/sysinit if [ ! -e $FILE ]; then echo 'no such file' exit 6 elif [ -d $FILE ]; then echo 'this is a directory' elif [ -f $FILE ]; then echo 'this is a common file' else echo 'unknow file' fi
练习:写一个脚本
给脚本传递两个参数(整数);
显示此两者之和,之乘积;
#!/bin/bash #if [ $# -eq 0 ]; then echo '没有传递参数' elif [ $# -lt 2 ]; then echo '需要两个参数' else SUM1=$[$1+$@] SUM2=$[$1*$2]echo "和为$SUM1,积为$SUM2" fi
写一个脚本:
1.添加10个用户user1到user10, 密码同用户名;但要求只有用户不存在的情况才能添加;
#!/bin/bash # for I in {1..10}; do if ! id user$I &>/dev/null; then useradd user$I echo "user$I" | passwd --stdin user$I else echo "user$I exists" fi done
删除上述十个用户
#!/bin/bash # for I in {1..10}; do if id user$I &> /dev/null; then userdel -r user$I &> /dev/null echo "user$I deleted" else echo "user$I not exists" fi done
扩展: 根据输入参数进行添加或删除指定几个用户,
#!/bin/bash 2 # 3 if [ $# -lt 1 ]; then 4 echo "Usage: No ARGs" 5 fi 6 if [ $1 == "--add" ]; then 7 for I in `echo $2 | sed 's/,/ /g'`; do 8 if id $I &> /dev/null; then 9 echo "$I exists" 10 else 11 useradd $I 12 echo $I | passwd --stdin $I &> /dev/null 13 echo "Add $I finished" 14 fi 15 done 16 elif [ $1 == "--del" ]; then 17 for I in `echo $2 | sed 's/,/ /g'`; do 18 if ! id $I &> /dev/null; then 19 echo "$I not exists" 20 else 21 userdel -r $I 22 echo "Delete $I finished" 23 fi