批量添加 samba用户之echo的活用

samba是什么?能干什么?什么场合需要用到它?

samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标。SMB是一种Linux、UNIX系统上可用于共享文件和打印机等资源的协议,这种协议是基于Client\Server型的协议,Client端可以通过SMB访问到Server(服务器)上的共享资源当Windows是 Client,CentOS是服务器时,通过Samba就可以实现window访问Linux的资源,实现两个系统间的数据交互。Linux对于开发来说是一个非常好的系统,但是人机友好不如windows,我就通常在windows上用sourceinsight编辑代码,然后在Linux端编译运行,而且经常需要把音视频从Linux和windows端互相拷贝,这时候Samba就显得很方便了。

下面的是实现脚本一次添加多个用户.smb创建用户的时候需要交互,这里用到 echo 很好的解决了这个问题 .

添加的用户前提是系统的用户,不然在添加smb 用户的时候会提示Failed to add entry for user的错误.

#!/bin/sh
# FileName: smbuser.sh
# Useage : sh smbbuser.sh userfile / 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 / userfile"
    exit 1
fi

使用方法,将如上代码保存为 smbuser.sh,然后将需要添加的用户名一行一个保存到一个文本文件,比如userfile,然后执行 bash smbuser.sh userfile 就能批量添加这些用户了,初始密码和用户名一致。

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

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


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值