Как мой сценарий может запросить количество пользователей, которых мне нужно создать?

Я объясняю свое решение для обнаружения изменения активности пользователей на сервере в облаке. с приведенными ниже требованиями:

  • клиент имеет закрытый ключ с отпечатком пальца в SHA256 x.x.x.x.x и включить ssh-соединение.
  • на сервере включена система аудита.
  • включает правила просмотра для указанной папки, например /home/oracle/

для обнаружения измененного файла я выполняю следующие шаги, ниже пример:

ausearch -f
------------
20/02/2019 16:37:00 /home/oracle/.bash_history 2 yes /usr/bin/bash 54321 770

770 — это номер события, благодаря ему я могу найти номер сеанса:

ausearch -p | grep 770
----------------------
type=SYSCALL msg=audit(20/02/2019 16:37:00.868:770) : arch=x86_64 syscall=open 
success=yes exit=3 a0=0x10bd080 a1=O_WRONLY|O_APPEND a2=0x180 a3=0x0 items=1 
ppid=8649 pid=8650 auid=oracle uid=oracle gid=oinstall euid=oracle suid=oracle 
fsuid=oracle egid=oinstall sgid=oinstall fsgid=oinstall tty=pts1 ses=58 
comm=bash exe=/usr/bin/bash subj=unconfined_u:unconfined_r:unconfined_t:s0- 
s0:c0.c1023 key=modifica_fil

номер сеанса 58, спасибо, я могу найти pid сеанса входа в систему

ausearch -i | grep  ses=58
---------------------------
type=LOGIN msg=audit(20/02/2019 16:34:37.366:747) : pid=8646 uid=root 
subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 old-auid=unset auid=oracle tty= 
(none) old-ses=4294967295 ses=58 res=yes 

pid входа в систему — 8646, я могу посмотреть ключ отпечатка пальца, используемый указанным пользователем в var/log/secure

cat secure | grep 8646
----------------------
sshd[8646]: Accepted publickey for oracle from 192.168.4.107 port 58892 ssh2: 
RSA SHA256:x.x.x.x.x
0
16.06.2020, 20:44
2 ответа

Вы можете прочитать количество пользователей, которых нужно создать, в верхней части скрипта, а затем использовать это число в своем цикле.

Это предложение для варианта вашего скрипта, которому вы могли бы дополнительно указать количество пользователей в командной строке. Если вы не укажете номер в командной строке, он запросит этот номер в интерактивном режиме. Проверка ввода не выполняется.

#!/bin/bash

nusers=$1
if [[ -z $nusers ]]; then
    read -p 'Number of users to add: ' nusers
fi

for (( i = 1; i <= nusers; ++i )); do
    read -p "User $i first name:  " name1
    read -p "User $i second name: " name2

    printf 'Hello %s %s\n' "$name1" "$name2"
done

Тестирование:

$./script.sh
Number of users to add: 2
User 1 first name:  Apple
User 1 second name: Wonder
Hello Apple Wonder
User 2 first name:  Mini
User 2 second name: Uncle
Hello Mini Uncle
$./script.sh 2
User 1 first name:  Moped
User 1 second name: Runner
Hello Moped Runner
User 2 first name:  Tentative
User 2 second name: Luck
Hello Tentative Luck
2
18.03.2021, 23:27
#!/bin/bash
echo "Creating a user file using while loop"
Name=" "
Surname=" "
echo -n "Enter the number of users to create: "
read no_of_users
for ((i=1;i<=no_of_users;i++)); do
        echo "_________________"
        echo "USER: $i"
        echo -n "Enter first name: "
        read Name
        echo -n "Enter surname: "
        read Surname
        echo "Your name is: $Name"
        echo "Your surname is: $Surname"
done
3
18.03.2021, 23:27

Теги

Похожие вопросы