
У меня есть следующий bash-скрипт. Каждый раз, когда я хочу создать пользователя, мне нужно копировать этот скрипт на сервер и запускать его.
Можно ли что-нибудь сделать, чтобы этот скрипт извлекал IP-адреса из файла hosts.txt (запуск скрипта на нескольких серверах) по одному и создавал пользователя на сервере? Кроме того, для запуска этого скрипта нам нужны права root.
1. Запросите пароль один раз и используйте его в остальной части скрипта, где это необходимо. 2. Войдите в систему как обычный пользователь. 3. Станьте пользователем root и запустите скрипт.
#!/bin/bash
#Script to Add User
read -p 'Please Enter The Username To Add: ' name
echo "$name" > /tmp/userlist.txt
clear
echo -e "Hallo $name\nYour Name Is Added To The List."
userfile=/tmp/userlist.txt
username=$(cat /tmp/userlist.txt | tr 'A-Z' 'a-z')
for user in $username
do
useradd $user -N -s /bin/bash
usermod -aG sudo $user
passwd $user
done
echo "=================================="
echo "User $name Have Been Created."
echo "=================================="
tail /etc/passwd | cut -d: -f1
решение1
Если вы хотите скопировать скрипт и запустить его из централизованной точки, создайте общий скрипт подготовки, отвечающий за копирование и выполнение.
Создайте список массивов, в этом случае я использовал файл hostList.active
Установите единственный аргумент — скрипт, который вы пытаетесь скопировать и выполнить на удаленном сервере. (В этом случае он будет запущен в домашнем каталоге удаленной машины)
#! /bin/bash while read box; do ping -c 1 -w 1 -q $box > /dev/null if (test $? = 0); then echo "***************************************************************" echo $box scp $1 $box:~/. ssh -n -o stricthostkeychecking=no -X $box "~/$1" else echo $box is not responding to ping echo $box >> hostList.notdone fi done < hostList.active
Я поместил 2 тестовых сервера в свой файл списка массивов (hostList.active), и он подключился к обоим, скопировал скрипт и выполнил его.
./copyandrun.sh bogus.sh
***************************************************************
tsweb
bogus.sh 100% 36 0.0KB/s 00:00
Running a Test
***************************************************************
tsdb
bogus.sh 100% 36 0.0KB/s 00:00
Running a Test
Убедитесь, что копируемый вами скрипт имеет соответствующие разрешения, чтобы его мог выполнить любой пользователь, от имени которого вы его копируете.