コマンドラインツールを使用してログインが必要な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

関連情報