【问题标题】:Error creating user groups from text file从文本文件创建用户组时出错
【发布时间】:2021-04-26 06:21:44
【问题描述】:

我的脚本有问题:

#!/bin/bash
# El argumento tipo corresponde a usuario o grupo.
# El argumento accion corresponde a crear o eliminar cualquiera de los anteriores.
tipo=$1
accion=$2
if [ $tipo = "usuario" ]; then
    while IFS=, read -r nombre usuario grupo
    do
        if [ $accion = "crear" ]; then
            useradd "$usuario" -c "$nombre" -m -G "$grupo" 
        else
            sudo userdel "$usuario" -r -f
        fi
    done < /tmp/usuarios_fles.txt
    echo "----- Usuarios procesados ----"
    exit 0
else
    while IFS= read -r grupo
    do
        if [ $accion = "crear" ]; then
            groupadd "$grupo"
        else
            groupdel "$grupo" -f
        fi
    done < /tmp/grupos_fles.txt
    exit 0
    echo "----- Grupos procesados ----"
fi

文件:

/tmp/groups_fles.txt

它只包含这些文本字符串:

adminuser
readwriteuser
readuser

它在 Suse 11.3 上给我以下错误,我在 Fedora 33 上测试它并没有显示错误:

'.oupadd: Invalid group name `adminuser
'.oupadd: Invalid group name `readwriteuser
'.oupadd: Invalid group name `readuser

我不知道还有什么办法让它运行

最好的问候...

弗兰克

【问题讨论】:

  • openSUSE 11.3????那是一个11岁和9年过时的版本??但是,我怀疑您的问题是由于组已经存在。使用groupadd -f "$grupo"(并解释为什么不需要sudo?)也就是说,您的问题是“我如何使用groupadd?”在Super UserUnix & Linux 上询问哪个更好。您可能会在正确的 StackExchange 网站上获得更多回复。
  • (我认识 11.3,因为我从 SuSE 7.0 开始使用 SuSE/openSUSE -- 以及 Archlinux 和 Debian...)
  • sudo 用于测试,但细节是创建组时,未创建组,脚本尝试创建它们并给出错误,为什么它在 Fedora 中有效?我在 Suse 中而不是在 OpenSuse 中运行它。
  • 请参阅Stack Overflow 'bash' Info page 的“在询问有问题的代码之前”部分。特别是,检查您的脚本或数据是否具有 DOS 样式的行尾字符。一定要检查/tmp/grupos_fles.txt

标签: bash suse


【解决方案1】:

我是这样解决的:

#!/bin/bash

# El argumento tipo corresponde a usuario o grupo.
# El argumento accion corresponde a crear o eliminar cualquiera de los 
  anteriores.

tipo=$1
accion=$2
archivogrupo="/tmp/grupos.txt"
archivousuario="/tmp/usuarios_flex.txt"

if [ $tipo = "usuario" ]; then
    for linea in $(cat $archivousuario | tr " " _ | tr -d '\r')
    do
        nombre=`echo $linea|cut -d, -f1`
        usuario=`echo $linea|cut -d, -f2`
        grupo=`echo $linea|cut -d, -f3`

        if [ $accion = "crear" ]; then
            useradd $usuario -c $nombre -m -G $grupo
        else
            userdel $usuario -r -f
        fi
    done
        echo "----- Usuarios procesados ----"
    exit 0

elif [ $tipo = "grupo" ]; then
    for grupo in $(cat $archivogrupo)
    do
        if [ $accion = "crear" ]; then
            groupadd $grupo
        else
            groupdel $grupo
        fi
    done
    exit 0
    echo "----- Grupos procesados ----"
fi

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 2017-09-03
    • 2011-12-31
    相关资源
    最近更新 更多