枕
最新のバイナリとかrpmを取得するにあたっていちいちブラウザで取りに行くのはめんどい。
例えばcronとかで定期的に更新したいですねーと言う場合の話。
どーする?
releaseのhtmlに対してcurlとgrep使えばいいね。
$ curl -s https://github.com/cloudflare/cloudflared/releases | grep cloudflared-linux-x86_64.rpm | grep -Po '(?<=href=")[^"]*'
/cloudflare/cloudflared/releases/download/2021.8.7/cloudflared-linux-x86_64.rpm
/cloudflare/cloudflared/releases/download/2021.8.6/cloudflared-linux-x86_64.rpm
/cloudflare/cloudflared/releases/download/2021.8.5/cloudflared-linux-x86_64.rpm
/cloudflare/cloudflared/releases/download/2021.8.3/cloudflared-linux-x86_64.rpm
/cloudflare/cloudflared/releases/download/2021.8.2/cloudflared-linux-x86_64.rpm
/cloudflare/cloudflared/releases/download/2021.8.1/cloudflared-linux-x86_64.rpm
/cloudflare/cloudflared/releases/download/2021.8.0/cloudflared-linux-x86_64.rpm
/cloudflare/cloudflared/releases/download/2021.7.4/cloudflared-linux-x86_64.rpm
/cloudflare/cloudflared/releases/download/2021.7.3/cloudflared-linux-x86_64.rpm
/cloudflare/cloudflared/releases/download/2021.7.2/cloudflared-linux-x86_64.rpm
一番上が必ず最新になっているので head -n 1 で先頭1行だけ取ればいい。
のだが!
https://github.com/cloudflare/cloudflared/releases/download/2021.8.7/cloudflared-linux-x86_64.rpm
これ、何も考えずにそのままwgetとかcurlすると実ファイルが落ちてこない。
つまりリダイレクトしているから。
なので、リダイレクト先URLを取得してそれをcurlすればいい。
TARGET_URL=`curl -I -Ls -o /dev/null -w %{url_effective} ${URL}`
というのを作っておいた