Linux学习—脚本练习题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习—脚本练习题相关的知识,希望对你有一定的参考价值。
shell脚本练习
1、编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满
#!/bin/bash #编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满 #************************************************************************************************* #!/bin/bash disk_max=$(df |grep "sda" |grep -o "[[:digit:]]\{1,3\}%" |tr -d "%" |sort |tail -1) inode_max=$(df -i|grep "sda" |grep -o "[[:digit:]]\{1,3\}%" |tr -d "%" |sort |tail -1) [ $disk_max -gt 80 -o $inode_max -gt 80 ] && wall space will be full
2、编写脚本/bin/per.sh,判断当前用户对指定的参数文件,是否不可读并且不可写(可用shadow文件验证)
#!/bin/bash #编写脚本/bin/per.sh,判断当前用户对指定的参数文件,是否不可读并且不可写 #*********************************************************************************** read -p "请输入文件: " file if [ ! -r $file -a ! -w $file ] ; then echo "不可读且不可写" fi
3、编写脚本/root/bin/excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件(创建一个文件test.sh验证)
#!/bin/bash #编写脚本/root/bin/excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执 #权限,否则提示用户非脚本文件 #************************************************************************************** read -p "Please input a filename: " file if [[ $file =~ .*sh$ ]] ; then if [ -f $file ] ; then chmod a+x $file echo "success" fi else echo '非脚本文件' fi
4、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统
#!/bin/bash #编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统 #*************************************************************************************** read -p "请输入禁止的用户:" user uid=$( id $user |tr " " @ |cut [email protected] -f1 |grep -o "[0-9]\{3,\}" ) [ $uid -ge 500 ] && usermod -s /bin/nologin $user || echo '该用户为系统用户,无法禁止!' echo '该用户已禁止登陆'
#!/bin/bash read -p "请输入允许登录的用户:" user uid=$( id $user |tr " " @ |cut [email protected] -f1 |grep -o "[0-9]\{3,\}" ) [ $uid -ge 500 ] && usermod -s /bin/bash $user || echo '该用户为系统用户' echo '该用户已允许登陆'
5、让所有用户的PATH环境变量的值多出一个路径,例如:/usr/local/apache/bin
echo "PATH=$PATH:/usr/local/apache/bin">>/etc/profile.d/path.sh
6、编写用户的环境初始化脚本reset.sh,包括别名,登录提示符,vim的设置,环境变量等
一旦执行reset.sh,会设置以下内容
创建一个别名为ipconfig功能是显示第一个网卡的IP
设置提示符为绿色
设置vim自动显示行号
设置登录后的欢迎界面(内容自定义)
#!/bin/bash #编写用户的环境初始化脚本reset.sh,包括别名,登录提示符,vim的设置,环境变量等一旦执行reset.sh,会设置以下内容 # 创建一个别名为ipconfig功能是显示第一个网卡的IP # 设置提示符为绿色 # 设置vim自动显示行号 # 设置登录后的欢迎界面(内容自定义) #**************************************************************************************************************** cat <<EOF >> ~/.bashrc alias ipconfig='ifconfig etho' PS1='\[\e[32;40m\][\[email protected]\h \W]\$ ' EOF cat <<EOF >> ~/.vimrc set nu EOF echo 'echo welcome' >> /etc/bashrc
7、编写一个创建用户的脚本,要求以下功能
a.提示用户输入希望创建的用户名(当用户超时8秒不输入,提示超时并退出)
b.检测用户名是否已存在,若存在则提示用户名已存在,并退出。
c.用户创建完成后提示用户是否要继续设置密码,若用户输入yes、YES、y、Y时则继续下一步,如输入其他,或超时8秒均退出。
d.接上一步,为用户设置密码,首先提示用户输入要设置的密码,密码的输入过程不可见。
e.对用户上一步所输入的密码进行长度检测,若少于5位(包含5位),则提示用户密码太短,并退出。
f.对用户在第d步所输入的密码进行复杂度检测,若所输入的内容与/usr/share/dict/words 字典中的某一行条目完全一致,则提示密码是一个常见单词,并退出。
g.再一次让用户输入密码,若第二次输入的密码与在第d步输入的不一致,则提示用户两次密码不一致并退出。
h.d至g步骤全部通过后,为用户设置密码后,并提示密码已成功设置。最后正确退出。
以上的所有退出情况应给出不同的返回值。
#!/bin/bash #**************************************** #a.提示用户输入希望创建的用户名(当用户超时8秒不输入,提示超时并退出) #b.检测用户名是否已存在,若存在则提示用户名已存在,并退出 #c.用户创建完成后提示用户是否要继续设置密码,若用户输入yes、YES、y、Y时则继续下一步,如输入其他,或超时8秒均退出。 #d.接上一步,为用户设置密码,首先提示用户输入要设置的密码,密码的输入过程不可见 #e.对用户上一步所输入的密码进行长度检测,若少于5位(包含5位),则提示用户密码太短,并退出 #f.对用户在第d步所输入的密码进行复杂度检测,若所输入的内容与/usr/share/dict/words 字典中的某一行条目完全一致,则提示密码是一个常见单词,并退出 #g.再一次让用户输入密码,若第二次输入的密码与在第d步输入的不一致,则提示用户两次密码不一致并退出 #h.d至g步骤全部通过后,为用户设置密码后,并提示密码已成功设置。最后正确退出。 #以上的所有退出情况应给出不同的返回值。 #***************************************** read -t 8 -p "请输入创建的用户: " user if [ "$(echo $?)" -ne "0" ] ; then echo '超时' exit 1 fi A=$(cat /etc/passwd |cut -d: -f1 |grep "$user\>") if [ -n "$A" ] ; then echo '用户已存在' exit 2 fi useradd $user read -t 8 -p "是否设置密码? " answer || exit 3 case $answer in yes | YES | y | Y ) read -s -p "请输入至少五位密码: " password if [ "$(echo $password |grep -o "." |grep -c ".")" -le "5" ] ; then echo '密码太短' exit 4 else if [ "$password" == "$(cat /usr/share/dict/words |grep -o "\<$password\>")" ] ; then echo '密码是一个常见单词' exit 5 fi fi ;; * ) exit 6 ;; esac read -p "请再次输入密码: " password_confirm if [ "$password" == "$password_confirm" ] ; then echo '密码设置成功' exit else echo '两次密码输入不一致' exit 7 fi
以上是关于Linux学习—脚本练习题的主要内容,如果未能解决你的问题,请参考以下文章