🦁
【splunk】パッケージのダウンロードURLをCLIで取得
概要
- 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