私は現在勉強しています浸透テストそして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
ちょうどprint
Pythonで使用して端末で実行すると、私が直接入力して押したのと同じように動作しますかEnter?
ベストアンサー1
次のように使用できます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'])
出力をキャプチャする場合、1つの方法は次のとおりです。
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
これはエラーが発生しやすいコードなので、エラーを予想してそれに応じて処理する必要があります。