{"id":276,"date":"2017-06-26T11:17:51","date_gmt":"2017-06-26T03:17:51","guid":{"rendered":"https:\/\/blog.jsjs.org\/?p=276"},"modified":"2017-06-26T11:17:51","modified_gmt":"2017-06-26T03:17:51","slug":"ansible%e5%b0%8f%e7%bb%93%ef%bc%88%e5%8d%81-%e4%ba%8c%ef%bc%89%e7%a3%81%e7%9b%98%e4%bd%bf%e7%94%a8%e7%8e%87%e7%ad%9b%e9%80%89","status":"publish","type":"post","link":"https:\/\/blog.jsjs.org\/?p=276","title":{"rendered":"ansible\u5c0f\u7ed3\uff08\u5341 \u4e8c\uff09\u78c1\u76d8\u4f7f\u7528\u7387\u7b5b\u9009"},"content":{"rendered":"<p>\u5e74\u5e95\u4e86\u867d\u7136\u6709\u5404\u79cd\u544a\u8b66\uff0c\u4e0d\u8fc7\u8fd8\u662f\u9700\u8981\u505a\u4e00\u4e0b\u5168\u7f51\u5de1\u68c0\uff0c\u8fd9\u91cc\u4ee5\u78c1\u76d8\u4f7f\u7528\u7387\u4e3a\u4f8b\u3002\u7531\u4e8e\u76ee\u524d\u5e73\u53f0\u4e0a\u4f7f\u7528\u7684\u662f\u5546\u4e1a\u7248\u7684\u81ea\u52a8\u5316\u5de5\u5177bmc\uff0c\u5176\u5728\u6267\u884c\u5206\u53d1\u90fd\u65b9\u9762\u975e\u5e38\u4e0d\u5b58\uff0c\u4e0d\u8fc7\u5728\u53d6\u503c\u8fd4\u56de\u4e0a\u505a\u7684\u4e0d\u597d\uff0d\uff0d\uff0d\u5f53\u7136\u4e5f\u548c\u5176\u662f\u5546\u4e1a\u5316\u5de5\u5177\u6709\u5173\uff0c\u5f88\u591a\u4e1c\u897f\u4e0d\u5f00\u6e90\uff0c\u7528shell \u7684\u8bed\u6cd5\u6982\u5ff5\u5199nsh\u65f6\u53c8\u6267\u884c\u4e0d\u901a\u8fc7\uff0cNND\u603b\u662f\u8981\u95ee\u539f\u5382\u652f\u6491 \u3002\u521a\u597d\u5728\u6d4b\u8bd5\u73af\u5883\u4e0a\u6709\u4e4b\u524d\u5b89\u88c5\u7684ansible\u73af\u5883\uff0c\u4e5f\u6d4b\u8bd5\u4e0b\u7528ansible \u6765\u5b9e\u73b0\u8be5\u529f\u80fd\u3002<\/p>\n<h3>\u4e00\u3001\u5b9e\u73b0\u76ee\u6807<\/h3>\n<p>\u5c06\u6240\u6709\u4e3b\u673a\u7684\u78c1\u76d8\u5927\u4e8e75%\u7684\u4e3b\u673a\u83b7\u53d6\u5230\uff0c\u5e76\u8f93\u51fa\u4e3a\u4e0b\u9762\u7684\u683c\u5f0f\uff1a<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><span class=\"pun\">\u4e3b\u673a<\/span><span class=\"pln\">IP <\/span><span class=\"pun\">\u4e3b\u673a\u540d<\/span> <span class=\"pun\">\u78c1\u76d8\u6302\u8f7d\u70b9\u4fe1\u606f<\/span> <span class=\"pun\">\u78c1\u76d8\u4f7f\u7528\u7387<\/span><\/li>\n<\/ol>\n<p>\u5047\u5982 host1\u4e0a\u6709\u591a\u4e2a\u5206\u533a\u90fd\u5927\u4e8e75% \uff0c\u5219\u5199\u591a\u6761\u3002\u5f53\u4e3b\u673a\u4e0a\u6ca1\u6709\u4e00\u53f0\u7b26\u5408\u65f6\uff0c\u5219\u4ec0\u4e48\u90fd\u4e0d\u8f93\u51fa\u3002<\/p>\n<p>\u6ce8\uff1a\u73b0\u7f51\u4e3b\u673a\u4e0a\u6709\u4e24\u4e2a bond \u7f51\u5361\uff0c\u5176\u4e2d\u4e00\u4e2a\u914d\u7f6e\u7684\u662f10\u6bb5\u7684IP\uff0c\u53e6\u4e00\u4e2a\u914d\u7f6e\u7684\u662f192\u6bb5\u7684IP\u3002\u8fd9\u91cc\u8981\u83b7\u53d6\u7684\u662f10\u6bb5\u7684IP\u3002<\/p>\n<h3>\u4e8c\u3001 ansible + awk \u7b80\u5355\u8f93\u51fa<\/h3>\n<p>\u8be5\u95ee\u9898\u6211\u5904\u7406\u7684\u7ed3\u679c\u662f\u4f7f\u7528ansible api \u5199\u7684\u4e00\u4e2apython\u811a\u672c\u5b9e\u73b0\u7684\u3002\u5148\u770b\u4e0b\u6211\u5728\u4e00\u4e2a\u6280\u672f\u7fa4\u548c\u4e00\u4e2a\u5927\u725b\u7684\u8ba8\u8bba\u7684\u7ed3\u679c(\u70b9\u51fb\u56fe\u7247\u770b\u5927\u56fe)\u3002<\/p>\n<p><a href=\"http:\/\/www.361way.com\/wp-content\/uploads\/2016\/01\/ansible-df.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-4996\" src=\"http:\/\/www.361way.com\/wp-content\/uploads\/2016\/01\/ansible-df-300x100.png\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" srcset=\"http:\/\/www.361way.com\/wp-content\/uploads\/2016\/01\/ansible-df-300x100.png 300w, http:\/\/www.361way.com\/wp-content\/uploads\/2016\/01\/ansible-df-768x257.png 768w, http:\/\/www.361way.com\/wp-content\/uploads\/2016\/01\/ansible-df.png 862w\" alt=\"ansible-df\" width=\"300\" height=\"100\" \/><\/a><\/p>\n<p>\u5982\u4e0a\u56fe\uff0c\u5927\u725b\u7684\u505a\u6cd5\u7528\u7684\u662fawk \u7684next\u65b9\u6cd5\u8fdb\u884c\u7684\u5904\u7406\uff0cawk \u7684next\u529f\u80fd\u6211\u4e5f\u505a\u8fc7\u8bb0\u5f55\uff0c\u5177\u4f53\u53c2\u770b<a href=\"http:\/\/www.361way.com\/awk-next-merge-lines\/4923.html\" target=\"_blank\" rel=\"noopener\">awk next\u591a\u884c\u5408\u5e76<\/a> \u3002<\/p>\n<p>\u8fd9\u91cc\u6709\u51e0\u4e2a\u6ce8\u610f\u70b9\u9700\u8981\u8bf4\u660e\u4e0b\uff1a<\/p>\n<p>1\u3001\u5927\u725b\u7684\u5199\u6cd5\u4e2d\u5728\u7b5b\u9009\u4e0a\u5199\u7684\u4e0d\u4e25\u8c28\uff0c$5\u524d\u5e94\u8be5\u6709int\u8f6c\u5316\uff0c\u4e0d\u8fc7\u4e0d\u80fd\u6b63\u786e\u7684\u53d6\u5230\u503c<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><span class=\"pun\">[<\/span><span class=\"pln\">root@361way <\/span><span class=\"pun\">~]<\/span><span class=\"com\"># df -hP|awk &#8216;NR&gt;1 &amp;&amp; $5 &gt; 20&#8217;<\/span><\/li>\n<li class=\"L1\"><span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">xvda1 <\/span><span class=\"lit\">20G<\/span> <span class=\"lit\">4.6G<\/span> <span class=\"lit\">15G<\/span> <span class=\"lit\">25<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><\/li>\n<li class=\"L2\"><span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">xvdb <\/span><span class=\"lit\">20G<\/span> <span class=\"lit\">645M<\/span> <span class=\"lit\">18G<\/span> <span class=\"lit\">4<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">data1<\/span><\/li>\n<li class=\"L3\"><span class=\"pun\">[<\/span><span class=\"pln\">root@361way <\/span><span class=\"pun\">~]<\/span><span class=\"com\"># df -hP|awk &#8216;NR&gt;1 &amp;&amp; int($5) &gt; 20&#8217;<\/span><\/li>\n<li class=\"L4\"><span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">xvda1 <\/span><span class=\"lit\">20G<\/span> <span class=\"lit\">4.6G<\/span> <span class=\"lit\">15G<\/span> <span class=\"lit\">25<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><\/li>\n<\/ol>\n<p>\u6709\u6ca1\u6709\u770b\u5230\uff0c\u5982\u679c\u4e0d\u505aint\u683c\u5f0f\u8f6c\u6362\u53d6\u7684\u7ed3\u679c\u662f\u6240\u6709\u5206\u533a\u7684\u4fe1\u606f\uff0c\u800c\u52a0\u4e0aint\u540e\u83b7\u53d6\u7684\u624d\u662f\u6211\u4eec\u60f3\u8981\u7684\u7ed3\u679c<\/p>\n<p>2\u3001\u5728ansible\u6267\u884c\u65f6$5\u524d\u9762\u8981\u52a0\u4e0a\u8f6c\u4e49<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><span class=\"com\"># ansible all -m shell -a &#8220;df -hP|awk &#8216;NR&gt;1 &amp;&amp; int($5) &gt; 50&#8242;&#8221;<\/span><\/li>\n<li class=\"L1\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.252<\/span> <span class=\"pun\">|<\/span><span class=\"pln\"> FAILED <\/span><span class=\"pun\">|<\/span><span class=\"pln\"> rc<\/span><span class=\"pun\">=<\/span><span class=\"lit\">2<\/span> <span class=\"pun\">&gt;&gt;<\/span><\/li>\n<li class=\"L2\"><span class=\"pln\">awk<\/span><span class=\"pun\">:<\/span><span class=\"pln\"> fatal<\/span><span class=\"pun\">:<\/span> <span class=\"lit\">0<\/span><span class=\"pln\"> is invalid as number of arguments <\/span><span class=\"kwd\">for<\/span><span class=\"pln\"> int<\/span><\/li>\n<li class=\"L3\"><span class=\"pun\">[<\/span><span class=\"pln\">root@361way <\/span><span class=\"pun\">~]<\/span><span class=\"com\"># df -hP|awk &#8216;NR&gt;1 &amp;&amp; int(\\$5) &gt; 20&#8217;<\/span><\/li>\n<li class=\"L4\"><span class=\"pln\">awk<\/span><span class=\"pun\">:<\/span><span class=\"pln\"> NR<\/span><span class=\"pun\">&gt;<\/span><span class=\"lit\">1<\/span> <span class=\"pun\">&amp;&amp;<\/span><span class=\"pln\"> int<\/span><span class=\"pun\">(<\/span><span class=\"pln\">\\$<\/span><span class=\"lit\">5<\/span><span class=\"pun\">)<\/span> <span class=\"pun\">&gt;<\/span> <span class=\"lit\">20<\/span><\/li>\n<li class=\"L5\"><span class=\"pln\">awk<\/span><span class=\"pun\">:<\/span> <span class=\"pun\">^<\/span><span class=\"pln\"> backslash not last character on line<\/span><\/li>\n<\/ol>\n<p>\u5982\u4e0a\u9762\u7684\u7ed3\u679c\uff0c\u5982\u679c\u5728ansible\u6267\u884c\u65f6\u4e0d\u52a0\u8f6c\u4e49\u65f6\u4f1a\u6709\u62a5\u9519\u63d0\u793a\uff0c\u5982\u679c\u52a0\u4e0a\u8f6c\u4e49\u5728\u4e3b\u673a\u7aef\u6267\u884c\u65f6\u4f1a\u81ea\u52a8\u662f\u5c06\u8f6c\u4e49\u7b26\u53bb\u6389\u7684\u7ed3\u679c\u3002\u800c\u5728\u4e3b\u673a\u7aef\u6267\u884c\u65f6\uff0c\u5982\u679c\u52a0\u4e0a\u4e86\u8f6c\u4e49\u4e5f\u4f1a\u62a5\u9519\u3002\u6240\u4ee5\u4e3b\u673a\u7aef\u4e00\u5b9a\u4e0d\u80fd\u52a0\u4e0a\u8f6c\u4e49\u3002<\/p>\n<p>3\u3001\u5728\u5b9e\u9645\u5e94\u7528\u65f6\uff0c\u8f93\u51fa\u7ed3\u679c\u53ef\u80fd\u548c\u5927\u725b\u7684\u8f93\u51fa\u6709\u5dee\u8ddd<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><span class=\"pun\">[<\/span><span class=\"pln\">root@localhost <\/span><span class=\"pun\">~]<\/span><span class=\"com\"># ansible all -m shell -a &#8220;df -hP|awk &#8216;NR&gt;1 &amp;&amp; int(\\$5) &gt; 30&#8242;&#8221;|awk &#8216;\/success\/{ip=$1;next}{print ip,$0}&#8217;<\/span><\/li>\n<li class=\"L1\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.252<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">sda9 <\/span><span class=\"lit\">9.9G<\/span> <span class=\"lit\">2.9G<\/span> <span class=\"lit\">6.5G<\/span> <span class=\"lit\">31<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">opt<\/span><\/li>\n<li class=\"L2\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.252<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">sda6 <\/span><span class=\"lit\">5.0G<\/span> <span class=\"lit\">1.9G<\/span> <span class=\"lit\">2.8G<\/span> <span class=\"lit\">41<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">tmp<\/span><\/li>\n<li class=\"L3\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.252<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">sda5 <\/span><span class=\"lit\">9.9G<\/span> <span class=\"lit\">3.9G<\/span> <span class=\"lit\">5.5G<\/span> <span class=\"lit\">42<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">usr<\/span><\/li>\n<li class=\"L4\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.252<\/span><\/li>\n<li class=\"L5\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.14<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">cciss<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">c0d0p5 <\/span><span class=\"lit\">9.9G<\/span> <span class=\"lit\">3.2G<\/span> <span class=\"lit\">6.3G<\/span> <span class=\"lit\">34<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">usr<\/span><\/li>\n<li class=\"L6\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.14<\/span><\/li>\n<li class=\"L7\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.16<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">cciss<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">c0d0p7 <\/span><span class=\"lit\">9.9G<\/span> <span class=\"lit\">4.0G<\/span> <span class=\"lit\">5.4G<\/span> <span class=\"lit\">43<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">tmp<\/span><\/li>\n<li class=\"L8\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.16<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">cciss<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">c0d0p5 <\/span><span class=\"lit\">9.9G<\/span> <span class=\"lit\">2.9G<\/span> <span class=\"lit\">6.5G<\/span> <span class=\"lit\">31<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">usrdf<\/span><span class=\"pun\">:<\/span> <span class=\"str\">`\/root\/.gvfs&#8217;: Permission denied<\/span><\/li>\n<li class=\"L9\"><span class=\"str\">10.212.52.16 <\/span><\/li>\n<\/ol>\n<p>\u4e0a\u9762\u7684\u7ed3\u679c\u662f\u6211\u5728\u81ea\u5df1\u7684\u6d4b\u8bd5\u73af\u5883\u4e0a\u6267\u884c\u7684\u7ed3\u679c\u3002\u53ef\u4ee5\u770b\u5230\u591a\u51fa\u7684\u7a7a\u884c\u4e5f\u6253\u5370\u4e86\u4e3b\u673a\u7684IP \u3002\u8fd8\u4f1a\u9700\u8981\u6ce8\u610f\u7684\uff0c\u6211\u8fd9\u91ccansible\u8f93\u51fa\u7684success\u662f\u5c0f\u5199\u7684\u3002<\/p>\n<p>\u4e0d\u77e5\u9053\u4ee5\u4e0a\u7684\u95ee\u9898\u662f\u4e0d\u662f\u4f7f\u7528\u7684\u73af\u5883\u4e0d\u540c\u9020\u6210\u7684\u3002\u6211\u8fd0\u884c\u7684\u73af\u5883\u662fansible\u4e3b\u673a\u4e3aredhat6\uff0cansible\u7248\u672c\u4e3a1.9\uff0c\u88ab\u53d6\u6570\u636e\u4e3b\u673a\u6709redhat6\u548csuse11 \u3002\u4e0d\u8fc7\u8fd9\u90fd\u662f\u5c0f\u95ee\u9898\uff0c\u540c\u6837\u53ef\u4ee5\u901a\u8fc7\u5904\u7406\u83b7\u53d6\u5230\u6b63\u5e38\u7684\u7ed3\u679c\u3002<\/p>\n<p>4\u3001ansible api \u6267\u884c<\/p>\n<p>\u4e0a\u9762\u7684\u5927\u725b\u7684\u7ed3\u679c\uff0c\u6211\u4f7f\u7528ansible api \u6267\u884c\uff0c\u5982\u4e0b\uff0c\u53ef\u4ee5\u5bf9\u6bd4\u4e0b\uff1a<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><span class=\"pun\">[<\/span><span class=\"pln\">root@localhost <\/span><span class=\"pun\">~]<\/span><span class=\"com\"># cat \/tmp\/test.py<\/span><\/li>\n<li class=\"L1\"><span class=\"com\">#!\/usr\/bin\/env python<\/span><\/li>\n<li class=\"L2\"><span class=\"com\"># coding=utf-8<\/span><\/li>\n<li class=\"L3\"><span class=\"com\"># author \uff1a www.361way.com<\/span><\/li>\n<li class=\"L4\"><span class=\"com\"># mail : itybku@139.com<\/span><\/li>\n<li class=\"L5\"><span class=\"kwd\">import<\/span><span class=\"pln\"> ansible<\/span><span class=\"pun\">.<\/span><span class=\"pln\">runner<\/span><\/li>\n<li class=\"L6\"><span class=\"com\">#import json<\/span><\/li>\n<li class=\"L7\"><span class=\"pln\">runner <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> ansible<\/span><span class=\"pun\">.<\/span><span class=\"pln\">runner<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Runner<\/span><span class=\"pun\">(<\/span><\/li>\n<li class=\"L8\"><span class=\"pln\"> module_name<\/span><span class=\"pun\">=<\/span><span class=\"str\">&#8216;shell&#8217;<\/span><span class=\"pun\">,<\/span><\/li>\n<li class=\"L9\"><span class=\"pln\"> module_args<\/span><span class=\"pun\">=<\/span><span class=\"str\">&#8220;df -hP|awk &#8216;NR&gt;1 &amp;&amp; int($5)&gt;30&#8242;&#8221;<\/span><span class=\"pun\">,<\/span><\/li>\n<li class=\"L0\"><span class=\"pln\"> pattern<\/span><span class=\"pun\">=<\/span><span class=\"str\">&#8216;all&#8217;<\/span><span class=\"pun\">,<\/span><\/li>\n<li class=\"L1\"><span class=\"pln\"> forks<\/span><span class=\"pun\">=<\/span><span class=\"lit\">10<\/span><\/li>\n<li class=\"L2\"><span class=\"pun\">)<\/span><\/li>\n<li class=\"L3\"><span class=\"pln\">results <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> runner<\/span><span class=\"pun\">.<\/span><span class=\"pln\">run<\/span><span class=\"pun\">()<\/span><\/li>\n<li class=\"L4\"><span class=\"com\">#print results<\/span><\/li>\n<li class=\"L5\"><span class=\"kwd\">for<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">hostname<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> result<\/span><span class=\"pun\">)<\/span> <span class=\"kwd\">in<\/span><span class=\"pln\"> results<\/span><span class=\"pun\">[<\/span><span class=\"str\">&#8216;contacted&#8217;<\/span><span class=\"pun\">].<\/span><span class=\"pln\">items<\/span><span class=\"pun\">():<\/span><\/li>\n<li class=\"L6\"><span class=\"kwd\">if<\/span> <span class=\"kwd\">not<\/span> <span class=\"str\">&#8216;failed&#8217;<\/span> <span class=\"kwd\">in<\/span><span class=\"pln\"> result<\/span><span class=\"pun\">:<\/span><\/li>\n<li class=\"L7\"><span class=\"kwd\">for<\/span><span class=\"pln\"> line <\/span><span class=\"kwd\">in<\/span><span class=\"pln\"> result<\/span><span class=\"pun\">[<\/span><span class=\"str\">&#8216;stdout&#8217;<\/span><span class=\"pun\">].<\/span><span class=\"pln\">split<\/span><span class=\"pun\">(<\/span><span class=\"str\">&#8216;\\n&#8217;<\/span><span class=\"pun\">):<\/span><\/li>\n<li class=\"L8\"><span class=\"kwd\">print<\/span> <span class=\"str\">&#8220;%s %s&#8221;<\/span> <span class=\"pun\">%<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">hostname<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> line<\/span><span class=\"pun\">)<\/span><\/li>\n<li class=\"L9\"><span class=\"com\"># \u6267\u884c\u7ed3\u679c\u5982\u4e0b<\/span><\/li>\n<li class=\"L0\"><span class=\"pun\">[<\/span><span class=\"pln\">root@localhost <\/span><span class=\"pun\">~]<\/span><span class=\"com\"># python \/tmp\/test.py<\/span><\/li>\n<li class=\"L1\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.16<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">cciss<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">c0d0p7 <\/span><span class=\"lit\">9.9G<\/span> <span class=\"lit\">4.0G<\/span> <span class=\"lit\">5.4G<\/span> <span class=\"lit\">43<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">tmp<\/span><\/li>\n<li class=\"L2\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.16<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">cciss<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">c0d0p5 <\/span><span class=\"lit\">9.9G<\/span> <span class=\"lit\">2.9G<\/span> <span class=\"lit\">6.5G<\/span> <span class=\"lit\">31<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">usr<\/span><\/li>\n<li class=\"L3\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.252<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">sda9 <\/span><span class=\"lit\">9.9G<\/span> <span class=\"lit\">2.9G<\/span> <span class=\"lit\">6.5G<\/span> <span class=\"lit\">31<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">opt<\/span><\/li>\n<li class=\"L4\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.252<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">sda6 <\/span><span class=\"lit\">5.0G<\/span> <span class=\"lit\">1.9G<\/span> <span class=\"lit\">2.8G<\/span> <span class=\"lit\">41<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">tmp<\/span><\/li>\n<li class=\"L5\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.252<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">sda5 <\/span><span class=\"lit\">9.9G<\/span> <span class=\"lit\">3.9G<\/span> <span class=\"lit\">5.5G<\/span> <span class=\"lit\">42<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">usr<\/span><\/li>\n<li class=\"L6\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.14<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">cciss<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">c0d0p5 <\/span><span class=\"lit\">9.9G<\/span> <span class=\"lit\">3.2G<\/span> <span class=\"lit\">6.3G<\/span> <span class=\"lit\">34<\/span><span class=\"pun\">%<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">usr<\/span><\/li>\n<\/ol>\n<h3>\u4e09\u3001\u8fd8\u662fansible api \u83b7\u53d6\u78c1\u76d8\u4fe1\u606f<\/h3>\n<p>\u4e0a\u9762\u7684\u65b9\u6cd5\u4e2d\u5b9e\u9645\u6267\u884c\u65f6\uff0c\u6bd4\u6211\u4eec\u9884\u671f\u9700\u8981\u7684\u6548\u679c\u5c11\u4e86\u4e3b\u673a\u540d\u4e00\u9879\u3002\u8fd9\u91cc\u6211\u6362\u505a\u6267\u884c\u811a\u672c\u5b9e\u73b0\uff0c\u5b9e\u73b0\u6548\u679c\u5982\u4e0b\uff1a<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><span class=\"com\">#\/bin\/bash<\/span><\/li>\n<li class=\"L1\"><span class=\"com\"># author : www.361way.com<\/span><\/li>\n<li class=\"L2\"><span class=\"pln\">IP<\/span><span class=\"pun\">=<\/span><span class=\"str\">`ip add show|grep inet|grep 10|awk &#8216;{print $2}&#8217;`<\/span><\/li>\n<li class=\"L3\"><span class=\"pln\">df <\/span><span class=\"pun\">&#8211;<\/span><span class=\"pln\">hl<\/span><span class=\"pun\">|<\/span><span class=\"pln\">grep <\/span><span class=\"str\">&#8216;^\/&#8217;<\/span><span class=\"pun\">|<\/span><span class=\"pln\">sed <\/span><span class=\"str\">&#8216;s\/%\/\/g&#8217;<\/span><span class=\"pun\">|<\/span><span class=\"pln\">awk <\/span><span class=\"str\">&#8216;{if($5&gt;30) print $0}&#8217;<\/span><span class=\"pun\">|<\/span><span class=\"kwd\">while<\/span><span class=\"pln\"> read line<\/span><\/li>\n<li class=\"L4\"><span class=\"kwd\">do<\/span><\/li>\n<li class=\"L5\"><span class=\"pln\"> echo $IP <\/span><span class=\"str\">`hostname`<\/span><span class=\"pln\"> $line<\/span><\/li>\n<li class=\"L6\"><span class=\"kwd\">done<\/span><\/li>\n<li class=\"L7\"><span class=\"com\"># \u6267\u884c\u7ed3\u679c\u5982\u4e0b<\/span><\/li>\n<li class=\"L8\"><span class=\"com\"># sh aa.sh<\/span><\/li>\n<li class=\"L9\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.253<\/span><span class=\"pun\">\/<\/span><span class=\"lit\">24<\/span><span class=\"pln\"> localhost <\/span><span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">sda3 <\/span><span class=\"lit\">9.5G<\/span> <span class=\"lit\">5.7G<\/span> <span class=\"lit\">3.4G<\/span> <span class=\"lit\">64<\/span> <span class=\"pun\">\/<\/span><\/li>\n<li class=\"L0\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.253<\/span><span class=\"pun\">\/<\/span><span class=\"lit\">24<\/span><span class=\"pln\"> localhost <\/span><span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">sda2 <\/span><span class=\"lit\">39G<\/span> <span class=\"lit\">19G<\/span> <span class=\"lit\">18G<\/span> <span class=\"lit\">52<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">home<\/span><\/li>\n<li class=\"L1\"><span class=\"lit\">10.212<\/span><span class=\"pun\">.<\/span><span class=\"lit\">52.253<\/span><span class=\"pun\">\/<\/span><span class=\"lit\">24<\/span><span class=\"pln\"> localhost <\/span><span class=\"pun\">\/<\/span><span class=\"pln\">dev<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">sda6 <\/span><span class=\"lit\">9.5G<\/span> <span class=\"lit\">7.1G<\/span> <span class=\"lit\">2.0G<\/span> <span class=\"lit\">78<\/span> <span class=\"pun\">\/<\/span><span class=\"pln\">usr<\/span><\/li>\n<\/ol>\n<p>\u4f7f\u7528ansible api \u6267\u884c\u8be5\u811a\u672c\u7684\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><span class=\"com\"># python dfscript.py<\/span><\/li>\n<li class=\"L1\"><span class=\"pln\">df<\/span><span class=\"pun\">:<\/span> <span class=\"str\">`\/root\/.gvfs&#8217;: Permission denied<\/span><\/li>\n<li class=\"L2\"><span class=\"str\">df: `<\/span><span class=\"pun\">\/<\/span><span class=\"pln\">root<\/span><span class=\"pun\">\/.<\/span><span class=\"pln\">gvfs<\/span><span class=\"str\">&#8216;: Permission denied<\/span><\/li>\n<li class=\"L3\"><span class=\"str\">10.212.52.16\/24 linux \/dev\/cciss\/c0d0p7 9.9G 4.0G 5.4G 43 \/tmp<\/span><\/li>\n<li class=\"L4\"><span class=\"str\">10.212.52.16\/24 linux \/dev\/cciss\/c0d0p5 9.9G 2.9G 6.5G 31 \/usr<\/span><\/li>\n<li class=\"L5\"><span class=\"str\">10.212.52.252\/24 zjhz-bmc-test \/dev\/sda9 9.9G 2.9G 6.5G 31 \/opt<\/span><\/li>\n<li class=\"L6\"><span class=\"str\">10.212.52.252\/24 zjhz-bmc-test \/dev\/sda6 5.0G 1.9G 2.8G 41 \/tmp<\/span><\/li>\n<li class=\"L7\"><span class=\"str\">10.212.52.252\/24 zjhz-bmc-test \/dev\/sda5 9.9G 3.9G 5.5G 42 \/usr<\/span><\/li>\n<li class=\"L8\"><span class=\"str\">10.212.52.14\/24 linux \/dev\/cciss\/c0d0p5 9.9G 3.2G 6.3G 34 \/usr<\/span><\/li>\n<\/ol>\n<p>dfscript.py\u811a\u672c\u5185\u5bb9\u5982\u4e0b<\/p>\n<ol class=\"linenums\">\n<li class=\"L0\"><span class=\"com\"># cat dfscript.py<\/span><\/li>\n<li class=\"L1\"><span class=\"com\">#!\/usr\/bin\/env python<\/span><\/li>\n<li class=\"L2\"><span class=\"com\"># coding=utf-8<\/span><\/li>\n<li class=\"L3\"><span class=\"com\"># author \uff1a www.361way.com<\/span><\/li>\n<li class=\"L4\"><span class=\"com\"># mail : itybku@139.com<\/span><\/li>\n<li class=\"L5\"><span class=\"kwd\">import<\/span><span class=\"pln\"> ansible<\/span><span class=\"pun\">.<\/span><span class=\"pln\">runner<\/span><\/li>\n<li class=\"L6\"><span class=\"com\">#import json<\/span><\/li>\n<li class=\"L7\"><span class=\"pln\">runner <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> ansible<\/span><span class=\"pun\">.<\/span><span class=\"pln\">runner<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Runner<\/span><span class=\"pun\">(<\/span><\/li>\n<li class=\"L8\"><span class=\"pln\"> module_name<\/span><span class=\"pun\">=<\/span><span class=\"str\">&#8216;script&#8217;<\/span><span class=\"pun\">,<\/span><\/li>\n<li class=\"L9\"><span class=\"pln\"> module_args<\/span><span class=\"pun\">=<\/span><span class=\"str\">&#8220;aa.sh&#8221;<\/span><span class=\"pun\">,<\/span><\/li>\n<li class=\"L0\"><span class=\"pln\"> pattern<\/span><span class=\"pun\">=<\/span><span class=\"str\">&#8216;all&#8217;<\/span><span class=\"pun\">,<\/span><\/li>\n<li class=\"L1\"><span class=\"pln\"> forks<\/span><span class=\"pun\">=<\/span><span class=\"lit\">10<\/span><\/li>\n<li class=\"L2\"><span class=\"pun\">)<\/span><\/li>\n<li class=\"L3\"><span class=\"pln\">results <\/span><span class=\"pun\">=<\/span><span class=\"pln\"> runner<\/span><span class=\"pun\">.<\/span><span class=\"pln\">run<\/span><span class=\"pun\">()<\/span><\/li>\n<li class=\"L4\"><span class=\"com\">#print results<\/span><\/li>\n<li class=\"L5\"><span class=\"kwd\">for<\/span> <span class=\"pun\">(<\/span><span class=\"pln\">hostname<\/span><span class=\"pun\">,<\/span><span class=\"pln\"> result<\/span><span class=\"pun\">)<\/span> <span class=\"kwd\">in<\/span><span class=\"pln\"> results<\/span><span class=\"pun\">[<\/span><span class=\"str\">&#8216;contacted&#8217;<\/span><span class=\"pun\">].<\/span><span class=\"pln\">items<\/span><span class=\"pun\">():<\/span><\/li>\n<li class=\"L6\"><span class=\"kwd\">if<\/span> <span class=\"kwd\">not<\/span> <span class=\"str\">&#8216;failed&#8217;<\/span> <span class=\"kwd\">in<\/span><span class=\"pln\"> result<\/span><span class=\"pun\">:<\/span><\/li>\n<li class=\"L7\"><span class=\"kwd\">for<\/span><span class=\"pln\"> line <\/span><span class=\"kwd\">in<\/span><span class=\"pln\"> result<\/span><span class=\"pun\">[<\/span><span class=\"str\">&#8216;stdout&#8217;<\/span><span class=\"pun\">].<\/span><span class=\"pln\">split<\/span><span class=\"pun\">(<\/span><span class=\"str\">&#8216;\\r\\n&#8217;<\/span><span class=\"pun\">):<\/span><\/li>\n<li class=\"L8\"><span class=\"com\">#print &#8220;%s %s&#8221; % (hostname, line)<\/span><\/li>\n<li class=\"L9\"><span class=\"kwd\">print<\/span><span class=\"pln\"> line<\/span><\/li>\n<\/ol>\n<p>\u76f4\u63a5\u5bf9\u8be5\u811a\u672c\u6267\u884c\u540e\u7684\u7ed3\u679c\u8fdb\u884cgrep \u6807\u51c6\u8f93\u51fa\u65f6\uff0c\u4f1a\u53d1\u73b0\u5176\u884c\u4e0e\u884c\u4e4b\u95f4\u662f\u4ee5\\r\\n\u8fd9\u6837\u7684\u65b9\u5f0f\u5206\u884c\u7684\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" title=\"\" src=\"http:\/\/www.361way.com\/wp-content\/uploads\/2016\/01\/diskdf.png\" alt=\"\" width=\"894\" height=\"65\" align=\"\" \/><\/p>\n<p>\u6240\u4ee5\u5728\u6570\u636e\u83b7\u53d6\u65b9\u9762\uff0c\u5c3d\u91cf\u4ee5ansible api \u7684\u65b9\u5f0f\u8fdb\u884c\u83b7\u53d6\uff0c\u800capi \u7684\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u65e0\u6cd5\u662f\u51e0\u4e2a\u53c2\u6570\u7684\u66ff\u6362\u540e\u9762\u518d\u8c03\u7528run\u65b9\u6cd5\uff0c\u6700\u7ec8\u5728\u5bf9\u7ed3\u679c\u8fdb\u884c\u5904\u7406\u3002\u800c\u6d89\u53ca\u591a\u9879\u4fe1\u606f\u83b7\u53d6\u65f6\uff0c\u5efa\u8bae\u4f7f\u7528\u81ea\u5b9a\u4e49\u6a21\u5757\u7684\u65b9\u6cd5\uff0c\u5148\u5c06\u6240\u9700\u6570\u636e\u53d6\u56de\u6765\uff0c\u4ee5json\u65b9\u5f0f\u8fd4\u56de\uff0d\uff0d\uff0dansible\u81ea\u5b9a\u4e49\u6a21\u5757\u6240\u8981\u6c42\u7684\u683c\u5f0f\u3002\u8fd4\u56de\u540e\u53ef\u4ee5\u518d\u4ee5api \u6216\u5176\u4ed6\u65b9\u5f0f\u5904\u7406\u8fd4\u56de\u7684\u6570\u636e\u5373\u53ef\u3002<\/p>\n<div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u5e74\u5e95\u4e86\u867d\u7136\u6709\u5404\u79cd\u544a\u8b66\uff0c\u4e0d\u8fc7\u8fd8\u662f\u9700\u8981\u505a\u4e00\u4e0b\u5168\u7f51\u5de1\u68c0\uff0c\u8fd9\u91cc\u4ee5\u78c1\u76d8\u4f7f\u7528\u7387\u4e3a\u4f8b\u3002\u7531\u4e8e\u76ee\u524d\u5e73\u53f0\u4e0a\u4f7f\u7528\u7684\u662f\u5546\u4e1a\u7248\u7684\u81ea\u52a8\u5316\u5de5\u5177bmc\uff0c\u5176\u5728\u6267\u884c\u5206\u53d1\u90fd\u65b9\u9762\u975e\u5e38\u4e0d\u5b58\uff0c\u4e0d\u8fc7\u5728\u53d6\u503c\u8fd4\u56de\u4e0a\u505a\u7684\u4e0d\u597d\uff0d\uff0d\uff0d\u5f53\u7136\u4e5f\u548c\u5176\u662f\u5546\u4e1a\u5316\u5de5\u5177\u6709\u5173\uff0c\u5f88\u591a\u4e1c\u897f\u4e0d\u5f00\u6e90\uff0c\u7528shell \u7684\u8bed\u6cd5\u6982\u5ff5\u5199nsh\u65f6\u53c8\u6267\u884c\u4e0d\u901a\u8fc7\uff0cNND\u603b\u662f\u8981\u95ee\u539f\u5382\u652f\u6491 \u3002\u521a\u597d\u5728\u6d4b\u8bd5\u73af\u5883\u4e0a\u6709\u4e4b\u524d\u5b89\u88c5\u7684ansible\u73af\u5883\uff0c\u4e5f\u6d4b\u8bd5\u4e0b\u7528ansible \u6765\u5b9e\u73b0\u8be5\u529f\u80fd\u3002 \u4e00\u3001\u5b9e\u73b0\u76ee\u6807 \u5c06\u6240\u6709\u4e3b\u673a\u7684\u78c1\u76d8\u5927\u4e8e75%\u7684\u4e3b\u673a\u83b7\u53d6\u5230\uff0c\u5e76\u8f93\u51fa\u4e3a\u4e0b\u9762\u7684\u683c\u5f0f\uff1a \u4e3b\u673aIP \u4e3b\u673a\u540d \u78c1\u76d8\u6302\u8f7d\u70b9\u4fe1\u606f \u78c1\u76d8\u4f7f\u7528\u7387 \u5047\u5982 host1\u4e0a\u6709\u591a\u4e2a\u5206\u533a\u90fd\u5927\u4e8e75% \uff0c\u5219\u5199\u591a\u6761\u3002\u5f53\u4e3b\u673a\u4e0a\u6ca1\u6709\u4e00\u53f0\u7b26\u5408\u65f6\uff0c\u5219\u4ec0\u4e48\u90fd\u4e0d\u8f93\u51fa\u3002 \u6ce8\uff1a\u73b0\u7f51\u4e3b\u673a\u4e0a\u6709\u4e24\u4e2a bond \u7f51\u5361\uff0c\u5176\u4e2d\u4e00\u4e2a\u914d\u7f6e\u7684\u662f10\u6bb5\u7684IP\uff0c\u53e6\u4e00\u4e2a\u914d\u7f6e\u7684\u662f192\u6bb5\u7684IP\u3002\u8fd9\u91cc\u8981\u83b7\u53d6\u7684\u662f10\u6bb5\u7684IP\u3002 \u4e8c\u3001 ansible + awk [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-276","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=276"}],"version-history":[{"count":0,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/276\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}