第一题
写一个脚本,完成以下功能:
1 、提示用户输入一个用户名:
2、显示一个菜单给用户,形如:
U|u show UID
G|g show GID
S|s show SHELL
Q|q quit
3、提醒用户选择一个选项,并显示所选择的内容;如果用户给的是一个非上述所提示的选项,则提醒用户给出的选项错误,并请其重新选择后执行;
#!/bin/bash
#
read -p "Enter a user name:" USER
echo -e "U|u show UID\nG|g show GID\nS|s show SHELL\nquit"
read -p "Enter a word:" WORD
WORD=`echo "$WORD"| tr 'a-z' 'A-Z'`
until [ "$WORD" = U -o "$WORD" = G -o "$WORD" = S -o "$WORD" = Q ]; do
read -p "Enter a word again:" WORD
done
UID1=`grep "^\$USER\>" /etc/passwd | cut -d: -f3`
GID1=`grep "^\$USER\>" /etc/passwd | cut -d: -f4`
SHELL1=`grep "^\$USER\>" /etc/passwd | cut -d: -f7`
if [ "$WORD" = U ]; then
echo $UID1
elif [ "$WORD" = G ]; then
echo $GID1
elif [ "$WORD" = S ]; then
echo $SHELL1
elif [ "$WORD" = Q ]; then
echo "quit"
fi
第二题
写一个脚本:
1、判断一个指定的脚本是否是语法错误;如果有错误,则提醒用户输入Q或者q 无视错误并退出,其他任何键通过vim打开这个指定的脚本;
2、如果用户通过vim打开编辑后保存退出时仍然有错误,则重复第一步的内容;否则,就正常关闭退出。
#!/bin/bash
#
read -p "Press a shelname:" SHELNAME
until bash -n $SHELNAME &> /dev/null;then
read -p "Enter Q|q:" MyWORD
if [ $MYWORD = Q -o $MYWORD = q ]; then
exit 5 ;
else
vim $SHELNAME
fi
done
第三题
写一个脚本:
1、要求用户从键盘输入一个用户名,判断此用户是否存在;如果存在,则返回此用户的默认shell;如果不存在,提醒用户不存在;
2、判断完成以后不要退出脚本,而是继续提示N|n(next)用户输入其他用户名以做出下一个判断,而键入其他任意字符可以退出;
#!/bin/bash
#
read -p "Enter a username:" USER
SHELL2=` grep "^\$USER\>" /etc/passwd | cut -d: -f7`
id $USER &> /dev/null && echo $SHELL2 || echo "The $USER is not."
read -p "Enter N|n:" NEXT
if [ $NEXT = N -o $NEXT = n ]; then
read -p "Enter a username:" USER
id $USER &> /dev/null && echo $SHELL2 || echo "The $USER is not."
else
echo "quit"
fi
第四题
写一个脚本
1、扫描192.168.0网段内的主机的在线状态,但需要提示用户输入一段IP地址范围,方式是指定起始IP和结束IP;显示结果形如:
The host 192.168.0.1 is UP.
The host 192.168.0.2 is DOWN.
2、使用while循环实现;
3、主机在线状态的输出结果既要显示在屏幕上,同时要求所有主机信息也保存一份至/tmp/host_state;
4、分别显示指定范围内所有在线的主机总数和不在线的主机总数;
#!/bin/bash
#
read -p "Enter two number:" A B
until [ $A -le 254 -a $B -le 254 ];do
read -p "Enter the numbers again:" A B
done
if [ $A -gt $B ]; then
START=$B
END=$A
else
START=$A
END=$B
fi
IPA=192.168.0
while [ $START -le $END ];do
if ping -c1 -w1 $IPA.$START &> /dev/null; then
echo "The host $IPA.$START is up." | tee -a /tmp/host_state
let UP++
else
echo "The host $IPA.$START is down." | tee -a /tmp/host_state
let DOWN++
fi
let START++
done
sed 's@.*down@#&@g' /tmp/host_state
echo -e "The down host is $DOWN\nThe up host is $UP."
第五题
写一个脚本:
1、查看redhat用户是否登录了系统,如果登录了,就通知当前脚本执行者“redhat is logged on.” 否则,就睡眠4秒钟后在进行测试;直到其登录为止退出; 要求:使用until循环
#!/bin/bash
#
until echo `who` |grep "redhat" &> /dev/null ;do
sleep 5;
done
echo "redhat is logged on.";
第六题
写一个脚本:
1、向系统中添加20个用户,名字为linuxer1-linuxer20,密码分别为其用户名,要用while循环;
2、要求:在添加每个用户之前事先判断用户是否存在,如果已经存在,则不再添加此用户;
3、添加完成后,显示linuxer1-linuxer20每个用户名及对应的UID号码和GID号码,形如:
stu1,UID: 1000, GID: 1000
#!/bin/bash
#
#
declare -i LINUXER=1
while [ $LINUXER -le 20 ];do
if id linuxer$LINUXER &> /dev/null; then
echo "The user linuxer$LINUXER is exist."
else
useradd linuxer$LINUXER &> /dev/null
echo "Add user linuxer$LINUXER sucessfully."
echo "linuxer$LINUXER" | passwd --stdin linuxer$LINUXER &> /dev/null
echo "Set password for linuxer$LINUXER sucessfully."
fi
let LINUXER++
done
for LINUXER in {1..20};do
UID2=`grep "\<linuxer$LINUXER\>" /etc/passwd | cut -d: -f3`
GID2=`grep "\<linuxer$LINUXER\>" /etc/passwd | cut -d: -f4`
echo "linuxer$LINUXER,UID:$UID2"
echo "linuxer$LINUXER,GID:$GID2"
let LINUXER++
done
unset LINUXER