所以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" | ...
)。
答案1
您的 Python 脚本需要在其标准输入流上输入两行。以下任何一项都将规定:
echo
子 shell 中的两次调用:( 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
,将每个后续参数格式化为其自己的输出行。这比使用更适合可变数据echo
,请参阅为什么 printf 比 echo 更好?。printf '%s\n' 'line 1' 'line 2' | python3 whatever.py
使用此处文档重定向:
python3 whatever.py <<'END_INPUT' line 1 line 2 END_INPUT