专栏首页张戈的专栏巧用echo命令解决Samba批量添加用户难题

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

最近实在太忙,没时间研究和折腾,所以也没有什么可以分享到博客的。果然,个人博客坚持原创太不不容易了。张戈博客上线 2 年多,从 1 天多更,到一天 1 更、一周一更,直到现在 2 星期可能有一更的节奏。。。

好了,废话不说了。翻了翻在工作上的印象笔记,发现还是有一些存货可以分享的。

挺久之前,组内新申请了一批开发测试机,需要部署环境。除了一些常见的软件要安装之外,还有一个我之前很少用到的 Samba。

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

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

#!/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,然后执行 sh addsmbuser.sh userlist 就能批量添加这些用户了,初始密码和用户名一致。

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Win平台Web访问白名单设置脚本(IP安全性原则)

    最近老是有用户申请开通某网站的访问权限,我接手之前浏览权限的设置方法是修改 tomcat 下的 server.xml 配置文件,通过定义 allow="IP.....

    张戈
  • MySQL错误修复:Table xx is marked as crashed and last (automatic?) repair failed

    有站长找到我,说数据库坏了,访问网站报错如下: Error establishing a database connection 看了下 MySQL 的错误日志...

    张戈
  • 桌面白屏(Active故障)修复批处理

    一年前我在做用户系统维护服务工作时发现 AD 域环境下,AD 用户桌面经常会出现壁纸无法显示,ActiveDesktop 桌面损坏之类的故障,当时从前人心得里学...

    张戈
  • mpc5748g sdhc调试

    本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/debug-mpc5748g-devkit-sdhc-module/

    羽翰尘
  • 多少人曾爱慕你年轻时的容颜,可知谁愿帮你挡一百G的碎片

    腾讯云安全
  • Epson推新款AR智能眼镜,可应用于危险环境下的作业

    Epson凭借其Moverio系列的智能眼镜在AR智能眼镜领域占有一席之地。如今,该公司又推出了Moverio BT-350 ANSI版智能眼镜,将安全与AR结...

    VRPinea
  • 前沿观察 | 图数据库项目DGraph的前世今生

    版权声明:本文由腾讯云数据库产品团队整理,页面原始内容来自于db weekly英文官网,若转载请注明出处。翻译目的在于传递更多全球最新数据库领域相关信息,并不意...

    腾讯云数据库 TencentDB
  • SQL从入门到入魔之数据库基本操作

    所有这些信息都可以传递给mysql命令行实用程序,或输入到MySQL Administrator和MySQL Query Browser的服务器连接屏幕。

    ITester软件测试小栈
  • Android高德之旅(3)UI Setting

    前两篇讲到了地图的基础显示和地图类型,今天来记录下高德地图交互相关的设置。地图的触摸事件很丰富,有单击、双击、单指拖拽、双指拖拽、双指旋转、双指缩放等,高德提供...

    大公爵
  • 前沿观察 | 图数据库项目DGraph的前世今生

    ? 作者:ManishRai Jain  Dgraph Labs创始人 版权声明:本文由腾讯云数据库产品团队整理,页面原始内容来自于db weekly英文官网...

    腾讯云数据库 TencentDB

扫码关注云+社区

领取腾讯云代金券