title: Add Rich Rules in Firewalld using Python3 Loop
body: <p>I am attempting to use Python3 to iterate through a list of IP addresses, and then block them using firewalld. </p>
  
  <p>Note: I am a complete novice with Python, so please excuse any simple errors.</p>
  
  <pre><code>import subprocess
  
  with open("ips.txt") as ipList:
  ips = ipList.readlines()
  
  for ip in ips:
      process = subprocess.Popen(['firewall-cmd',
                              '--permanent',
                              '--add-rich-rule=\'rule family=\"ipv4\" source address=\"{0}\" reject\''.format(ip.rstrip())
                              ])
  </code></pre>
  
  <p>I'm using format.rstrip to remove the line breaks after each IP address in the list.</p>
  
  <p>When running the script I receive the following error;</p>
  
  <pre><code>root@mediaserver:~# python3 block.py 
  Error: INVALID_RULE: internal error in _lexer(): rule family="ipv4" source address="1.56.0.0/13" reject
  Error: INVALID_RULE: internal error in _lexer(): rule family="ipv4" source address="1.48.0.0/15" reject
  </code></pre>
  
  <p>This error message iterates through all of the IP blocks in my list.</p>
  
  <p>If I run the firewall-cmd outside of my script I do not receive any error messages and the rule is properly added.</p>
  
  <pre><code>root@mediaserver:~# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="223.198.0.0/15" reject'
  success
  root@mediaserver:~# firewall-cmd --reload
  success
  root@mediaserver:~# firewall-cmd --zone=public --list-all
  public (default, active)
    interfaces: eth0
    sources: 
    services: dhcpv6-client ssh
    ports: 
    masquerade: no
    forward-ports: 
    icmp-blocks: 
    rich rules: 
         rule family="ipv4" source address="223.198.0.0/15" reject
  
  root@mediaserver:~# iptables -L IN_public_deny
  Chain IN_public_deny (1 references)
  target     prot opt source               destination         
  REJECT     all  --  223.198.0.0/15       anywhere             reject-with icmp-port-unreachable
  
  
  root@mediaserver:~# which python3
  /usr/bin/python3
  
  root@mediaserver:~# firewall-cmd --version
  0.3.7
  </code></pre>
  
  <p>I think the issue could be related to how I've escaped the characters in my python script, but as far as I can tell, they are being escaped correctly. If there is any additional debug info I could provide please let me know.</p>