명령줄 도구를 사용하여 로그인이 필요한 Linux VM에서 파일 다운로드

명령줄 도구를 사용하여 로그인이 필요한 Linux VM에서 파일 다운로드

환경: 명령줄 콘솔을 통해서만 Linux VM에 액세스할 수 있습니다.

표적: 파일을 다운로드해야 합니다.https://download.nlm.nih.gov/umls/kss/2020AA/umls-2020AA-full.zip 사용되는 일반적인 다운로드와 달리 wget로그인 페이지로 리디렉션됩니다.

나는 지금까지 무엇을 시도했는가:

텍스트 기반 브라우저를 사용해 보십시오.w3m,전자 링크. 최근 로그인 페이지가 변경될 때까지 작동했습니다.

로그인 페이지는 어떻게 되었나요?

이전에는 로그인 페이지에서 사용자 이름과 비밀번호를 사용했습니다. 하지만 최근에는 Google, Microsoft 등을 통해 로그인하는 옵션이 도입되었습니다.

질문

내 로컬 m/c에서 로그인 페이지는 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

그러나 가상 머신에서 텍스트 기반 브라우저로 검색하면 빈 페이지만 표시됩니다.

이 문제에 대한 해결책이 있습니까?

알아채다

  • 위의 zip 파일에 대한 링크는 다음과 같습니다.https://www.nlm.nih.gov/research/umls/licensedcontent/umlsarchives04.html#2020AA
  • 파일이 크기 때문에 로컬 시스템에 다운로드한 다음 가상 머신에 업로드할 수 있는 옵션이 없습니다.
  • 이 질문은 원래 StackOverflow에서 질문되었지만 누군가가 이 포럼에 질문하도록 제안했습니다(그래서 원래 게시물을 삭제했습니다).

답변1

API 토큰을 사용하여 프로그래밍 방식으로 UMLS 파일을 다운로드할 수 있습니다. 프로세스는 다음과 같습니다.https://documentation.uts.nlm.nih.gov/automating-downloads.html

  • 1단계: UMLS 구성 파일에서 API 키를 가져옵니다. 로그인하면 UTS "내 프로필" 영역에서 API 키를 찾을 수 있습니다.
  • 2단계: 다음 스크립트를 사용하여 필요한 파일을 다운로드합니다.
#!/bin/bash

export apikey=$1
export DOWNLOAD_URL=$2

export CAS_LOGIN_URL=https://utslogin.nlm.nih.gov/cas/v1/api-key


if [ $# -eq 0 ]; then echo "Usage: download.sh apikey download_url"
                      echo "  e.g. download.sh e33c59db-1234-abcd-efgh-0117ab2cd5gh2  https://download.nlm.nih.gov/umls/kss/rxnorm/RxNorm_full_current.zip"
                      echo "       download.sh e33c59db-1234-abcd-efgh-0117ab2cd5gh2 https://download.nlm.nih.gov/umls/kss/rxnorm/RxNorm_weekly_current.zip"
   exit
fi


if [ -z "$apikey" ]; then echo " Please enter you api key "
   exit
fi

if [ -z "$DOWNLOAD_URL" ]; then echo " Please enter the download_url "
   exit
fi


TGT=$(curl -d "apikey="$apikey -H "Content-Type: application/x-www-form-urlencoded" -X POST https://utslogin.nlm.nih.gov/cas/v1/api-key)

TGTTICKET=$(echo $TGT | tr "=" "\n")

for TICKET in $TGTTICKET
do
    if [[ "$TICKET" == *"TGT"* ]]; then
      SUBSTRING=$(echo $TICKET| cut -d'/' -f 7)
      TGTVALUE=$(echo $SUBSTRING | sed 's/.$//')
    fi
done
echo $TGTVALUE
STTICKET=$(curl -d "service="$DOWNLOAD_URL -H "Content-Type: application/x-www-form-urlencoded" -X POST https://utslogin.nlm.nih.gov/cas/v1/tickets/$TGTVALUE)
echo $STTICKET

curl -c cookie.txt -b cookie.txt -L -O -J $DOWNLOAD_URL?ticket=$STTICKET
rm cookie.txt

download.sh위 스크립트를 다음과 같이 호출할 수 있는 파일에 저장합니다 .

$ bash download.sh e33c59db-1234-abcd-efgh-0117ab2cd5gh2  https://download.nlm.nih.gov/umls/kss/2020AB/umls-2020AB-full.zip

관련 정보