example for 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 :)
I think "task scheduler" is the best way to automate the Python process.
Look at this answer: Scheduling a .py file on Task Scheduler in Windows 10
By the way for me (set windows german), i have umlauts, so i use script like this:
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()
YOU MAY HAVE TO ADAPT the encoding at the decode to your local windows
look at this: Python subprocess check_output decoding specials characters