You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

697 lines
24 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html lang="en-us">
<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "BlogPosting",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https:\/\/h.cowbay.org"
},
"articleSection" : "post",
"name" : "[筆記] inxi 蒐集詳盡的硬體資訊 \/ inxi Collect Detail Hardware Info",
"headline" : "[筆記] inxi 蒐集詳盡的硬體資訊 \/ inxi Collect Detail Hardware Info",
"description" : "\x3cp\x3e最近因為一直碰到硬碟故障的問題算起來那一批同時購買的5X顆 seagate 2T硬碟已經有一半以上故障返修了\x26hellip;.\x3c\/p\x3e\n\x3cp\x3e然後又因為一直沒有添購新的硬碟只能用這些快過保\/已過保的撐著\x3c\/p\x3e\n\x3cp\x3e所以最近不斷的在更換機器內的硬碟而且還沒有熱插拔\x3c\/p\x3e\n\x3cp\x3e也導致原本負責處理盤點資產的同事困擾因為跟手邊的紀錄已經對不起來了\x3c\/p\x3e\n\x3cp\x3e然後就變成要對資產的時候需要一台一台登入然後去下不同的指令取得想要的硬體資訊超級麻煩的\x3c\/p\x3e",
"inLanguage" : "en",
"author" : "Eric Chang",
"creator" : "Eric Chang",
"publisher": "Eric Chang",
"accountablePerson" : "Eric Chang",
"copyrightHolder" : "Eric Chang",
"copyrightYear" : "2019",
"datePublished": "2019-04-23 15:28:56 \x2b0800 CST",
"dateModified" : "2019-04-23 15:28:56 \x2b0800 CST",
"url" : "https:\/\/h.cowbay.org\/post\/inx-collect-detail-hardware-info\/",
"wordCount" : "286",
"image" : "https://h.cowbay.orghttps://h.cowbay.org/images/post-default-10.jpg"",
"keywords" : [ ""linux"",""bsd"",""inventory"","Blog" ]
}
</script>
<title>[筆記] inxi 蒐集詳盡的硬體資訊 / inxi Collect Detail Hardware Info </title>
<meta name="description" content="some articles about job,food,passion sisters" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="all,follow">
<meta name="googlebot" content="index,follow,snippet,archive">
<link rel="stylesheet" id="ct-tracks-google-fonts-css" href="https://fonts.googleapis.com/css?family=Raleway%3A400%2C700&amp;subset=latin%2Clatin-ext&amp;ver=4.7.2" type="text/css" media="all">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
<link href="https://h.cowbay.org/css/style.css?v=1629957884" rel="stylesheet" id="theme-stylesheet" type='text/css' media='all'>
<link href="https://h.cowbay.org/css/custom.css?v=1629957884" rel="stylesheet" type='text/css' media='all'>
<link rel="shortcut icon" href="https://h.cowbay.org/img/favicon.ico" type="image/x-icon">
<link rel="icon" href="https://h.cowbay.org/img/favicon.ico" type="image/x-icon">
<script type="application/javascript">
var doNotTrack = false;
if (!doNotTrack) {
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-138954876-1', 'auto');
ga('send', 'pageview');
}
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
</head>
<body class="post-template-default single single-post single-format-standard ct-body singular singular-post not-front standard">
<div id="overflow-container" class="overflow-container">
<a class="skip-content" href="#main">Skip to content</a>
<header id="site-header" class="site-header" role="banner">
<div class='top-navigation'>
<div class='container'>
<div id="menu-secondary" class="menu-container menu-secondary" role="navigation">
<button id="toggle-secondary-navigation" class="toggle-secondary-navigation"><i class="fas fa-plus"></i></button>
<div class="menu">
<ul id="menu-secondary-items" class="menu-secondary-items">
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/ansible">ansible</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/linux">linux</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/proxmox">proxmox</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/ps">ps</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/%E7%A2%8E%E5%BF%B5">碎念</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/%E7%AD%86%E8%A8%98">筆記</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/%E7%BE%A4%E6%9A%89">群暉</a>
</li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category">
<a href="/categories/%E9%9B%9C%E5%BF%B5">雜念</a>
</li>
</ul>
</div>
</div>
<ul class="social-media-icons">
<li>
<a href="full%20Social%20profile%20url%20in%20facebook" data-animate-hover="pulse" class="facebook" target="_blank">
<i class="fab fa-facebook-square" title="facebook"></i>
<span class="screen-reader-text">facebook</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20googleplus" data-animate-hover="pulse" class="gplus" target="_blank">
<i class="fab fa-google-plus-g" title="googleplus"></i>
<span class="screen-reader-text">googleplus</span>
</a>
</li>
<li>
<a href="chang0206" data-animate-hover="pulse" class="twitter" target="_blank">
<i class="fab fa-twitter-square" title="twitter"></i>
<span class="screen-reader-text">twitter</span>
</a>
</li>
<li>
<a href="chang0206" data-animate-hover="pulse" class="instagram" target="_blank">
<i class="fab fa-instagram" title="instagram"></i>
<span class="screen-reader-text">instagram</span>
</a>
</li>
<li>
<a href="mailto:mc@hotshraingmy.info" data-animate-hover="pulse" class="email">
<i class="fas fa-envelope" title="email"></i>
<span class="screen-reader-text">email</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20linkedin" data-animate-hover="pulse" class="linkedin" target="_blank">
<i class="fab fa-linkedin-in" title="linkedin"></i>
<span class="screen-reader-text">linkedin</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20stackoverflow" data-animate-hover="pulse" class="stackoverflow" target="_blank">
<i class="fab fa-stack-overflow" title="stackoverflow"></i>
<span class="screen-reader-text">stackoverflow</span>
</a>
</li>
<li>
<a href="changchichung" data-animate-hover="pulse" class="github" target="_blank">
<i class="fab fa-github" title="github"></i>
<span class="screen-reader-text">github</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20pinterest" data-animate-hover="pulse" class="pinterest" target="_blank">
<i class="fab fa-pinterest" title="pinterest"></i>
<span class="screen-reader-text">pinterest</span>
</a>
</li>
<li>
<a href="https://h.cowbay.org/index.xml" data-animate-hover="pulse" class="rss" target="_blank">
<i class="fas fa-rss" title="rss"></i>
<span class="screen-reader-text">rss</span>
</a>
</li>
</ul></div>
</div>
<div class="container">
<div id="title-info" class="title-info">
<div id='site-title' class='site-title'>
<a href="/"> MC部落 </a>
</div>
</div>
<button id="toggle-navigation" class="toggle-navigation">
<i class="fas fa-bars"></i>
</button>
<div id="menu-primary-tracks" class="menu-primary-tracks"></div>
<div id="menu-primary" class="menu-container menu-primary" role="navigation">
<p class="site-description">Whats the Worst That Could Happen?</p>
<div class="menu">
<ul id="menu-primary-items" class="menu-primary-items">
<li class='menu-item menu-item-type-custom menu-item-object-custom '>
<a href="https://h.cowbay.org/">Home</a>
</li>
<li class='menu-item menu-item-type-post_type menu-item-object-page '>
<a href="https://h.cowbay.org/about/">About</a>
</li>
<li class='menu-item menu-item-type-post_type menu-item-object-page '>
<a href="https://h.cowbay.org/contact/">Get in touch</a>
</li>
</ul>
</div>
</div>
</div>
</header>
<div id="main" class="main" role="main">
<div id="loop-container" class="loop-container">
<div class="post type-post status-publish format-standard has-post-thumbnail hentry category-design tag-design tag-standard-2 tag-tagalicious tag-travel entry full-without-featured odd excerpt-1">
<div class='featured-image lazy lazy-bg-image' data-background="https://h.cowbay.org/images/post-default-10.jpg">
</div>
<div class="entry-meta">
<span class="date">23 April</span> <span> / </span>
<span class="author">
<a href="https://github.com/changchichung" title="Posts by Eric Chang" rel="author">Eric Chang</a>
</span>
<span class="category">
<span> / </span>
<a href="/categories/%E7%AD%86%E8%A8%98">筆記</a>
</span>
</div>
<div class='entry-header'>
<h1 class='entry-title'> [筆記] inxi 蒐集詳盡的硬體資訊 / inxi Collect Detail Hardware Info</h1>
</div>
<div class="entry-container">
<div class="entry-content">
<article>
<p>最近因為一直碰到硬碟故障的問題算起來那一批同時購買的5X顆 seagate 2T硬碟已經有一半以上故障返修了&hellip;.</p>
<p>然後又因為一直沒有添購新的硬碟,只能用這些快過保/已過保的撐著</p>
<p>所以最近不斷的在更換機器內的硬碟,而且還沒有熱插拔!</p>
<p>也導致原本負責處理盤點資產的同事困擾,因為跟手邊的紀錄已經對不起來了</p>
<p>然後就變成要對資產的時候,需要一台一台登入,然後去下不同的指令,取得想要的硬體資訊,超級麻煩的!</p>
<p>幾次之後終於決定透過ansible來做這件事</p>
<p>一開始的想法很簡單,就用 lshw/dmidecode這些指令去做</p>
<p>可是因為手邊的機器有ubuntu 18.04/16.04/14.04 , Debian 9 , Proxmox (based on debian ) , CentOS , FreeNAS</p>
<p>而有些系統預設沒有 lshw / dmidecode (對FreeNAS 就是說你)</p>
<p>所以變成要依照系統不同去下不同的指令雖然都是ansible在跑但是看到playbook的內容就很煩啊</p>
<p>然後就不小心讓我翻到了 inxi 這個指令,根本就是救星啊!</p>
<p>直接來看輸出的範例</p>
<p><img src="http://i.imgur.com/OSx9cnz.png" alt="sample of inxi output"></p>
<p>有沒有,是不是很優!</p>
<p>而且簡單易懂,還能抓到同事想看的資料,像是廠牌、型號、序號、記憶體類型(DDR2/3/4)</p>
<p>所以馬上捨棄 lshw/dmidecode ,改用 inxi 來跑</p>
<p>ansible role 的內容也很簡單</p>
<p>就偵測完之後,把結果送出給設定好的收件人</p>
<p>只是因為系統不同,大致上要分成 ubuntu/debian/centos 以及 freebsd 兩種</p>
<p>所以同樣的task 要跑兩次一個要帶sudo 一個不用帶</p>
<p>然後BSD系列的機器在inventory 裡面要帶入 ansible_ssh_user</p>
<p>就這樣,沒有什麼太困難的</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-YAML" data-lang="YAML"><span style="color:#75715e">######### use inxi instead ##################</span>
- <span style="color:#66d9ef">name</span>: copy inxi binary to remote Ubnutu/Debian
<span style="color:#66d9ef">become</span>: yes
<span style="color:#66d9ef">become_method</span>: sudo
<span style="color:#66d9ef">copy</span>:
<span style="color:#66d9ef">src</span>: inxi
<span style="color:#66d9ef">dest</span>: /usr/local/bin/inxi
<span style="color:#66d9ef">mode</span>: a+rx,u+rwx
<span style="color:#66d9ef">when</span>: ansible_distribution == <span style="color:#e6db74">&#34;Ubuntu&#34;</span> or ansible_distribution == <span style="color:#e6db74">&#34;Debian&#34;</span> or ansible_distribution == <span style="color:#e6db74">&#34;CentOS&#34;</span>
- <span style="color:#66d9ef">name</span>: copy inxi binary to remote FreeBSD
<span style="color:#66d9ef">copy</span>:
<span style="color:#66d9ef">src</span>: inxi
<span style="color:#66d9ef">dest</span>: /usr/local/bin/inxi
<span style="color:#66d9ef">mode</span>: a+rx,u+rwx
<span style="color:#66d9ef">when</span>: ansible_distribution == <span style="color:#e6db74">&#34;FreeBSD&#34;</span>
- <span style="color:#66d9ef">name</span>: run inxi to collect Ubuntu/Debian hardware info
<span style="color:#66d9ef">become</span>: yes
<span style="color:#66d9ef">become_method</span>: sudo
<span style="color:#66d9ef">shell</span>: <span style="color:#e6db74">&#34;/usr/local/bin/inxi -c -Dxx -C -m -Z&#34;</span>
<span style="color:#66d9ef">register</span>: du_hw_info
<span style="color:#66d9ef">when</span>: ansible_distribution == <span style="color:#e6db74">&#34;Ubuntu&#34;</span> or ansible_distribution == <span style="color:#e6db74">&#34;Debian&#34;</span> or ansible_distribution == <span style="color:#e6db74">&#34;CentOS&#34;</span>
- <span style="color:#66d9ef">name</span>: run inxi to collect FreeBSD hardware info
<span style="color:#66d9ef">shell</span>: <span style="color:#e6db74">&#34;/usr/local/bin/inxi -c -Dxx -C -m -Z&#34;</span>
<span style="color:#66d9ef">register</span>: bsd_hw_info
<span style="color:#66d9ef">when</span>: ansible_distribution == <span style="color:#e6db74">&#34;FreeBSD&#34;</span>
- <span style="color:#66d9ef">name</span>: set Ubuntu/Debian inventory file
<span style="color:#66d9ef">template</span>:
<span style="color:#66d9ef">src</span>: etc/inventory.txt.j2
<span style="color:#66d9ef">dest</span>: <span style="color:#e6db74">&#34;/tmp/{{ ansible_hostname }}_inventory.txt&#34;</span>
<span style="color:#66d9ef">mode</span>: a+r,u+rw
<span style="color:#66d9ef">when</span>: ansible_distribution == <span style="color:#e6db74">&#34;Ubuntu&#34;</span> or ansible_distribution == <span style="color:#e6db74">&#34;Debian&#34;</span> or ansible_distribution == <span style="color:#e6db74">&#34;CentOS&#34;</span>
- <span style="color:#66d9ef">name</span>: set FreeBSD inventory file
<span style="color:#66d9ef">template</span>:
<span style="color:#66d9ef">src</span>: etc/freenas_inventory.txt.j2
<span style="color:#66d9ef">dest</span>: <span style="color:#e6db74">&#34;/tmp/{{ ansible_hostname }}_inventory.txt&#34;</span>
<span style="color:#66d9ef">mode</span>: a+r,u+rw
<span style="color:#66d9ef">when</span>: ansible_distribution == <span style="color:#e6db74">&#34;FreeBSD&#34;</span>
- <span style="color:#66d9ef">name</span>: send inventory file via mail
<span style="color:#66d9ef">tags</span>: mail
<span style="color:#66d9ef">mail</span>:
<span style="color:#66d9ef">host</span>: <span style="color:#ae81ff">192.168.11.173</span>
<span style="color:#66d9ef">port</span>: <span style="color:#ae81ff">25</span>
<span style="color:#66d9ef">secure</span>: starttls
<span style="color:#66d9ef">subject</span>: <span style="color:#e6db74">&#34;{{ ansible_hostname }} inventory file&#34;</span>
<span style="color:#66d9ef">from</span>: ansible
<span style="color:#66d9ef">to</span>: <span style="color:#e6db74">&#34;{{ recipient }}&#34;</span>
<span style="color:#75715e">#body: &#34;{{ mail_body.stdout_lines }}&#34;</span>
<span style="color:#66d9ef">attach</span>: <span style="color:#e6db74">&#34;/tmp/{{ ansible_hostname }}_inventory.txt&#34;</span>
</code></pre></div><p>inventory 內容</p>
<pre><code>hqs01.abc.com ansible_ssh_host=192.168.11.1
hqs210.abc.com
hqs230.abc.com
hqs231.abc.com
hqs234.abc.com
hqs03.abc.com
hqs020.abc.com
hqs019.abc.com
hqs010.abc.com
hqs05.abc.com
hqs173.abc.com
###BSD Hosts ###
hqs099.abc.com ansible_ssh_host=192.168.11.99 ansible_ssh_port=22 ansible_ssh_user=root
hqs202.abc.com ansible_ssh_host=192.168.11.202 ansible_ssh_port=22 ansible_ssh_user=root
bbs089.abc.com ansible_ssh_host=192.168.0.89 ansible_ssh_user=root
</code></pre><p>ansible 又發揮了一次,另外,感覺這個指令可以用來寫資產管理系統耶&hellip;威力強大</p>
<p>而且又不用管作業系統是什麼,反正有執行檔,直接派過去 remote 端就好了!</p>
<p>真是讓我相見恨晚啊!</p>
</article>
</div>
<div class='entry-meta-bottom'>
<div class="entry-categories"><p><span>Categories</span>
<a href="/categories/%E7%AD%86%E8%A8%98" title="View all posts in 筆記">筆記</a>
</p>
</div>
<div class="entry-tags"><p><span>Tags</span>
<a href="/tags/linux" title="View all posts tagged linux">linux</a>
<a href="/tags/bsd" title="View all posts tagged bsd">bsd</a>
<a href="/tags/inventory" title="View all posts tagged inventory">inventory</a>
</p></div> </div>
<div class="author-meta">
<div class="author">
<img alt='Eric Chang' src="https://www.gravatar.com/avatar/23f8ed94e007297499ac8df1641b3ff5?s=100&d=identicon" class='avatar avatar-72 photo' height='72' width='72'>
<span>
Written by:<a href="https://github.com/changchichung" title="Posts by Eric Chang" rel="author">Eric Chang</a> </span>
</div>
<div class="bio">
<p>塵世裡一個迷途小書僮</p>
<a class="facebook" target="_blank"
href="full%20Social%20profile%20url%20in%20facebook">
<i class="fab fa-facebook-f"
title="facebook icon"></i>
</a>
<a class="googleplus" target="_blank"
href="full%20profile%20url%20in%20googleplus">
<i class="fab fa-google-plus-g"
title="googleplus icon"></i>
</a>
<a class="twitter" target="_blank"
href="chang0206">
<i class="fab fa-twitter-square"
title="twitter icon"></i>
</a>
<a class="linkedin" target="_blank"
href="full%20profile%20url%20in%20linkedin">
<i class="fab fa-linkedin"
title="linkedin icon"></i>
</a>
<a class="email" target="_blank"
href="mailto:mc@hotshraingmy.info">
<i class="fas fa-envelope"
title="email icon"></i>
</a>
<a class="instagram" target="_blank"
href="chang0206">
<i class="fab fa-instagram"
title="instagram icon"></i>
</a>
<a class="stackoverflow" target="_blank"
href="full%20profile%20url%20in%20stackoverflow">
<i class="fab fa-stack-overflow"
title="stackoverflow icon"></i>
</a>
<a class="github" target="_blank"
href="changchichung">
<i class="fab fa-github"
title="github icon"></i>
</a>
<a class="pinterest" target="_blank"
href="full%20profile%20url%20in%20pinterest">
<i class="fab fa-pinterest"
title="pinterest icon"></i>
</a>
</div>
</div>
</div>
</div>
<section id="comments" class="comments">
<div id="disqus_thread"></div>
<script type="application/javascript">
var disqus_config = function () {
};
(function() {
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) {
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.';
return;
}
var d = document, s = d.createElement('script'); s.async = true;
s.src = '//' + "h-cowbay-org-1" + '.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</section>
</div>
</div>
<footer id="site-footer" class="site-footer" role="contentinfo">
<h1>
<a href=""> MC部落 </a>
</h1>
<p class="site-description">Whats the Worst That Could Happen?</p>
<div id="menu-footer" class="menu-container menu-footer" role="navigation">
<div class="menu">
<ul id="menu-footer-items" class="menu-footer-items">
</ul>
</div> </div>
<ul class="social-media-icons">
<li>
<a class="facebook" target="_blank"
href="full%20Social%20profile%20url%20in%20facebook" >
<i class="fab fa-facebook-f" title="facebook"></i>
<span class="screen-reader-text">facebook</span>
</a>
</li>
<li>
<a class="googleplus" target="_blank"
href="full%20profile%20url%20in%20googleplus" >
<i class="fab fa-google-plus-g" title="googleplus"></i>
<span class="screen-reader-text">googleplus</span>
</a>
</li>
<li>
<a href="chang0206" class="twitter" target="_blank">
<i class="fab fa-twitter-square" title="twitter"></i>
<span class="screen-reader-text">twitter</span>
</a>
</li>
<li>
<a href="chang0206" class="instagram" target="_blank">
<i class="fab fa-instagram" title="instagram"></i>
<span class="screen-reader-text">instagram</span>
</a>
</li>
<li>
<a href="mailto:mc@hotshraingmy.info" class="email">
<i class="fas fa-envelope" title="email"></i>
<span class="screen-reader-text">email</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20linkedin" class="linkedin" target="_blank">
<i class="fab fa-linkedin-in" title="linkedin"></i>
<span class="screen-reader-text">linkedin</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20stackoverflow" class="stackoverflow" target="_blank">
<i class="fab fa-stack-overflow" title="stackoverflow"></i>
<span class="screen-reader-text">stackoverflow</span>
</a>
</li>
<li>
<a href="changchichung" class="github" target="_blank">
<i class="fab fa-github" title="github"></i>
<span class="screen-reader-text">github</span>
</a>
</li>
<li>
<a href="full%20profile%20url%20in%20pinterest" class="pinterest" target="_blank">
<i class="fab fa-pinterest" title="pinterest"></i>
<span class="screen-reader-text">pinterest</span>
</a>
</li>
<li>
<a href="https://h.cowbay.org/index.xml" data-animate-hover="pulse" class="rss" target="_blank">
<i class="fas fa-rss" title="rss"></i>
<span class="screen-reader-text">rss</span>
</a>
</li>
</ul> <div class="design-credit">
<p>© 2018 Göran Svensson</p>
<p>Nederburg Hugo Theme by <a href="https://appernetic.io">Appernetic</a>.</p>
<p>A port of Tracks by Compete Themes.</p>
</div>
</footer>
</div>
<script src="https://h.cowbay.org/js/jquery.min.js"></script>
<script src="https://h.cowbay.org/js/jquerymigrate.js"></script>
<script src="https://h.cowbay.org/js/production.min.js?v=1629957884"></script>
</body>
</html>