【问题标题】:BASH script to add username, password and multiple groups用于添加用户名、密码和多个组的 BASH 脚本
【发布时间】:2015-09-27 17:06:20
【问题描述】:

假设:

我有一个名为 users.txt

的文件
username:password:groups
user1:password:group1,group2,group3
user2:password:group3
user3:password:group1,group3
user4:password:group2,group3

代码

#!/bin/bash
FILENAME="users.txt"

while IFS=':' read USERNAME PASSWORD GROUPS
do

    echo "USERNAME" $USERNAME "PASSWORD" $PASSWORD "GROUPS" $GROUPS

done < "$FILENAME"

我希望能够添加一组用户来进行 samba 共享。我有完整的用户列表要输入。我主要是在团体方面遇到困难。

两个最大的问题是,如何将组作为一个字符串以及如何加密密码。

我已经浏览了这个网站上的所有教程,但没有一个是有效的。

简单易懂的代码真的很有帮助。谢谢。

更新完成的工作示例

#!/bin/bash
# set filename
FILENAME="users.txt"

# loop through file 
while IFS=':' read USERNAME PASSWORD GROUPNAMES
do

    # add user and assign groups
    echo " "
    echo "ADDING USER: " $USERNAME
    useradd $USERNAME -G $GROUPNAMES

    # add password
    echo -e "$PASSWORD\n$PASSWORD\n" | passwd $USERNAME

    # add user to samba
    echo -e "$PASSWORD\n$PASSWORD\n" | smbpasswd -a $USERNAME

done < "$FILENAME"

【问题讨论】:

  • 避免使用全部大写的变量,你可能会与内置变量发生冲突。
  • 谢谢,我得到了它的工作,但我会知道的未来。

标签: bash multiple-users


【解决方案1】:

不要使用 GROUPS 作为变量名:它是系统已经使用的只读变量。只需更改此变量的名称即可。

【讨论】:

  • 好点和有用的建议,但不是答案。
  • @Tom Fenech 你能解释一下吗?我测试了它,它使脚本工作。是关于加密问题吗?
  • 天哪!我很沮丧,这很容易!这是我遇到的第一个问题,无法解决。谢谢!
  • 是的,我仍然需要弄清楚加密部分,但我的其余代码将很容易弄清楚。我主要被困在为什么 GROUPS 不起作用。
  • 抱歉,我误解了这个问题。我不清楚while read 没有正确设置变量,我认为他们在问如何使用它们。来自我的 +1。
【解决方案2】:

我不确定密码加密部分,但我可以对组提出建议。在循环内部,您可以这样做:

read -ra groups_array -d, <<<"$groups"

现在您有了一个数组,其中包含每个组作为一个元素。您可以使用扩展 "${groups_array[@]}" 将它们作为单独的参数传递给命令,或者使用 "${groups_array[0]}""${groups_array[1]}" 等单独访问它们。

请注意,我使用的是小写的变量名——这是故意的。应保留大写名称以供 shell 使用,否则您将面临覆盖重要名称的风险。

【讨论】:

    【解决方案3】:

    上面的优秀脚本:我使用代码共同创建了这个工作版本。

    #!/bin/bash

    此方法将 bash 代码和数据仅包含在一个文件中

    安装此文件,运行它并立即将其删除,以备将来用于新服务器等。

    函数 setupUser()
    {

    首先,在 linux 和 samba 中删除用户的旧实例

    echo "删除用户:" $1 smbpasswd -d $1 用户删除 $1

    现在在 linux 和 samba 中添加新用户

    echo "添加用户:"$1 useradd $1 -G nogroup 回声 -e "$2\n$2\n" |密码 $1 回声 -e "$2\n$2\n" | smbpasswd -a $1 }

    #--------------------------------------------- -----------------------------

    setupUser 汤姆秘密 setupUser dick 秘密 setupUser harry secret

    【讨论】:

    • 请尊重 SO 风格指南并相应更改您的格式,谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-11-02
    • 2011-01-10
    • 2021-02-21
    • 1970-01-01
    • 2021-11-15
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多