2013-11-21 2 views
0

BASH를 사용 중이며 요청에 따라 서버 쪽에서 생성되는 TXT 파일을 다운로드해야합니다.Bash - 파일을 다운로드하고 필요하면 로그인하십시오.

http://1.1.1.1:4884/page.aspx?fileID=123456&lang=en&Export=1 

Export=1는 .NET 응용 프로그램에 의해 체포되고 내가 FileID에 기반으로, TXT 파일로 제공하고있어이 URL이 같은 것을 의미합니다.
로그인하지 않은 경우 URL에 ?ReturnUrl이 포함 된 로그인 양식으로 리디렉션되어 로그인시 요청한 페이지로 다시 리디렉션됩니다.

BASH를 사용하여이 파일을 성공적으로 다운로드하려면 cURL/wget/lynx. 비 대화식이어야합니다.

curl 및 wget 및 lynx 자동화 (cmd-log)에 --cookie 옵션을 사용해 보았습니다. Lynx가 가장 잘 작동했지만, 어떤 이유로 파일 다운로드 프롬프트를 자동화 할 수 없었습니다.

도와주세요. 추가 정보가 필요하면 알려 드리겠습니다.

+0

'wget'은'--http-password'와'--http-user' 옵션을 가지고 있습니다 ... 그들을 시도하십시오 ... 자세한 정보는'man wget'을 확인하십시오 ... 아무것도 작동하지 않는다면 'expect' 유틸리티. 별도로 설치해야 할 수도 있습니다. (자세한 내용은'man expect'을 확인하십시오.) – anishsane

+0

나는 기대에 대해 잘 알고 있습니다. 어떻게 사용할 수 있다고 생각하십니까? --http-password/user 옵션은 폼 기반 인증을 지원하지 않습니다. –

+0

아, 양식 기반 인증입니까? 질문에 언급되지 않았거나 어쩌면 놓쳤습니다 ... – anishsane

답변

0
  1. 컬 사용.
  2. 코드 다음과 같은 방법 :
    • 시도는 파일을 다운로드
    • 실패 할 경우, 로그인하고 당신은 항상 컬의 -c 옵션을 사용할 필요가
  3. 을 시작으로 이동 (로그인 페이지로 리디렉션) curl 호출 사이에 쿠키를 저장하는 방법
  4. curl을 사용하여 로그인하려면 서버의 양식을 알아야합니다. 즉, 일반적으로 로그인 및 암호를 입력하는 필드의 이름입니다.
  5. 서버에 데이터를 보내려면 curl의 -d 옵션을 사용하십시오. 서버에 쿠키를 보내려면 -b (또는 --cookie)를 사용하십시오.
+0

시도 : 'anton @ hostname ~ $ curl -c -d "txtUsername = admin & txtPassword = admin"http : //1.1.1.1 : 4884/FormLoginAuth.aspx' . 결과 :'FormLoginAuth.aspx'의 소스가'stdout'에 출력됩니다. '--data = "txtUsername = admin & txtPassword = admin"'을 사용할 때와 같은 결과 –

관련 문제