博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux Shell 通过传参的方式往/etc/user.conf里添加用户
阅读量:6120 次
发布时间:2019-06-21

本文共 1497 字,大约阅读时间需要 4 分钟。

实现通过传参的方式往/etc/user.conf里添加用户,具体要求如下:

1)命令用法:
USAGE: sh adduser {-add|-del|-search} username
2)传参要求:
如果参数为-add时,表示添加后面接的用户名,
如果参数为-del时,表示删除后面接的用户名,
如果参数为-search时,表示查找后面接的用户名,
3)如果有同名的用户则不能添加,没有对应用户则无需删除,查找到用户以及没有用户时给出明确提示。
4)/etc/user.conf不能被所有外部用户直接删除及修改

分析

1、判断文件是否存储,不存在先创建;判断用户执行次脚本时传参格式是否符合要求,包括:a、参数是否是2个,可以通过$#判断;b、格式是否符合要求,是否为-add username;c、执行脚本的用户是否为root
2、因为添加、删除、查询用户前要先判断用户是否存在文件中,一次有2个判断条件,不考虑用case语句,可以用if..else..,先对符合要求的进行判断,其余的做else处理

注意

判断用户是否存在文件中我使用了grep "^$2$" $file | wc -l,^$2$是为了精准匹配,避免删除用户wang,将wang1、wang2、wang3都删除;且改语句要放在对用户输入参数判断之后,确保有参数$2,否则grep会卡死。

答案:

#!/bin/bash

file="/etc/user.conf"

if [ ! -f $file ];then
touch $file
elif [ $# -ne 2 ];then
echo "USAGE: sh adduser {-add|-del|-search} {username|\"username\"}"
exit 0
elif [ ! "$UID" = 0 ];then
echo "Please use the root user operation"
exit 0
fi

comp=grep "^$2$" $file | wc -l

if [ $1 = "-add" -a $comp -ne 1 ];then

echo $2>>$file && echo "Account $2 add successfule!!"
elif [ $1 = "-add" -a $comp -eq 1 ];then
echo "Account $2 exist,add fail!"
elif [ $1 = "-del" -a $comp -ge 1 ];then
sed -i "/^$2$/d" $file && echo "Account $2 delete successful!!!"
elif [ $1 = "-del" -a $comp -lt 1 ];then
echo "Account $2 dose not exist,delete fail!"
elif [ $1 = "-search" -a $comp -ge 1 ];then
echo "Account grep "^$2$" $file is exist"
elif [ $1 = "-search" -a $comp -ne 1 ];then
echo "Account $2 does not exist!"
else
echo "USAGE: sh adduser {-add|-del|-search} username"
exit 0
fi

转载于:https://blog.51cto.com/252885/2327806

你可能感兴趣的文章
Web语音处理 - Web Audio API & WebRTC
查看>>
org.tinygroup.validatecomponent-流程校验组件
查看>>
Linux磁盘管理和文件系统管理
查看>>
我的友情链接
查看>>
Jumpserver堡垒机安装配置全过程(二)-配置
查看>>
iOS layer
查看>>
我的友情链接
查看>>
第一次自己写存储过程去进行设备录入——存做纪念
查看>>
我的友情链接
查看>>
PTR的故事
查看>>
Exchange2013灾难恢复演练--Exchange管理员必须掌握的技能
查看>>
本地ASP.NET开发页面使用AzureAD(AAD)验证登录
查看>>
5年了..
查看>>
使用域组策略/脚本统一配置防火墙
查看>>
我的友情链接
查看>>
开源网络备份软件bacula安装配置(一)
查看>>
二进制相关
查看>>
FreeBSD防火墙浅解
查看>>
OpenStack网络模块核心OpenvSwitch的全面解读
查看>>
命令screen
查看>>