您可以这样使用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)
或者,不调用shell:
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
in communicate
,并且还应捕获调用它时可能获得的异常。这是一个非常容易出错的代码,因此您应该期望会发生错误并相应地进行处理。
https://docs.python.org/3/library/subprocess.html