Bashを使用して複数行を実行可能ファイルに送信する

Bashを使用して複数行を実行可能ファイルに送信する

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行の入力が必要です。次のいずれかが規定されます。

  1. echoサブシェルから2つの呼び出し:

    ( echo 'line 1'; echo 'line 1' ) | python3 whatever.py
    
  2. echo複合コマンドの2つの呼び出し:

    { echo 'line 1'; echo 'line 1'; } | python3 whatever.py
    
  3. 1回の呼び出しは非echo標準オプションを使用して、包含をリテラル改行として-e解釈します。\n

    echo -e 'line 1\nline 2' | python3 whatever.py
    
  4. printf各後続の引数の形式を独自の出力ラインとして指定する単一の呼び出しです。これは、使用するよりも変更可能なデータに適していますechoなぜprintfがechoより優れているのですか?

    printf '%s\n' 'line 1' 'line 2' | python3 whatever.py
    
  5. ここのドキュメントを使用してリダイレクトしてください。

    python3 whatever.py <<'END_INPUT'
    line 1
    line 2
    END_INPUT
    

関連情報