Как войти в серверы Mutiple в петле

Когда вы блокируете с помощью Ctrl+Alt+L, скорее всего, вы просто включаете приложение-заставку, которое также запрашивает пароль. Я думаю, что автоматического способа нет, если только вы не настроите приложение экранной заставки, чтобы отследить это.

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

1
19.09.2018, 09:49
2 ответа

Если вы хотите запустить скрипт на нескольких машинах, вам лучше использовать parallel, инструмент, который делает именно то, что вы хотите.

См. руководство здесь и здесь .

1
27.01.2020, 23:23

Циклический просмотр группы серверов, на которых нет ключей, потребует циклического просмотра файла с вашими паролями либо в виде открытого текста, либо в простом шифровании. Я бы настоятельно не рекомендовал делать это лично, особенно если это происходит в производственной среде.


Предупреждение -Я не рекомендую это

Быстрое и грязное решение можно найти с помощью sshpassи текстового файла, содержащего имена хостов ваших серверов с их паролями:

пример serverList.txt:

server1 password1
server2 password2

действительно пример небезопасного скрипта:

for host in $(awk '{print $1}' serverList.txt); do
    password=$(grep -w "$host" serverList.txt | awk '{print $2}')
    sshpass -p "$password" ssh $host <./script.sh
done

Вот что я рекомендую:

Если это то, что вам нужно делать регулярно, я бы рекомендовал изучитьdsh(распределенную оболочку ).

Установка

Установить его из Debian/Ubuntu очень просто:

sudo apt-get install dsh

для дистрибутивов на основе RHEL вам необходимо сначала скомпилировать libdshconfig, а затемdsh:

# libdshconfig
wget http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.10.cvs.1.tar.gz
tar xfz libdshconfig*.tar.gz 
cd libdshconfig-*
./configure ; make
make install

# dsh
wget http://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.22.0.tar.gz
tar xfz dsh-0.22.0.tar.gz
cd dsh-*
./configure ; make 
make install

Конфигурация

Конфигурация для dshпо умолчанию будет использовать rshв качестве протокола входа в систему. Вы, вероятно, захотите изменить это на ssh, так как rshне зашифровано.

при установке через aptфайл конфигурации будет /etc/dsh/dsh.conf-, если вам пришлось скомпилировать его для дистрибутивов на основе RHEL, то файл конфигурации будет/usr/local/etc/dsh.conf

обновить это:

remoteshell =rsh

к этому:

remoteshell =ssh

После того, как вы это сделаете, вам понадобится список машин, на которых вы хотите что-то запускать. Для Debian этот файл будет /etc/dsh/machines.list,для RHEL это будет/usr/local/etc/dsh/machines.list

Список может быть представлен в виде имени хоста, IP-адреса или полного доменного имени, разделенных новой строкой. Например, это будет действительный файл machines.list, если все имена хостов или полные доменные имена разрешаются:

10.20.30.40
10.20.30.31
server1.stackexchange.com
server2
root@myOtherServer

Примеры

Теперь вы можете запускать команды последовательно или параллельно на нескольких хостах вmachines.list

Последовательно, только с обратным выходом:

dsh -a <command>

$ dsh -a echo hello
hello
hello

печатать каждое имя хоста в качестве префикса для соответствующего вывода:

dsh -a -M <command>

$ dsh -a -M echo hello
root@server1: hello
root@server2: hello

сделайте то же самое, но вместо последовательного запуска команды одновременно:

dsh -aMc <command>

использовать только выбранные хосты:

dsh -Mc -m <host1> -m <host2> <command>

Предостережения

Таким образом, проблема с этим в вашем сценарии заключается в том, что вам потребуется настроить ключи ssh (, если вы не хотите вводить пароль для каждого хоста ), и вам также понадобится сценарий на каждом из хосты.

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

2
27.01.2020, 23:23

Теги

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