管理思路:
将用户名以及随机生成的密码存在以用户组为名称的文本文件中,通过shell添加(系统用户添加、smb用户添加、文本文件添加)或者删除(同添加)用户,
经过实践发现不用本地文件存账号密码的话会简单很多,所以代码里面是第二个版本,
添加:
1、历遍所有文本文件,与smbpasswd(已添加用户名称)对比,添加未添加用户
2、提供选项,手动添加输入用户名,并选择当前已存在用户组添加
3、用户组添加
删除:
1、查询被删除用户所处用户组文件位置,删除,删除smb用户,删除系统用户
2、从指定被删除文件中读取(每行一个用户)按照1、的方式删除
3、用户组删除
查询:
1、查询用户是否存在,3个位置查询,并显示查询结果
2、用户组查询
密码重置:
1、将指定用户密码修改为新的随机字符串,并更新用户组文本文件中对应位置
用到的相关命令如下:
文本处理:
cat -n smbpasswd | awk -F ':' '{print $1}' | awk '{print $1 $2}' #cat -n 显示行数,awk -F ':' 以':'为分隔符,显示第一个字段,以空格为分隔符显示第一、二个字段
文件内操作:
sed -i "2d" $file1 # 删除文件$file1 的第二行
系统命令:
# 一键添加系统用户及密码: useradd -g $group1 -M $user1 -s /sbin/nologin && echo "$passwd1" | passwd --stdin $user1 # 将$user1添加到$group1组,不创建用户文件夹,并且禁止shell登录 && 为$user1添加密码 $passwd1 echo -e "$passwd1\n$passwd1" | smbpasswd -a -s $user1 # 添加密码为$passwd1的$user1为smb账号
随机密码:
< /dev/urandom tr -dc a-z0-9 | head -c6; echo "" # 生成a-z0-9的6位随机字符
shell如下:
经过实践发现不用本地文件存账号密码的话会简单很多
#!/bin/bash #20170309 11:51 sevenfal.com #是否开启发送邮件功能(1开启/0关闭) mail_=1 #/etc/mail.rc最后添加如下内容 #set from=邮箱地址 smtp=smtp服务器地址 #set smtp-auth-user=邮箱账号 smtp-auth-password=邮箱密码 smtp-auth=login rapass() { #生成6位数的随机密码 < /dev/urandom tr -dc a-z0-9 | head -c6 } listgroup() { #列出手动添加的用户组 awk -F ':' '{if ($3>=500) {print $1}}' /etc/group } groupmem() { #查询组中的所有成员 grep `grep -w $1 /etc/group |awk -F: '{print $3}'` /etc/passwd | awk -F: '{print $1}' } deluser() { #删除用户 local val for val in $1 do smbpasswd -x $val userdel $val done } setgroupuser() { read -p "输入将要添加到的用户组:" group2 usermod -G $group2 $1 } resetuser() { local pass=`rapass` echo "$pass" | passwd --stdin $1 local error_level=$? if [ $error_level == 1 ] then echo "用户密码设置失败!" echo "error_res $1 $pass" >> /etc/samba/smbmanage.log echo "已记录密码设置失败账号,重新运行此脚本可恢复设置" elif [ $error_level == 0 ]; then echo -e "${2}123\n${2}123" | smbpasswd -a -s $1 if [ $mail_ == 1 ]; then echo "你的共享文件服务器账号为:$1,密码为$2,登录 http://192.168.253.11:2000/changepassword.cgi 修改密码后使用,点击查看使用说明 http://192.168.253.11:2000/fileserver/ " | mail -s "你的文件共享服务器账号密码如下" [email protected] ; fi fi } adduser() { #"$user" "$pass" "$group" "user" case "$4" in "user") useradd -g $3 -M -s /sbin/nologin $1 echo "$2" | passwd --stdin $1 if [ $? == 1 ]; then echo "用户密码设置失败!" echo "error_add $1 $2 $3" >> /etc/samba/smbmanage.log echo "已记录密码设置失败账号,重新运行此脚本可恢复设置" more /etc/samba/smbmanage.log elif [ $? == 0 ]; then echo -e "${2}123\n${2}123" | smbpasswd -a -s $1 if [ $mail_ == 1 ]; then echo "你的共享文件服务器账号为:$1,密码为$2,登录 http://192.168.253.11:2000/changepassword.cgi 修改密码后使用,点击查看使用说明 http://192.168.253.11:2000/fileserver/ " | mail -s "你的文件共享服务器账号密码如下" [email protected] ; fi fi ;; "group") ;; *) ;; esac } menu_main() { local user clear menu_main=`cat << EOF Samba 用户管理 v1.0 ******************************* 主菜单 1.添加用户 2.删除用户 3.查找用户 4.重设用户密码 5.修改用户所属组 ******************************* EOF ` echo "$menu_main" read -p "(1/2/3/4/5):" m_cho case "$m_cho" in "1") menu_add ;; "2") read -p "输入需要删除的用户名:" deluser2 deluser $deluser2 ;; "3") read -p "输入需要查找的用户名:" finduser2 groups finduser2 ;; "4") read -p "输入需要重设密码的用户名:" resetuser2 resetuser $resetuser2 ;; "5") read -p "输入需要修改组的用户名:" setgroupuser2 setgroupuser $setgroupuser2 ;; *) echo "输入错误!" menu_main ;; esac } menu_add() { local user local pass local group local val clear listgroup | cat -n read -p "输入将要添加到的用户组数字:" group echo "选择了:"`listgroup | cat -n | grep -w $group | awk -F ' ' '{print $2}'` group=`listgroup | cat -n | grep -w $group | awk -F ' ' '{print $2}'` read -p "输入需添加用户名,同组多个用空格分开:" user for val in $user; do pass=`rapass` adduser "$user" "$pass" "$group" "user" done } menu_main
© 著作权归作者所有
下一篇: php操作系统命令及读文件
文章评论(0)