那些年我们一起做过的shell面试题(三)

企业真实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、

你可能感兴趣的:(shell,面试题)