Программа Python для автоматизации команд CMD каждые пару минут - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь написать программу, использующую метод os.system () для вызова команд CMD, но я немного растерялся.Я хотел, чтобы он проверял, включен ли брандмауэр каждые пару минут, и если нет, отправьте команду, чтобы включить его.Буду ли я выводить его в текстовый файл, а затем перебирать файл, чтобы проверить ключевые слова, и как только эти ключевые слова будут найдены, он выполняет команду включения брандмауэра в CMD?

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

Я также хотел сделать то же самое, когда отправлял команду для проверки пользователей в CMD, если таковые были, все пароли учетных записей изменены.

Я также хотел написать его, используя подпроцесс.Какие-нибудь предложения относительно лучшего метода или способа пойти по этому поводу?Я использую Python 3.5.

1 Ответ

0 голосов
/ 09 октября 2018

пример для subprocess.check_output :

import subprocess          
cmd = "netsh advfirewall show allprofiles"

# returns output as byte string
returned_output = subprocess.check_output(cmd)
# print(type(returned_output))
# using decode() function to convert byte string to string
print('CMD OUTPUT:' + returned_output.decode("utf-8", "ignore")) 
# I HAVE CMD ON GERMAN LANGUAGE
# EIN / AUS [GER] for ON / OFF in Domainprofile:
print('CMD OUTPUT: ' + returned_output.decode("utf-8", "ignore").split("Status")[1].split("Firewallrichtlinie")[0].strip())

if returned_output.decode("utf-8", "ignore").split("Status")[1].split("Firewallrichtlinie")[0].strip() == "AUS":
    # set FIREWALL ON
else:
    # everything ok :)

Я думаю, что «планировщик задач» - лучший способ автоматизации процесса Python.Посмотрите на этот ответ: Планирование .py файла в планировщике заданий в Windows 10

Кстати, для меня (установить Windows German), у меня есть Umlauts, поэтому я использую скрипт следующим образом:

import subprocess
import sys
import locale

cmd = "netsh advfirewall show allprofiles"

# returns output as byte string
returned_output = subprocess.check_output(cmd)

# using decode() function to convert byte string to string
print('CMD OUTPUT: ' + returned_output.decode("cp850", "replace"))
# I HAVE CMD ON GERMAN LANGUAGE
# EIN / AUS [GER] for ON / OFF in Domainprofile:
print('CMD OUTPUT: ' + returned_output.decode("cp850", "replace").split("Status")[1].split("Firewallrichtlinie")[0].strip())

if returned_output.decode("utf-8", "replace").split("Status")[1].split("Firewallrichtlinie")[0].strip() == "AUS":
    # set FIREWALL ON ALL PROFILES
    cmd = "netsh advfirewall set allprofiles state on"
    returned_output = subprocess.check_output(cmd)
    print(returned_output.decode("cp850", "replace"))
else:
    # everything ok :)
    sys.exit()

ВЫ МОЖЕТЕ ИМЕТЬ АДАПТИРОВАТЬ кодировку при декодировании в локальные окна посмотрите на это: Подпроцесс Python check_output декодирование специальных символов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...