企业真实shell面试题,一起来挑战把!
声明:如有雷同,纯属抄袭
1、好消息,老男孩培训学生外出企业项目实践机会(第6次)来了(本月中旬),但是,名额有限,队员限3人(班长带队)。
因此需要挑选学生,因此需要一个抓阄的程序:
要求:
1)、执行脚本后,想去的同学输入英文名字全拼,产生随机数01-99之间的数字,数字越大就去参加项目实践,前面已经抓到的数字,下次不能在出现相同数字。
2)、第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出继续等待别的学生输入。
[root@xiaoya scripts]# cat urandom.sh
##########################################
#!/bin/sh
#author tom
#time 2016-1-10
#function select the students to study
#version 4.1.2
##########################################
#no.1
while true
do
read -p "Pls input your english name :" name
if [ ${#name} -eq 0 ]
then
echo "Error :Pls input your name"
continue
else
NUM=$(echo $RANDOM|cut -b 1-2)
NUM1=$(awk -F " " '{print $2}' ~/random.txt|grep $NUM)
if [ -z $NUM1 ]
then
echo $name $NUM
echo "$name $NUM" >>~/random.txt
else
echo "Error: $NUM is already in use, Pls input your name once again"
fi
fi
done
2、已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果,请破解这些字符串对应的md5sum前的RANDOM对应数字?
30290 02690686
18945 1ea71781
24489 9267686d
14894 06a42db1
[root@xiaoya scripts]# cat pojie_urandom.sh
#####################################
#!/bin/sh
#author tom
#time 2016-1-11
#####################################
array=(
02690686
1ea71781
9267686d
06a42db1
)
for n in {0..32767}
do
SUM=$(echo $n|md5sum|cut -c 1-8)
for i in ${array[*]}
do
if [ $SUM == $i ]
then
echo "$n is $SUM"
fi
done
done
3、批量检查多个网站地址是否正常
要求:shell数组方法实现,检测策略尽量模拟用户访问思路
[root@xiaoya scripts]# cat check_html.sh
#!/bin/sh
HTML=(
http://www.etiantian.org
http://www.taobao.com
http://oldboy.blog.51cto.com
http://10.0.0.7
)
for n in ${HTML[*]}
do
NUM=$(curl -I baidu.com 2>/dev/null|egrep "200|301"|awk -F " " '{print $2}'|wc -l)
if [ $NUM -eq 1 ]
then
echo "$n is running ok"
else
echo "$n is go to bad"
fi
done
4、