SSH к списку серверов и запустить команду для того же списка

Существует метод numpy.concatenate

import numpy as np
np.concatenate( [ np.array( [ [1,2], [2,3] ] ), np.array( [ [3],[4] ] ) ] , axis = 1)

или просто используйте hstack или vstack

np.hstack( [ np.array( [ [1,2], [2,3] ] ), np.array( [ [3],[4] ] ) ] )

. Это могут быть также используется для удаления столбца (объединить два подмассива) - это можно использовать для удаления многих столбцов.

Чтобы удалить i-й столбец, вы можете взять подмассивы в этот столбец, а затем со следующего и объединить их. Например, чтобы удалить второй столбец (index 1):

a - np.array( [ [1,2,3], [2,3,4] ] )
a1= a[:,:1]
a2= a[:,2:]
np.hstack([a1,a2])

, поэтому вообще

def remove_column( a, i ):
    return np.hstack( [a[:,:i], a[:,(i+1):] ] )

, а затем

>>> remove_column(a, 1)
array([[1, 3],
       [2, 4]])
>>> remove_column(a, 0)
array([[2, 3],
       [3, 4]])

Фактически , как указано в комментарии - numpy реализует свой собственный delete метод

np.delete(a, 1, 1)

удаленный второй столбец

и удаление нескольких из них можно выполнить с помощью

np.delete(a, [column1, columne2, ..., columnK], 1)

Третий аргумент - спецификатор оси, 0 будет означать строки, 1 столбцы, None выравнивает весь массив

1
задан Steven 17 January 2019 в 02:57
поделиться

1 ответ

Вы хотите все возможные 2 перестановки длины списка серверов. Затем вы хотите запустить для каждой пары серверов тест. Нет ничего проще.

while read -r srv1 srv2; do
    ssh root@"$srv1" iperf -c "$srv2" -y C >> "/tmp/results.txt"
done < <(
    while read -r line; do
        sed 's/$/ '"$line"'/' /root/servers.txt
    done < /root/servers.txt
)
  1. Сначала часть <( .. ). Для каждой строки в файле запускается sed. Sed добавляет строку в конец файла и выводит ее. Таким образом, мы получаем все возможные пары серверов.
  2. Для каждой пары настройте команду perf.
  3. Мы также можем сделать перенаправление |.

while read -r line; do
     sed 's/$/ '"$line"'/' /root/servers.txt
done < /root/servers.txt |
while read -r srv1 srv2; do
    ssh root@"$srv1" iperf -c "$srv2" -y C >> "/tmp/results.txt"
done
0
ответ дан Kamil Cuk 17 January 2019 в 02:57
поделиться
Другие вопросы по тегам:

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