Я думаю, что это означает, что файл/каталог расширил атрибуты.
Предположение, что Вы не можете получить pssh или установленных других, Вы могли сделать что-то подобное:
tmpdir=${TMPDIR:-/tmp}/pssh.$$
mkdir -p $tmpdir
count=0
while IFS= read -r userhost; do
ssh -n -o BatchMode=yes ${userhost} 'uname -a' > ${tmpdir}/${userhost} 2>&1 &
count=`expr $count + 1`
done < userhost.lst
while [ $count -gt 0 ]; do
wait $pids
count=`expr $count - 1`
done
echo "Output for hosts are in $tmpdir"
Если Вы в Python, пишущий сценарий больше, чем bash
при сценариях затем Матрица могла бы быть инструментом для Вас.
Матрицей является Python (2.5 или выше) библиотека и инструмент командной строки для оптимизации использования SSH для системных задач администрирования или развертывания приложения.
Это обеспечивает основной комплект операций для выполнения локальных или удаленных команд оболочки (обычно или через sudo) и загрузка/загрузка файлов, а также вспомогательной функциональности, таких как запрос рабочего пользователя для входа или прерывания выполнения.
Типичное использование включает создание модуля Python, содержащего одну или несколько функций, затем выполняя их через потрясающий инструмент командной строки.
Существует несколько инструментов там, которые позволяют Вам входить в систему и выполнять ряд команд на нескольких машинах одновременно. Вот пара:
Я предлагаю Ansible.cc. Это - диспетчер команды и менеджер конфигурации.
Очень простая установка:
for host in $(cat hosts.txt); do ssh "$host" "$command" >"output.$host"; done
Аутентификация с именем/паролем не является действительно никакой хорошей идеей. Необходимо настроить закрытый ключ для этого:
ssh-keygen && for host in $(cat hosts.txt); do ssh-copy-id $host; done
Я действительно использую параллель GNU для этого, наиболее конкретно можно использовать этот рецепт:
parallel --tag --nonall --slf your.txt command
С your.txt
будучи файлом с IP-адресом сервера / имена.
ssh
существовавший также, но Вам нужен некоторый способ войти в другие компьютеры, и те пути раньше были менее безопасными (как rsh
). Вы не описываете то, что Вы используете теперь для получения с машины на машину (telnet
?, rsh
?).
– Anthon
23.05.2013, 07:52
Я создал инструмент с открытым исходным кодом под названием Overcast , чтобы сделать такого рода дело проще.
Сначала вы определяете свои серверы:
overcast import vm.01 --ip 1.1.1.1 --ssh-key /path/to/key
overcast import vm.02 --ip 2.2.2.2 --ssh-key /path/to/key
Затем вы можете запускать на них несколько команд и файлов сценариев, последовательно или параллельно, например:
overcast run vm.* uptime "free -m" /path/to/script --parallel
Просто напомню, чтобы задать действительно хороший вопрос:
Лучшее решение, которое я нашел, - это, что неудивительно, tmux.
Вы можете использовать Ctrl-B: setw synchronize-panes в tmux для получения потрясающих результатов. Для этого у вас должны быть открыты все ваши ssh-соединения на разных панелях одного окна Tmux.
Проект . Проект недавно добавил Multi-Host SSH Tool. Этот инструмент построен с Libssh и устанавливает соединения и проблемы асинхронно и параллельно для максимального параллелизма. См. Multi-Host SSH Tool для полной документации. Чтобы запустить команду на наборе хостов, вы запускаете его следующим образом:
$ ht ssh 1.1.1.1,2.2.2.2,3.3.3.3 uptime
Вы также можете указать имя хоста или IP-шаблон, например:
$ ht ssh 1.1.1.[1-99] uptime
$ ht ssh host[00-99] uptime
Это также поддерживает - Случайное начало Задержка
Опция, которая задержит запуск команды на каждом хосте с помощью случайного интервала времени между 0 и
Milliseconds. Эта опция может быть использована, чтобы избежать громочитных проблем, когда команда работает, доступ к центральному ресурсу.
He desarrollado collectnode Muy simple y efectivo para ejecutar tareas en varios servidores (Ventanas incluidas)
Cómo usar CollectNode:
Crear la lista de servidores, para trabajar con:
# cat hosts.file
server1
server2
server3
server4
server5
Ejecutar CollectNode pasando la lista de servicios:
collectnode --file servers.txt --command='cat /etc/httpd/conf/httpd.conf |grep ^User'
Opcionalmente, es posible filtrar los resultados, por ejemplo, este comando solo muestra el servidor donde se cumple la condición.
collectnode --file servers.txt --command='cat /etc/httpd/conf/httpd.conf |grep ^User' --where="command contain User"
https://collectnode.com/5-tasks-collectnode-can-help-managing-servers/
Создайте файл /etc/sxx/hosts
заполнять вот так:
[grp_ips]
1.1.1.1
2.2.2.2
3.3.3.3
общий ключ ssh на всех машинах.
Установить sxx из пакета:
https://github.com/ericcurtin/sxx/releases
Затем запустите команду следующим образом:
sxx username@grp_ips "whatever bash command"
Я думаю, что "ожидать" - это то, что вам нужно.
Многие люди даже не знают, что он существует. Это программа на основе tcl, которая будет задавать вопросы и возможные ответы от вашего имени. Взгляните наhttps://wiki.tcl-lang.org/page/Expect
Использование параллелизма на основе Paramikohttp://www.paramiko.org/и Thread -https://docs.python.org/3/library/threading.htmlКод ниже позволяет выполнять несколько команд на каждом сервере параллельно!
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.load_system_host_keys()
ssh.connect(hostname, port, username, password)
t = threading.Thread(target=tasks[index], args=(ssh, box_ip,))
t.start()
Примечание. :повторите приведенные выше инструкции для каждого сервера.
Используйте pdsh
. Вот полезный пример:
pdsh -w 'something.example.com,node-[1-5].example.com' -R ssh 'uptime'
-o StrictHostKeyChecking=no
избегать этого. Однако лучше просканировать все серверы от командной строки сначала, таким образом, ключи хоста могут быть добавлены. – Arcege 19.08.2011, 22:40wait
команда исправляет те ресурсы, включая код возврата процесса (как процесс, из которого выходят). Затем, если позже в программе, Вы помещаете другой процесс, позволяет, говорят, что сжатие, в фоновом режиме и должно ожидать его, затем без этого цикла, ожидание исправит одну из завершенных ssh программ, не сжатие - который может все еще работать. Вы получили бы статус возврата на неправильном дочернем процессе. Хорошо вымыться после себя. – Arcege 28.08.2011, 21:23