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 스크립트에는 표준 입력 스트림에 두 줄의 입력이 필요합니다. 다음 중 하나가 규정됩니다.
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
각 후속 인수의 형식을 자체 출력 라인으로 지정하는 단일 호출입니다 . 이는 를 사용하는 것보다 변경 가능한 데이터에 더 적합합니다echo
.왜 printf가 echo보다 나은가요?.printf '%s\n' 'line 1' 'line 2' | python3 whatever.py
여기 문서를 사용하여 리디렉션하세요.
python3 whatever.py <<'END_INPUT' line 1 line 2 END_INPUT