🦁

【splunk】パッケージのダウンロードURLをCLIで取得

2023/03/04に公開

概要

  • splunkをansible等で自動設定したいとき、地味に困るのがダウンロードURLの取得です。
    以前は こちら の方法で生成できましたが、2023年現在はエラーとなってしまいます。
  • このURLはブラウザでダウンロードページにアクセスすれば取得できますが、
    そのためだけにブラウザを開くのは面倒なのでコマンドラインで抽出します。
  • この方法はダウンロードページのフォーマットに依存しているため、
    splunk社のサイトリニューアル等で使えなくなる可能性があります。

要件

以下パッケージがインストールされていること。

  • Fedora/CentOS/RHEL
    yum install wget curl libxml2
    
  • Debian/Ubuntu
    apt install wget curl libxml2
    

事前準備

パッケージのタイプ・アーキテクチャを変数で定義する。
type_arch の詳細は こちら を参照。今回は 64bit(X86_64) で指定。

  • Fedora/CentOS/RHEL
    type_pkg=".rpm" ; type_arch="x86_64"
    
  • Debian/Ubuntu
    type_pkg=".deb" ; type_arch="x86_64"
    
  • Windows
    type_pkg=".msi" ; type_arch="x86_64"
    
  • MacOS
    type_pkg=".dmg" ; type_arch="x86_64"
    
  • FreeBSD (only Universal Forwarder)
    type_pkg=".txz" ; type_arch="x86_64"
    
  • Solaris (only Universal Forwarder)
    type_pkg=".p5p" ; type_arch="x86_64"
    

URL取得(Enterprise)

  • 最新バージョン
    curl -kfs https://www.splunk.com/en_us/download/splunk-enterprise.html \
    | grep "${type_pkg}" \
    | grep "${type_arch}" \
    | tr -s " " \
    | xmllint --html - \
    | xmllint --xpath "string(//a/@data-link)" -
    
  • 過去バージョン
    指定可能なバージョン一覧は こちら を参照。
    splunk_version="8.2.9"
    
    curl -kfs https://www.splunk.com/en_us/download/previous-releases.html \
    | grep "${splunk_version}" \
    | grep "${type_pkg}" \
    | grep "${type_arch}" \
    | tr -s " " \
    | xmllint --html - \
    | xmllint --xpath "string(//a/@data-link)" -
    

URL取得(Universal Forwarder)

  • 最新バージョン
    curl -kfs https://www.splunk.com/en_us/download/universal-forwarder.html \
    | grep "${type_pkg}" \
    | grep "${type_arch}" \
    | tr -s " " \
    | xmllint --html - \
    | xmllint --xpath "string(//a/@data-link)" -
    
  • 過去バージョン
    指定可能なバージョン一覧は こちら を参照。
    splunk_version="8.2.9"
    
    curl -kfs https://www.splunk.com/en_us/download/previous-releases-universal-forwarder.html \
    | grep "${splunk_version}" \
    | grep "${type_pkg}" \
    | grep "${type_arch}" \
    | tr -s " " \
    | xmllint --html - \
    | xmllint --xpath "string(//a/@data-link)" -
    

実行例

{
    url=$(\
        curl -kfs https://www.splunk.com/en_us/download/universal-forwarder.html \
        | grep "${type_pkg}" \
        | grep "${type_arch}" \
        | tr -s " " \
        | xmllint --html - \
        | xmllint --xpath "string(//a/@data-link)" - \
        )
    wget ${url} && rpm -qi $(basename ${url})
}

補足

  • ページをそのままパースするとエラーが発生するため、
    パッケージタイプでのgrep・連続スペースの削除を行っています。
  • この段階でダウンロードページの Download Now 部分だけが残ります。
    ダウンロードURLは data-link に記載されているので、この値を抽出しています。
    <!-- 例:Enterprise(最新) -->
    <a class="splunk-btn sp-btn-solid sp-btn-pink"
            data-arch="x86_64"
            data-filename="splunk-9.0.4-de405f4a7979-linux-2.6-x86_64.rpm"
            data-link="https://download.splunk.com/products/splunk/releases/9.0.4/linux/splunk-9.0.4-de405f4a7979-linux-2.6-x86_64.rpm"
            data-md5="https://download.splunk.com/products/splunk/releases/9.0.4/linux/splunk-9.0.4-de405f4a7979-linux-2.6-x86_64.rpm.md5"
            data-oplatform="linux"
            data-platform="linux"
            data-sha512="https://download.splunk.com/products/splunk/releases/9.0.4/linux/splunk-9.0.4-de405f4a7979-linux-2.6-x86_64.rpm.sha512"
            data-thankyou="/content/splunkcom/en_us/download/splunk-enterprise/thank-you-enterprise.html"
            data-track-analytics="true"
            data-product="splunk"
            data-version="9.0.4"
            href="#">
        <span>Download Now</span>
    </a>
    

Discussion