curl
명령의 출력을 구문 분석해야 합니다 .
curl --user test:test http://192.168.1.1/security/pkm.html | egrep '@company|config.pkm.password'
그러면 다음이 반환됩니다.
<input type="text" id="config.pkm.dentity" name="config.pkm.identity" value="[email protected]" maxlength="64" />
<input type="text" id="config.pkm.inner_identity" name="config.pkm.inner_identity" value="[email protected]" maxlength="64" />
<input type="password" id="config.pkm.password" name="config.pkm.password" value="382738" maxlength="64" />
name="config.pkm.identity"
검색 해서 인쇄하고 싶어요 [email protected]
검색 name="config.pkm.inner_identity"
해서 인쇄하고 [email protected]
싶어요 검색 name="config.pkm.password"
해서 인쇄하고 싶어요382738
Grep은 [email protected]
, [email protected]
및 382738
. 만 출력합니다.
답변1
이를 위해서는 실제로 HTML 파서를 사용해야 하지만 (취약한) Awk 솔루션은 다음과 같습니다.
awk -F'"' '/pkm.identity/ {id = $8}; /inner_/ {inner = $8}; /password/ {pass = $8} END {print id" "inner" "pass}' file
[email protected] [email protected] 382738
답변2
쿼리로 정보를 얻으려면 정규식을 사용해야 합니다.캡처 그룹에 존재하지 않는 것 grep
. 따라서 (또는 ) 명령을 curl
사용하여 출력을 필터링 해 보십시오.sed
awk
sed -n 's/.*name="config.pkm.identity" value="\(.[^"]*\)".*$/\1/p'
필드의 값값붙잡혔습니다 \1
(정규식 캡처 그룹 #1). 그러면 값이 출력됩니다.이름필드는 입니다 config.pkm.identity
.
~을 위한이름사용하는 것입니다 config.pkm.password
:
sed -n 's/.*name="config.pkm.password" value="\(.[^"]*\)".*$/\1/p'
등.
해당 이름에 사용 가능한 모든 값을 표시하려면 다음을 사용하십시오.
sed -n 's/.*name=".*" value="\(.[^"]*\)".*$/\1</p'
고쳐 쓰다댓글을 위해
sed 쿼리에서 일치하는 값을 선택하려면 다음 구성표를 사용하십시오. |
파이프 기호(문을 나타냄 )를 사용하여 OR
추가 정규식 그룹화를 사용하십시오. 이를 통해 sed
주어진 변형 세트에서 최종 결과와 일치하도록 선택할 수 있습니다( |
파이프 기호 및 (
)
괄호를 이스케이프 처리하는 것도 참고하세요).
예를 들어:
sed -n -e 's/.*name="\(config.pkm.identity\|config.pkm.inner_identity\|config.pkm.password\)" value="\(.[^"]*\)".*$/\2/p'
그러면 스트림의 데이터와 이름이 검색되어 출력 config.pkm.identity
됩니다 config.pkm.inner_identity
.config.pkm.password
또한 최종 정규식 캡처 그룹 참조는 \2
이제 두 번째 그룹입니다.