问题描述
我的脚本有问题:
#!/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
我不知道还能做什么来让它运行
最好的问候...
弗兰克
解决方法
我是这样解决的:
#!/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