Спасибо за ваше предложение, regexxer-это ценный инструмент, но то, что я искал такую возможность для немедленной отладки регулярных выражений и копипаст, предлагаемых компанией "Кодос". У меня сложилось впечатление, что Кодос опирается на некоторые устаревшие пакеты Python ? Следовательно, это может объяснить, почему такой инструмент не доступен. В будущем, не используйте 'ошибок' тег. Это место не для сообщения об ошибках, для диагностики проблемы. Имейте терпение с вашей проблемой, как это может быть просто огромный заголовок для этого репозитория (включая всю информацию о РЕПО и т. д. для АПТ-кэш) Вы можете проверить, какой пакет, что файл принадлежит продукту с помощью dpkg -с /usr/местные/Бен/ССАГПЗ. Просто `apt-получить удалить` этот пакет. Нет сомнений в том, что он делает. В DHCP-звонок, компьютер может сказать, какое имя он хочет. Именно поэтому маршрутизатор узнать имя компьютера. Тю, я очень берегу то, что я поставил имя компьютера в маршрутизаторах и тогда смог рассмотреть, что имя позже. Я делаю это на моем роутере с OpenWRT прошивку сейчас все равно. Что прошивки должны работать на ваш маршрутизатор. Здорово настроить туннель IPv6 с. :)

Я не знаю ни одного интернет-кафе программное обеспечение, которое будет делать это, и я думаю, что-то вроде Puppet или Chef будет излишним. Можно построить простейшую схему на основе СШ, что бы работать.

Допустим, у вас есть 20 клиентов (10.0.0.101 в 10.0.0.120) и станции управления 1 (10.0.0.1).

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

Шаг 1: Сделайте его более безопасной (опционально?)

Создать правило firewall на всех клиентов только принимать новые подключения от 10.0.0.1

Может быть, вы сможете открыть вопрос пыльника об этом. Я также могу предоставить помощь с помощью iptables , но я не имею опыта с новой Убунту правила брандмауэра.

Шаг 2: установить соединение

Вы должны иметь службу SSH работает на всех клиентах.

  1. Создать отдельный привилегированный аккаунт на станции управления станции.
  2. Запустить SSH-ключей , чтобы получить ключ SSH-пара. Не предоставлять пароль.
  3. Создать отдельную учетную запись на клиентов. Takkat упомянул о том, как исключить ее из окна входа GNOME.
  4. Добавить учетную запись, чтобы пользователям использовать sudo? (например с помощью sudo visudo). Добавьте эту строку:

    aptaccount1 все=(silktree) NOPASSWD: /usr/Бен/apt-получить

    NOPASSWD это важно, потому что вам понадобится установками, не спрашивая у вас пароль для каждого клиента.

Теперь вы можете проверить. С рабочей станции управления:

СШ 10.0.0.101 судо apt-получить обновление

Шаг 3: Соединить все параллельно

Вот где мой вклад приходит. Я использовал этот скрипт в течение 3 лет, и я очень счастлива с ним. Он выполняет команду СШ параллельно ко многим узлам вывода и/или ошибок красиво.

Вам нужно установить Ruby на станцию управления apt-получить установку руби , а все ваши клиенты хостов в список в /etc/б-клиенты, как этот:

в N01
с n02
с бортовым номером 03
n04

А также на станции управления добавить /и т. д./хосты:

10.0.0.101 в N01
10.0.0.102 с n02
10.0.0.103 бортовым номером 03
10.0.0.103 n04

Затем сохраните этот скрипт в /usr/местные/Бен/на-все-узлы запуска

#!/usr/Бен/Рубин

CLIENTS_FILE = "в/etc/управляемое клиентами"

требуют "open3"

# Неинтерактивный, не спрашивая пароль, и благорастворение ожидания
SSH_OPTIONS = [параметр"-o PreferredAuthentications=открытый ключ,хоста,gssapi с,gssapi с-с-ВПК",
 "-о ForwardX11=нет",
 параметр "-o BatchMode=Yes",то
 "-о SetupTimeOut=5",
 "-о параметр serveraliveinterval=5",
 "-о ServerAliveCountMax=2"
 ].присоединиться(" ")

СШ = "/usr/Бен/СШ #{SSH_OPTIONS}"
Команды mkdir = "/бин/команды mkdir"

поднять "пожалуйста, дайте эту команду хотя бы один аргумент" если argv.размер < 1
КОМАНДА = ПЕРЕМЕННОЙ ARGV[0..-1].присоединяйтесь к(' ')

output_o = {}
output_e = {}


IO_CONNECTIONS_TO_REMOTE_PROCESSES = {}

деф on_all_nodes (и блок)
 узлы = []
 Файл.открыть(CLIENTS_FILE) У |Ф|
 в то время как line = Ф.получает
 я = соответствие.сплит(' ').первый
узлы.пуш(я)
конец
конец
 узлы.сортировать.каждый {|п| блока.вызов(Н)}
конец


# Создаем процессов
on_all_nodes делать |узел|
 стандартный ввод, стандартный вывод, стандартный вывод = Open3.popen3("#{СШ} #{узел} \"#{команда}\"")
 IO_CONNECTIONS_TO_REMOTE_PROCESSES[узел] = [стандартный ввод, стандартный вывод, стандартный вывод]
конец


has_remote_errors = ложь

# Собирать результаты
on_all_nodes делать |узел|
 стандартный ввод, стандартный вывод, стандартный вывод = IO_CONNECTIONS_TO_REMOTE_PROCESSES[узел]

устройства stdin.рядом

 e_thread = нить.Новый делать
 в то время как line = поток stderr.получает
линии.гусеничка!
 Поток stderr.ставит "#{узел} ошибка: #{линия}"
 has_remote_errors = истина
конец
конец

 o_thread = нить.Новый делать
 в то время как line = стандартный вывод.получает
линии.гусеничка!
 ставит "#{узел} : #{линия}"
конец
конец

 # Пусть темы закончить
 Т1 = шь
 Т2 = шь
 а [Т1, Т2].включить? шь
 если T1.шь?
 Т1 = e_thread.присоединяйтесь к(0.1) # дает 1/10 секунды в stderr
конец
 если Т2.шь?
 Т2 = o_thread.присоединяйтесь к(0.1) # дать 1/10 секунды в stdout
конец
конец

конец


выход(1) Если has_remote_errors

Код был рассмотрен на хороший стиль кодирования и здесь некоторые скриншоты: https://codereview.stackexchange.com/questions/1180/ruby-script-on-all-nodes-run-for-teaching но я никогда не получил время, чтобы представить эти предложения. Код работает также.

Тест такой:

на все узлы-выполнить Эхо привет
в N01 : привет
с n02 : привет
ошибки бортовым номером 03: тайм-аут, сервер не отвечает.
n04 : привет

Шаг 4: Установка программного обеспечения параллельно

Теперь вы должны иметь возможность для установки и обновления программного обеспечения, как это (к сожалению, я только показать пример с помощью aptitude, но она должна быть возможность сделать то же самое с APT-получить):

на все узлы-запустите sudo способности показать pbzip2 \| грэп государства
в N01 : состояние: не установлена
с помощью параметра n02 : состояние: не установлена
ошибки бортовым номером 03: тайм-аут, сервер не отвечает.
n04 : состояние: не установлена

на все узлы-выполните команду echo "да" \| судо apt-получить установку pbzip2
...

на все узлы-запустите sudo способности показать pbzip2 \| грэп государства
в N01 : состояние: установлен
с n02 : состояние: установлен
ошибки бортовым номером 03: тайм-аут, сервер не отвечает.
n04 : состояние: установлен

Заключительное Примечание

Если у вас более 10-20 клиентов, то в дополнение к скрипту выше, вы должны найти способ для установки жестких дисков с чем-то вроде Perceus. Таким образом, вы можете сэкономить время (при добавлении нового клиента, и т. д...) и гарантировать, что все является одинаковым для всех клиентов. В практике я использую на все узлы-работать до 100 раз в год. Я повторно изображения с Perceus всем клиентам, которые несколько раз в год.