
Barbaricboot - это инструмент массовой перезагрузки, который ваш ИТ -отдел не знал, что ему нужно
9 июля 2025 г.Управление современной предпринимательской средой может сделать даже самые жесткие его воины, особенно когда вам нужно перезагрузить флот упрямых конечных точек. ВходитьБарбаричбат, инструмент массовой перезагрузки с питоном, созданный для администраторов, у которых нет времени на однообразие клика за щелчком. Как и настоящий барбера, он прорезает ваш список машин со скоростью, мощностью и нулевым терпением для препятствий.
Что такое Barbaricboot?
Барбаричбатявляется сценарием Python командной строки, который считывает список имен компьютеров и развязывает параллельные перезагрузки на них, сообщая о каждой победе и побеждении по пути. Идеально подходит для средств, ориентированных на Windows (благодаря использованиюshutdown
Команда), он использует многопоточное для максимальной эффективности. Каждая неудачная перезагрузка зарегистрирована - какая -либо успешная перезагрузка - еще одна победа в битве.
Почему Barbaricboot?
- Эффективность:Перезагружает сотни машин за считанные минуты, а не часы.
- Простота:Один файл, одна команда, минимальная настройка.
- Подотчетность:Обратная связь в реальном времени об успехах и неудачах.
- Барбарский дух Барвара:Просто перезагрузите их все - нет оправданий, никакой милости.
Как это работает
- Вход:Бросить имена ваших машин (по одному на строку) в
pcs.log
Полем - Исполнение:Barbaricboot атаки с использованием Python
concurrent.futures
Чтобы запустить до 20 параллельных перезагрузков одновременно. - Обратная связь:Вы получаете счет в реальном времени успеха и неудачи-плюс подробные журналы любых машин, которые отказываются от вашей команды.
Как установить и использовать Barbaricboot
Требования
- Python 3.6 или новее
- Привилегии администратора Windows (для отдаленного права на отключение)
- А
pcs.log
Файл перечисляет ваши целевые машины (по одному на строку)
Настраивать
- ** Сохраните сценарий
\ Скопируйте полную
BarbaricBoot.py
Код (приведен ниже) на ваш административный аппарат. - ** Подготовьте свои цели
\ Создать простой текстовый файл с названием
pcs.log
В том же каталоге, что и ваш сценарий, переписывается каждая машина для перезагрузки. - ** Запустить 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 не для робкого. Используйте это ответственно, владеет этим с умом, и помните: с большой силой приходит большая ответственность. Пусть ваши перезагрузки будут быстрыми, ваши журналы чисты, и ваши конечные точки постоянно соответствуют!
Оригинал