Bạn có thể sử dụng os.system()
, như thế này:
import os
os.system('ls')
Hoặc trong trường hợp của bạn:
os.system('echo 1 > /proc/sys/net/ipv4/ip_forward')
os.system('iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080')
Tốt hơn nữa, bạn có thể sử dụng cuộc gọi của quy trình con, nó an toàn hơn, mạnh mẽ hơn và có khả năng nhanh hơn:
from subprocess import call
call('echo "I like potatos"', shell=True)
Hoặc, không cần gọi shell:
call(['echo', 'I like potatos'])
Nếu bạn muốn chụp đầu ra, một cách thực hiện là như sau:
import subprocess
cmd = ['echo', 'I like potatos']
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
o, e = proc.communicate()
print('Output: ' + o.decode('ascii'))
print('Error: ' + e.decode('ascii'))
print('code: ' + str(proc.returncode))
Tôi đánh giá cao đề nghị thiết lập một timeout
trong communicate
, và cũng để nắm bắt những trường hợp ngoại lệ, bạn có thể nhận được khi gọi nó. Đây là một mã rất dễ bị lỗi, vì vậy bạn nên mong đợi các lỗi xảy ra và xử lý chúng cho phù hợp.
https://docs.python.org/3/l Library / sub process.html