Barbaricboot - это инструмент массовой перезагрузки, который ваш ИТ -отдел не знал, что ему нужно

Barbaricboot - это инструмент массовой перезагрузки, который ваш ИТ -отдел не знал, что ему нужно

9 июля 2025 г.

Управление современной предпринимательской средой может сделать даже самые жесткие его воины, особенно когда вам нужно перезагрузить флот упрямых конечных точек. ВходитьБарбаричбат, инструмент массовой перезагрузки с питоном, созданный для администраторов, у которых нет времени на однообразие клика за щелчком. Как и настоящий барбера, он прорезает ваш список машин со скоростью, мощностью и нулевым терпением для препятствий.

Что такое Barbaricboot?

Барбаричбатявляется сценарием Python командной строки, который считывает список имен компьютеров и развязывает параллельные перезагрузки на них, сообщая о каждой победе и побеждении по пути. Идеально подходит для средств, ориентированных на Windows (благодаря использованиюshutdownКоманда), он использует многопоточное для максимальной эффективности. Каждая неудачная перезагрузка зарегистрирована - какая -либо успешная перезагрузка - еще одна победа в битве.

Почему Barbaricboot?

  • Эффективность:Перезагружает сотни машин за считанные минуты, а не часы.
  • Простота:Один файл, одна команда, минимальная настройка.
  • Подотчетность:Обратная связь в реальном времени об успехах и неудачах.
  • Барбарский дух Барвара:Просто перезагрузите их все - нет оправданий, никакой милости.

Как это работает

  1. Вход:Бросить имена ваших машин (по одному на строку) вpcs.logПолем
  2. Исполнение:Barbaricboot атаки с использованием Pythonconcurrent.futuresЧтобы запустить до 20 параллельных перезагрузков одновременно.
  3. Обратная связь:Вы получаете счет в реальном времени успеха и неудачи-плюс подробные журналы любых машин, которые отказываются от вашей команды.

Как установить и использовать Barbaricboot

Требования

  • Python 3.6 или новее
  • Привилегии администратора Windows (для отдаленного права на отключение)
  • Аpcs.logФайл перечисляет ваши целевые машины (по одному на строку)

Настраивать

  1. ** Сохраните сценарий \ Скопируйте полнуюBarbaricBoot.pyКод (приведен ниже) на ваш административный аппарат.
  2. ** Подготовьте свои цели \ Создать простой текстовый файл с названиемpcs.logВ том же каталоге, что и ваш сценарий, переписывается каждая машина для перезагрузки.
  3. ** Запустить Barbaricboot \ Откройте терминал и выполните: «Python barbericboot.py»

Полный код

#Another        /\_[]_/\
#    fine      |] _||_ [|
#       ___     \/ || \/
#      /___\       ||
#     (|0 0|)      ||
#   __/{\U/}\_ ___/vvv
#  / \  {~}   / _|_P|
#  | /\  ~   /_/   []
#  |_| (____)        
#  \_]/______\  Barberion  
#     _\_||_/_     Production      
#    (_,_||_,_)
#
import concurrent.futures
import subprocess
import logging
from threading import Lock

# Set up logging for failed reboots
logging.basicConfig(filename='failed_reboots.log', level=logging.INFO)

# Lock for thread-safe printing and updating counters
print_lock = Lock()

def reboot_machine(machine_name, success_counter, failure_counter):
    try:
        subprocess.run(['shutdown', '/r', '/t', '0', '/m', f'\\\\{machine_name}', '/f'], 
                       check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        with print_lock:
            success_counter[0] += 1
            print(f"\rTotal successful reboots: {success_counter[0]}, Total failed reboots: {failure_counter[0]}", end='')
    except subprocess.CalledProcessError as e:
        with print_lock:
            failure_counter[0] += 1
            print(f"\rTotal successful reboots: {success_counter[0]}, Total failed reboots: {failure_counter[0]}", end='')
        logging.error(f"Failed to reboot {machine_name}: {e}")

def main():
    with open('pcs.log') as file:
        machines = file.readlines()

    total_hosts = len(machines)
    print(f"Total hosts in file: {total_hosts}")

    # Shared counters for successful and failed reboots
    successful_reboots = [0]
    failed_reboots = [0]

    # Use ThreadPoolExecutor for parallel execution
    with concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor:
        futures = [executor.submit(reboot_machine, machine.strip(), successful_reboots, failed_reboots) for machine in machines]

        # Wait for all tasks to complete, i suppose you can  comment out for rapid fire.
        concurrent.futures.wait(futures)

    # Final print to ensure the last count is displayed correctly
    print(f"\nFinal count - Total successful reboots: {successful_reboots[0]}, Total failed reboots: {failed_reboots[0]}")

if __name__ == "__main__":
    main()

Советы по настройке

  • Увеличить или уменьшить параллелизм:Настройкаmax_workers=20Для более или меньше параллельных атак, в зависимости от терпимости вашей среды.
  • Регистрация:Все неудачные попытки хранятся вfailed_reboots.logДля последующего обзора.
  • Вариант быстрого огня:Прокомментироватьconcurrent.futures.wait(futures)строка, если вы хотите отпустить сценарий и двигаться и двигаться

Последние мысли

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


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE