欢迎光临
我们一直在努力

巧用echo命令解决Samba批量添加用户难题

今天在张戈博客看到一篇使用echo命令解决Samba批量添加用户难题个人感觉挺实用的,这里分享给大家。

Samba的专业解释我就不贴了,百度百科啥的都有。说白了就是Samba安装到Linux服务器上之后,就可以将服务器上的目录映射到Windows、MAC等个人电脑上,类似于Windows的文件共享,使用相当方便,因此,Samba成了组内开发同事的刚需软件。。。(其实对于使用云服务器的站长,Samba可比FTP好用多了,直接本地编译。。。这个后面有空再介绍吧)

巧用echo命令解决Samba批量添加用户难题

这批开发测试机大部分都是基于Centos的linux系统,所以使用yum install -y samba 就能安装了。安装后发现需要在每台服务器上都配置组内30多个成员的samba账号,手工单个的加太苦逼了,于是写了一个Samba批量添加用户的脚本了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh
# FileName: addsmbuser.sh
# Useage : sh addsmbuser.sh userlistfile / username
#批量添加用户
add_list(){
    #从userlist中读取用户帐号并循环添加
    cat $1 | while read username
    do
        #利用echo -e 的回车功能解决smbpasswd需要交互的问题,比expect简单多了
        echo e “$username/n$username” | smbpasswd a $username s
        #如果添加成功,则新建家目录,避免首次直接登陆samba失败,适合公司铁将军鉴权方式,其他环境可以省略
        if [[ 0 = $? ]]
        then
            mkdir p /home/$username
            chown R $username:users /home/$username
        fi
    done
}
#单个添加用户
add_one() {
   echo e “$1/n$1” | smbpasswd a $1 s && (
       mkdir p /home/$1
       chown R $1:users /home/$1
   )
}
 
# 先确认系统安装了samba,如果没有就安装
which smbpasswd || yum install y samba
 
#如果参数1是文件那么执行批量添加,否则就单个添加
if [[ ! z $1 ]];then
    test f $1 && (
        add_list $1
    ) || (
        add_one $1
    )
else
    echo “Usage: $0 username / userlistfile”
    exit 1
fi

使用也非常简单,将如上代码保存为 addsmbuser.sh,然后将需要添加的用户名一行一个保存到一个文本文件,比如userlist,然后执行

1
sh addsmbuser.sh userlist

就能批量添加这些用户了,初始密码和用户名一致。

当然,直接执行sh addsmbuser.sh  + 用户名还能添加单个用户

由于smbpasswd正常使用是需要交互进行的,也就是输入用户名,再输入密码,这种批量交互的活完全可以使用expect脚本来完成。但是本文比较巧妙的利用了echo -e 可以输出回车符(/n)的特性,非常轻巧的完成了任务。

暂时就写这么多,后面有时间再整理下坑爹的SuSE下如何编译安装Samba,以及Samba的简单使用。

本文转载至:巧用echo命令解决Samba批量添加用户难题 | 张戈博客

赞(0) 打赏
未经允许不得转载:中国宏阔黑客联盟|白帽黑客|网络渗透技术|网站安全|移动安全|通信安全 » 巧用echo命令解决Samba批量添加用户难题
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏