pwntools
したがって、Pythonには実行可能ファイルの一部として便利な機能があります。sendline()
Bashでこの機能をどのようにエミュレートできますか?
はい
#whatever.py
x = input("First input please: ")
y = input("Second input please: ")
最初の入力に応答できることを知っていますが、複数行echo "input1" | python3 whatever.py
で動作させることはできません(echo "input1\ninput2" | ...
動作しない、動作しないecho "input1"; echo "input2" | ...
)。
答え1
Pythonスクリプトには、標準入力ストリームに2行の入力が必要です。次のいずれかが規定されます。
echo
サブシェルから2つの呼び出し:( echo 'line 1'; echo 'line 1' ) | python3 whatever.py
echo
複合コマンドの2つの呼び出し:{ echo 'line 1'; echo 'line 1'; } | python3 whatever.py
1回の呼び出しは非
echo
標準オプションを使用して、包含をリテラル改行として-e
解釈します。\n
echo -e 'line 1\nline 2' | python3 whatever.py
printf
各後続の引数の形式を独自の出力ラインとして指定する単一の呼び出しです。これは、使用するよりも変更可能なデータに適していますecho
。なぜprintfがechoより優れているのですか?。printf '%s\n' 'line 1' 'line 2' | python3 whatever.py
ここのドキュメントを使用してリダイレクトしてください。
python3 whatever.py <<'END_INPUT' line 1 line 2 END_INPUT