Bash

使用 bash 向執行檔發送多行

  • May 1, 2022

因此,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 腳本在其標準輸入流上需要兩行輸入。以下任何一項都將提供:

  1. 子shell中的兩個呼叫echo
( echo 'line 1'; echo 'line 1' ) | python3 whatever.py
  1. echo複合命令中的兩個呼叫:
{ echo 'line 1'; echo 'line 1'; } | python3 whatever.py
  1. echo使用非標準-e選項將嵌入解釋\n為文字換行符的單個呼叫:
echo -e 'line 1\nline 2' | python3 whatever.py
  1. 一次呼叫printf,將每個後續參數格式化為自己的輸出行。這比 using 更適合可變數據echo,請參閱為什麼 printf 比 echo 更好?.
printf '%s\n' 'line 1' 'line 2' | python3 whatever.py
  1. 使用此處文件重定向:
python3 whatever.py <<'END_INPUT'
line 1
line 2
END_INPUT

引用自:https://unix.stackexchange.com/questions/700969