Bash
使用 bash 向執行檔發送多行
因此,python 有一個方便的功能,
pwntools
可以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" | ...
)。
您的 Python 腳本在其標準輸入流上需要兩行輸入。以下任何一項都將提供:
- 子shell中的兩個呼叫
echo
:( echo 'line 1'; echo 'line 1' ) | python3 whatever.py
echo
複合命令中的兩個呼叫:{ echo 'line 1'; echo 'line 1'; } | python3 whatever.py
echo
使用非標準-e
選項將嵌入解釋\n
為文字換行符的單個呼叫:echo -e 'line 1\nline 2' | python3 whatever.py
- 一次呼叫
printf
,將每個後續參數格式化為自己的輸出行。這比 using 更適合可變數據echo
,請參閱為什麼 printf 比 echo 更好?.printf '%s\n' 'line 1' 'line 2' | python3 whatever.py
- 使用此處文件重定向:
python3 whatever.py <<'END_INPUT' line 1 line 2 END_INPUT