Lynx

在需要登錄的 Linux VM 中使用命令行工具下載文件

  • February 8, 2021

環境:我只能通過命令行控制台訪問的 Linux VM。

目標:我需要下載文件:https ://download.nlm.nih.gov/umls/kss/2020AA/umls-2020AA-full.zip 與使用的典型下載不同wget,這會重定向到登錄頁面。

我到目前為止所嘗試的

嘗試使用基於文本的瀏覽器:w3melinks。在登錄頁面最近發生變化之前,它曾經可以正常工作。

登錄頁面發生了什麼變化?

早些時候,登錄頁面用於獲取使用者名和密碼。但最近他們引入了通過Google、微軟等登錄的選項。

問題

在我的本地 m/c 中,登錄頁面如下所示:

在此處輸入圖像描述

但是在虛擬機中使用基於文本的瀏覽器進行瀏覽時,它只顯示一個空白頁面。

這個問題有什麼解決辦法嗎?

注意

可以使用 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

引用自:https://unix.stackexchange.com/questions/620036