LINUX.ORG.RU
решено ФорумAdmin

Использование ssh в скрипте

 , ,


0

3

Доброго времени! Прошу помощи, ибо не нашел ничего вразумительного на эту тему. Задача: нужно с одной машины разослать машинам в локальной сети одну и ту же команду. Без стороннего ПО. Я так понимаю, что нужно обратиться к ssh и bash, но не нашел ни одного примера, где в скрипте использовался бы ssh и плюс вопрос с обходом пароля (правильно ли здесь использовать ssh-ключи, заранее сгенерированные). Скрипты ни разу не писал, проблематика разовая. Понимаю псевдокод вот так:

#!/bin/bash

 ssh host@user1 'command'
 ssh host@user2 'command'  
 ...
 ssh host@userN 'command'
Но ясно же, что в таком виде оно работать не будет. И, да, RH.


Но ясно же, что в таком виде оно работать не будет.

А вот в таком будет:

ssh user1@host 'command'

И, да, RH.

Наплевать. Ну если только поцтеринг ещё и ssh в системд не запихал.

Stanson ★★★★★ ()
Ответ на: комментарий от Stanson

То есть это все, что мне нужно? создать файл в таком виде? и запустить его на одной из машин, предварительно сгенерировав ключи доступа к остальным? В данный момент нет возможности это проверить, начал копать теорию еще не доехав до аппаратуры)

pafo ()
Ответ на: комментарий от pafo

То есть это все, что мне нужно? создать файл в таком виде? и запустить его на одной из машин, предварительно сгенерировав ключи доступа к остальным?

Ну да.

Можно даже попытаться почувствовать себя программистом и написать что-то типа

#!/bin/sh
HOSTS="user@host1 user@host2 user@host3"
for h in $HOSTS; do
    ssh "$h" 'command'
done

Stanson ★★★★★ ()
Последнее исправление: Stanson (всего исправлений: 2)
Ответ на: комментарий от qbe

Не учи других плохому. :) Если есть логин с паролем, значит и ключ на удалённый сервер положить можно без проблем.

Stanson ★★★★★ ()
Ответ на: комментарий от Stanson

да, если всё делать по уму, то лучше завести специального ограниченного пользователя под такое удалённое выполнение команды

qbe ()
Последнее исправление: qbe (всего исправлений: 1)
Ответ на: комментарий от pafo

Я бы ещё посоветовал использовать ~/.ssh/config, после копирования ключа на удалённую машину (к слову ssh-copy-id user@host). Пример конфига:

Host vbox
Hostname 192.168.1.23
User user
Compression yes
Соответственно потом просто ssh vbox и всё.

conformist ★★★ ()

Настроить авторизацию через ключи на всех хостах. Для исполнения одновременно на нескольких хостах используй Parallel ssh, Cluster SSH, GoSSH.

fox-mage ()
Ответ на: комментарий от Stanson

здесь есть подводный камень, который описан в man ssh ключ -n
ну и чтобы не ловить на ровном месте другие проблемы, почитать про опции с ключами, отпечатками и т.п., например
-o CheckHostIp no -o StrictHostKeyChecking no -o -PreferredAuthentications=«publickey»

bl ★★★ ()

Велосипеды — это, конечно, весело, но вообще см. ansible(1).

RH

Тем более ansible(1).

Zmicier ★★★★★ ()
Последнее исправление: Zmicier (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.