Запускать локальный сценарий bash на нескольких удаленных машинах

У меня ниже сценарий 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
задан 2 September 2020 в 05:22
1 ответ

Если вы хотите скопировать скрипт и запустить его из централизованной точки, создайте общий скрипт подготовки, отвечающий за копирование и выполнение

  1. Создайте список массивов, в этом случае я использовал файл называется hostList.active

  2. Установите единственным аргументом сценарий, который вы пытаетесь скопировать и выполнить на удаленном сервере. (В этом случае он будет работать в домашнем каталоге удаленных машин)

    #! /бин/баш
    поле чтения; делать
    ping -c 1 -w 1 -q $box > /dev/null
    если (проверить $?=0); тогда
    эхо "****************************************************** ***************"
    эхо $бокс
    scp $1 $box:~/.
    ssh -n -o stricthostkeychecking=no -X $box "~/$1"
    иначе echo $box не отвечает на ping
    эхо $box >> hostList.notdone
    фи
    сделано < 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

Убедитесь, что сценарий, который вы копируете, имеет надлежащие разрешения, чтобы его мог выполнять любой пользователь, от имени которого вы его копируете.

1
ответ дан 5 September 2020 в 15:39

Теги

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