Bash Script для удаления пользователей из списка слов - PullRequest
1 голос
/ 09 ноября 2019

Я написал следующий скрипт для удаления пользователей из списка слов. Список слов состоит из 3 или 4 полей, таких как Имя, Отчество, Фамилия и Идентификатор пользователя. Я использую awk для создания имени пользователя, которое состоит из имени, фамилии, имени пользователя и последних двух цифр его идентификатора. Затем с помощью команды userdel с флагом r также удаляются пользователи с их домашними каталогами.

Однако, когда я запускаю скрипт, он выдает ошибку, в которой говорится следующее:

Usage: userdel [options] LOGIN

Options:
  -f, --force                   force some actions that would fail otherwise
                                e.g. removal of user still logged in
                                or files, even if not owned by the user
  -h, --help                    display this help message and exit
  -r, --remove                  remove home directory and mail spool
  -R, --root CHROOT_DIR         directory to chroot into
  -Z, --selinux-user            remove any SELinux user mapping for the user

Сценарий:

#! /bin/bash

# Removing users using positional parameters

getusername(){
    line=${1}
    len=`echo ${line}|awk '{ FS = " " } ; { print NF}'`
    if [[ ${len} -eq 3 ]]
    then
        initial=`echo ${line}| awk {'print $1'} |cut -c1`
        lastname=`echo ${line} | awk {'print $2'}`
        id=`echo ${line}| awk {'print $3'}|grep -o '..$'`
        username=`echo ${initial}${lastname}${id} |tr '[:upper:]' '[:lower:]'`
    elif [[ ${len} -eq 4 ]]
    then
        initial=`echo ${line} | awk {'print $1'} |cut -c1`
        lastname=`echo ${line} | awk {'print $3'}`
        id=`echo ${line}| awk {'print $4'}|grep -o '..$'`
        username=`echo ${initial}${lastname}${id} |tr '[:upper:]' '[:lower:]'`
    else
        echo "Line ${line} is not expected as it should be considered for creating Username and Password"
    fi    
}

sudo userdel -r  $getusername

1 Ответ

0 голосов
/ 09 ноября 2019

Как вызвать userdel?

userdel -r username

Удаляет учетную запись пользователя username и удаляет домашний каталог этого пользователя и связанные почтовые файлы.

Для этого вам нужно использовать переменную вместо того, чтобы вызывать функцию.

В противном случае userdel будет жаловаться, как если бы он уже делал или просто набрал userdel.

...