练习:
1.编写脚本/bin/per.sh,判断当前用户对指定的参数文件,是否不可读并且不可写
#*********************脚本内容如下********************
echo 请输入需要查看的文件路径
read file_path
A=1
B=1
cat $file_path &> /dev/null
A=$(echo $?)
touch $file_path &> /dev/null
B=$(echo $?)
[[ A -eq 1 && B -eq 1 ]] && echo 不可读不可写
[[ A -gt B ]] && echo 不可读,可写
[[ A -lt B ]] && echo 可读,不可写
[[ A -eq 0 && B -eq 0 ]] && echo 可读 可写
2.编写脚本/root/bin/excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件
#*********************脚本内容如下********************
echo 请输入文件名
read filename
[ -f $filename ] && ls -l $filename|grep "\.sh$" && chmod 777 $filename ||echo 该文件>不是.sh文件
3.编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统
#*********************脚本内容如下********************
echo 请输入用户名
read username
echo 选择需要执行的操作:A.禁止登陆 B.允许登陆
read set
[[ $set != A && $set != B ]] && (echo 您输入的不符合规定 ;exit)
echo $set |grep "A" &>/dev/null && usermod -s /sbin/nologin $username|echo "禁止$username 登陆"
echo $set |grep "B" &>/dev/null && usermod -s /bin/login $username|echo "允许$username 登陆"
编写一个脚本/root/bin/createuser.sh,脚本的执行语法必须是:createuser.sh -u username -m password,选项与参数间可支持多空格,但不能顺序颠倒。
当未指定正确的选项或参数时,以错误输出方式提示“createuser.sh -u username -m password ”后退出脚本。
合法用户名的正则提取
用户名必须以字母开头,可包括数字和_。否则不合法。以错误输出提示用户”用户名仅包含字母数据和下划线”
当用户名检测合法后,判断用户名是否已存在,若存在,再判断用户是否已设置过密码,若设置过密码,直接退出,
未设置,则将密码设置为所指定的密码后以正确输出方式显示“username 密码已更新后退出”
当用户名不存在,则创建用户,并为该用户设置所指定的密码后以正确输出方式显示“用户username已创建并更新密码”
要求脚本执行过程中不能有非要求的其他输出结果出现。脚本在非正确方式退出时应反回给?参数非0值。
#*********************脚本内容如下********************
#!/bin/bash
if [ $# -ne 4 ];then
echo "createuser.sh -u username -m password"
exit
elif [ $1 != "-u" ];then
echo "createuser.sh -u username -m password"
exit
elif [ $3 != "-m" ];then
echo "createuser.sh -u username -m password"
exit
fi
User_2=$(echo $2 |grep "^[[:alpha:]][_[:alnum:]]*" -o)
[[ $User_2 == $2 ]]&&echo "用户名合法"||(echo "用户名不合法";exit)
id $2 &>/dev/null &&
echo "此 id 已存在哦" &&
(cat /etc/shadow |grep "$2.\!\!"&>/dev/null&& echo $4|passwd --stdin $2 &&echo "用户密>码更新成功")||
(useradd $2 && echo "$4"|passwd --stdin $2 && echo $2 用户创建成功 &>/dev/null)||
echo 有密码