您的位置:首页 > 运维架构 > Linux

脚 本 练 习 (一)

2015-10-26 22:13 369 查看
1.用脚本批量创建用户user_00 ... user_20, 并且给这些用户设置一个随机密码,并记录到一个日志文件中。

2.让用户输入一个数字,然后判断是否是数字,如果是数字,则打印数字,否则一直让用户输入,直到是数字为止。
3.每隔10秒执行w命令

4.1到10所有数字相加求和
5.当用户输入的数字和预设数字(随机生成一个小于100的数字)一样时,直接退出,否则让用户一直输入,并且提示用户的数字比预设数字大或者小
6.通过传参打印彩色字符串,题目不具体,参考下面看看吧
7.类似于日志切割,系统有个logrotate程序,可以完成归档。但现在我们要自己写一个shell脚本实现归档。 举例: 假如服务的输出日志是1.log,我要求每天归档一个,1.log第二天就变成1.log.1,第三天1.log.2, 第四天 1.log.3 一直到1.log.5。
8.把文档中只有一个数字的行打印出来
9.实现一个乘法口诀输出
10.(比较难)写一个脚本执行后,输入名字,产生随机数01-99之间的数字;
如果相同的名字重复输入,抓到的数字还是第一次抓取的结果;
前面已经抓到的数字,下次不能在出现相同数字;
第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出继续等待别的学生输入。
----------------------------------------------------------------------------------------
-----------------------------------------------1.
#!/bin/bash
for i in `seq -w 0 20`
do
useradd user_$i
passwd=`mkpasswd -s 0`
echo $passwd |passwd --stdin user_$i
echo "user_$i $passwd" >> /tmp/pass.log
done
-------------------------------------------------2.
#!/bin/bash
while :
do
read -p "Please input a number: " n
n1=`echo $n|sed 's/[0-9]//g'`
if [ -z $n1 ]
then
echo $n
exit 0
else
continue
fi
done
--------------------------------------------------3.
#!/bin/bash
while:
do
w
sleep 10
done
---------------------------------------------------4.
#!/bin/bash
i=1
sum=0
while [ $i -le 10 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum
-----------------------------------------------------5.
#!/bin/bash
m=`echo $RANDOM`
n1=$[$m%100]
while :
do
read -p "Please input a number: " n
if [ $n == $n1 ]
then
break
elif [ $n -gt $n1 ]
then
echo "bigger"
continue
else
echo "smaller"
continue
fi
done
echo "You are right."
---------------------------------------------------6.
#!/bin/bash
black_color='\E[1;30m'
red_color='\E[1;31m'
green_color='\E[1;32m'
yellow_color='\E[1;33m'
blue_color='\E[1;34m'
purple_color='\E[1;35m'
cyan_color='\E[1;36m'
white_color='\E[1;37m'
RES='\E[0m'
word=$1
colors=$2
case $2 in
black|BLACK|黑色)
echo -e "$black_color $word $RES"
exit 0
;;
red|RED|红色)
echo -e "$red_color $word $RES"
exit 0
;;
green|GREEN|绿色)
echo -e "$green_color $word $RES"
exit 0
;;
yellow|YELLOW|***)
echo -e "$yellow_color $word $RES"
exit 0
;;
blue|BLUE|蓝色)
echo -e "$blue_color $word $RES"
exit 0
;;
purple|PURPLE|紫色)
echo -e "$purple_color $word $RES"
exit 0
;;
cyan|CYAN|青色)
echo -e "$cyan_color $word $RES"
exit 0
;;
white|WHITE|白色)
echo -e "$white_color $word $RES"
exit 0
;;
*)
echo "Usage: bash $0 word color."
;;
esac


--------------------------------------------------------7.
#!/bin/bash
function e_df()
{
[ -f $1 ] && rm -f $1
}
for i in `seq 5 -1 2`
do
i2=$[$i-1]
e_df /data/1.log.$i
if [ -f /data/1.log.$i2 ]
then
mv /data/1.log.$i2 /data/1.log.$i
fi
done
e_df /data/1.log.1
mv /data/1.log  /data/1.log.1
--------------------------------------------------------8.
#!/bin/bash
f=/etc/passwd
line=`wc -l $f|awk '{print $1}'`
for l in `seq 1 $line`; do
n=`sed -n "$l"p $f|grep -o '[0-9]'|wc -l`;
if [ $n -eq 1 ]; then
sed -n "$l"p $f
fi
done
-------------------------------------------------------9.
#!/bin/bash
for i in `seq 1 9`
do
for j in `seq 1 $i`
do
k=$(($i*$j))
echo -n "$i x $j = $k "
done
echo
done
-----------------------------------------------------10.
#!/bin/bash
while :
do
read -p  "Please input a name:" name
if [ -f /work/test/1.log ];then
bb=`cat /work/test/1.log | awk -F: '{print $1}' | grep
"$name"`
if [ "$bb" != "$name" ];then  #名字不重复情况下
aa=`echo $RANDOM | awk -F "" '{print $2 $3}'`
while :
do
dd=`cat  /work/test/1.log |  awk -F: '{print $2}'  | grep
"$aa"`
if [ "$aa"  ==  "$dd" ];then   #数字已经存在情况下
echo "数字已存在."
aa=`echo $RANDOM | awk -F "" '{print $2 $3}'`
else
break
fi
done
echo "$name:$aa" | tee -a /work/test/1.log
else
aa=`cat /work/test/1.log |  grep "$name" | awk -F: '{print
$2}'` #名字重复
echo $aa
echo "重复名字."
fi
else
aa=`echo $RANDOM | awk -F "" '{print $2 $3}'`
echo "$name:$aa" | tee -a  /work/test/1.log
fi
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux