Python
在 Python 中執行 shell 命令
我目前正在學習滲透測試和 Python 程式。我只想知道如何在 Python 中執行 Linux 命令。我要執行的命令是:
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080
如果我只是
Enter
?
您可以使用
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')
更好的是,您可以使用 subprocess 的呼叫,它更安全、更強大並且可能更快:
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
incommunicate
,並擷取呼叫它時可能遇到的異常。這是一個非常容易出錯的程式碼,因此您應該預期會發生錯誤並相應地處理它們。