คุณสามารถใช้os.system()
เช่นนี้
import os
os.system('ls')
หรือในกรณีของคุณ:
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')
ยิ่งไปกว่านั้นคุณสามารถใช้การเรียกใช้ของกระบวนการย่อยได้ปลอดภัยยิ่งขึ้นมีประสิทธิภาพมากขึ้นและมีแนวโน้มเร็วขึ้น:
from subprocess import call
call('echo "I like potatos"', shell=True)
หรือโดยไม่ต้องเรียกใช้เชลล์:
call(['echo', 'I like potatos'])
หากคุณต้องการจับเอาท์พุทวิธีหนึ่งในการทำเช่นนี้:
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))
ฉันขอแนะนำให้ตั้งค่าtimeout
ในcommunicate
และจับข้อยกเว้นที่คุณจะได้รับเมื่อเรียกใช้ นี่เป็นรหัสที่ผิดพลาดได้ง่ายดังนั้นคุณควรคาดหวังว่าจะเกิดข้อผิดพลาดขึ้นและจัดการกับมัน
https://docs.python.org/3/library/subprocess.html