{"id":847,"date":"2025-04-02T14:35:00","date_gmt":"2025-04-02T14:35:00","guid":{"rendered":"https:\/\/linuxjk.cn\/?page_id=847"},"modified":"2026-03-31T00:10:01","modified_gmt":"2026-03-30T16:10:01","slug":"shell_code","status":"publish","type":"page","link":"https:\/\/linuxjk.cn\/?page_id=847","title":{"rendered":"shell\u811a\u672c\u7559\u5b58"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"847\" class=\"elementor elementor-847\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5b7d171 e-flex e-con-boxed e-con e-parent\" data-id=\"5b7d171\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9a5641e elementor-widget elementor-widget-heading\" data-id=\"9a5641e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/linuxjk.cn\/?p=1032\">shell\u7f16\u7a0b\u5b66\u4e60\u7b14\u8bb0<\/a><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-55a230a elementor-widget elementor-widget-heading\" data-id=\"55a230a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u76ee\u5f55<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E8%BF%90%E8%A1%8C%E6%89%B9%E9%87%8F%E5%AE%89%E8%A3%85zabbix_agent%E7%9A%84%E5%89%A7%E6%9C%AC\" >\u8fd0\u884c\u6279\u91cf\u5b89\u88c5zabbix_agent\u7684\u5267\u672c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#debian%E7%B3%BB%E5%AE%B9%E5%99%A8%E5%86%85%E9%85%8D%E7%BD%AElsyncd\" >debian\u7cfb\u5bb9\u5668\u5185\u914d\u7f6elsyncd<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85libre_office%E5%8F%8A%E7%B3%BB%E7%BB%9F%E5%AD%97%E4%BD%93\" >\u4e00\u952e\u5b89\u88c5libre_office\u53ca\u7cfb\u7edf\u5b57\u4f53<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E6%AF%8F%E9%9A%9430%E5%88%86%E9%92%9F%E7%9B%91%E6%8E%A7docker%E5%8D%A0%E7%94%A8%E8%B5%84%E6%BA%90\" >\u5b9a\u65f6\u4efb\u52a1\u6bcf\u969430\u5206\u949f\u76d1\u63a7docker\u5360\u7528\u8d44\u6e90<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%94%B6%E9%9B%86%E7%B3%BB%E7%BB%9F%E6%88%96%E6%9C%8D%E5%8A%A1%E8%BD%AF%E4%BB%B6%E6%97%A5%E5%BF%97%E5%B9%B6%E4%BF%9D%E5%AD%98%E5%88%B0%E5%88%B0tmp\" >\u6536\u96c6\u7cfb\u7edf\u6216\u670d\u52a1\u8f6f\u4ef6\u65e5\u5fd7\u5e76\u4fdd\u5b58\u5230\u5230\/tmp<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%89%B9%E9%87%8F%E5%AF%BC%E5%87%BAdocker%E9%95%9C%E5%83%8F\" >\u6279\u91cf\u5bfc\u51fadocker\u955c\u50cf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A3%80%E6%9F%A5%E6%8C%87%E5%AE%9A%E5%9F%9F%E5%90%8D%EF%BC%881%EF%BC%89%E7%9A%84https%E8%AF%81%E4%B9%A6%E8%BF%87%E6%9C%9F%E6%97%B6%E9%97%B4\" >\u68c0\u67e5\u6307\u5b9a\u57df\u540d\uff08$1\uff09\u7684https\u8bc1\u4e66\u8fc7\u671f\u65f6\u95f4<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E5%B0%86%E9%A1%B9%E7%9B%AE%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%89%80%E6%9C%89%E4%BB%A3%E7%A0%81%E6%95%B4%E5%90%88%E5%88%B0%E4%B8%80%E8%B5%B7%E4%BB%A5%E4%BE%BF%E4%BA%8E%E4%BA%A4%E7%BB%99ai%E5%88%86%E6%9E%90\" >\u5c06\u9879\u76ee\u76ee\u5f55\u4e2d\u6240\u6709\u4ee3\u7801\u6574\u5408\u5230\u4e00\u8d77\u4ee5\u4fbf\u4e8e\u4ea4\u7ed9ai\u5206\u6790<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E4%BB%A5%E7%99%BE%E5%88%86%E6%95%B0%E6%98%BE%E7%A4%BA%E4%BD%BF%E7%94%A8%E7%8E%87%E6%9C%80%E9%AB%98%E7%9A%84%E5%89%8D%E5%87%A0%E4%B8%AAjava%E7%BA%BF%E7%A8%8B\" >\u4ee5\u767e\u5206\u6570\u663e\u793a\u4f7f\u7528\u7387\u6700\u9ad8\u7684\u524d\u51e0\u4e2ajava\u7ebf\u7a0b.<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%89%B9%E9%87%8F%E4%B8%8B%E8%BD%BDurl%E5%9C%B0%E5%9D%80%E6%96%87%E4%BB%B6\" >\u6279\u91cf\u4e0b\u8f7durl\u5730\u5740\u6587\u4ef6<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E9%83%A8%E7%BD%B2rsyncd%E8%84%9A%E6%9C%AC\" >\u670d\u52a1\u7aef\u90e8\u7f72rsyncd\u811a\u672c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E7%AE%A1%E7%90%86%E6%9C%BAm01%E4%B8%80%E9%94%AE%E5%88%9B%E5%BB%BA%E7%A7%98%E9%92%A5%E5%AF%B9%EF%BC%8C%E5%88%86%E5%8F%91%E5%85%AC%E9%92%A5%E4%BB%A5%E6%89%B9%E9%87%8F%E8%BF%9E%E6%8E%A5%E8%84%9A%E6%9C%AC%EF%BC%88%E6%9C%AC%E8%B4%A8for%E5%BE%AA%E7%8E%AF%EF%BC%89\" >\u7ba1\u7406\u673am01\u4e00\u952e\u521b\u5efa\u79d8\u94a5\u5bf9\uff0c\u5206\u53d1\u516c\u94a5\u4ee5\u6279\u91cf\u8fde\u63a5\u811a\u672c\uff08\u672c\u8d28for\u5faa\u73af\uff09<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B01%EF%BC%9A%E6%AF%8F%E6%AC%A1%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E5%90%8E%E6%98%BE%E7%A4%BA%E7%B3%BB%E7%BB%9F%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF\" >\u6848\u4f8b01\uff1a\u6bcf\u6b21\u7528\u6237\u767b\u5f55\u540e\u663e\u793a\u7cfb\u7edf\u57fa\u672c\u4fe1\u606f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B02%EF%BC%9A%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC%E6%97%B6%E8%BE%93%E5%85%A5%E7%94%A8%E6%88%B7%E5%90%8D%E5%88%A4%E6%96%AD%E7%94%A8%E6%88%B7%E5%90%8D%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8\" >\u6848\u4f8b02\uff1a\u6267\u884c\u811a\u672c\u65f6\u8f93\u5165\u7528\u6237\u540d\u5224\u65ad\u7528\u6237\u540d\u662f\u5426\u5b58\u5728<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B03%EF%BC%9A%E6%A3%80%E6%9F%A5ip%E6%88%96%E5%9F%9F%E5%90%8D%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE\" >\u6848\u4f8b03\uff1a\u68c0\u67e5ip\u6216\u57df\u540d\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B04%EF%BC%9Ashell%E4%B8%AD%E7%9A%84%E4%BD%8D%E7%BD%AE%E5%8F%98%E9%87%8Fn%EF%BC%8C%E5%BD%93n%3E9%E6%97%B6%E6%80%8E%E4%B9%88%E5%A4%84%E7%90%86%EF%BC%9F-10_11\" >\u6848\u4f8b04\uff1ashell\u4e2d\u7684\u4f4d\u7f6e\u53d8\u91cf$n\uff0c\u5f53n&gt;9\u65f6\u600e\u4e48\u5904\u7406\uff1f-----${10} ${11}<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B05%EF%BC%9A%E8%A1%A8%E7%A4%BA%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC%E6%97%B6%E8%BE%93%E5%85%A5%E5%8F%82%E6%95%B0%E7%9A%84%E4%B8%AA%E6%95%B0%E4%B8%80%E8%88%AC%E7%94%A8%E4%BA%8E%E4%B8%8E%E5%88%A4%E6%96%AD%E7%BB%93%E5%90%88_%E6%A3%80%E6%9F%A5%E8%BE%93%E5%85%A5%E5%8F%82%E6%95%B0%E7%9A%84%E6%95%B0%E9%87%8F%E6%98%AF%E5%90%A6%E6%AD%A3%E7%A1%AE%EF%BC%89\" >\u6848\u4f8b05\uff1a$#\u8868\u793a\u8fd0\u884c\u811a\u672c\u65f6\u8f93\u5165\u53c2\u6570\u7684\u4e2a\u6570,\u4e00\u822c\u7528\u4e8e\u4e0e\u5224\u65ad\u7ed3\u5408\n(\u68c0\u67e5\u8f93\u5165\u53c2\u6570\u7684\u6570\u91cf\u662f\u5426\u6b63\u786e\uff09<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B06%EF%BC%9A%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC%E8%BE%93%E5%85%A51%E4%B8%AA%E6%88%96%E5%A4%9A%E4%B8%AA%E7%94%A8%E6%88%B7%E5%90%8D%E9%80%9A%E8%BF%87%E8%84%9A%E6%9C%AC%E8%BF%9B%E8%A1%8C%E8%BE%93%E5%87%BA_%E6%A3%80%E6%9F%A5%E8%BF%99%E4%BA%9B%E7%94%A8%E6%88%B7%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8\" >\u6848\u4f8b06\uff1a\u6267\u884c\u811a\u672c\u8f93\u51651\u4e2a\u6216\u591a\u4e2a\u7528\u6237\u540d\u901a\u8fc7\u811a\u672c\u8fdb\u884c\u8f93\u51fa\n(\u68c0\u67e5\u8fd9\u4e9b\u7528\u6237\u662f\u5426\u5b58\u5728)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B07%EF%BC%9A%E6%9B%BF%E4%BB%A3rm%E7%9A%84%E5%9B%9E%E6%94%B6%E7%AB%99%E8%84%9A%E6%9C%AC\" >\u6848\u4f8b07\uff1a\u66ff\u4ee3rm\u7684\u56de\u6536\u7ad9\u811a\u672c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B10_%E9%80%9A%E8%BF%87%E8%84%9A%E6%9C%AC%E4%BC%A0%E5%8F%82%E8%BE%93%E5%85%A5%E4%BB%BB%E4%BD%95%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E5%B9%B6%E6%89%A7%E8%A1%8C%EF%BC%8C%E6%A3%80%E6%9F%A5%E8%BF%99%E4%B8%AA%E5%91%BD%E4%BB%A4%E7%9A%84%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C%E6%98%AF%E5%90%A6%E6%AD%A3%E7%A1%AE\" >\u6848\u4f8b10:\u901a\u8fc7\u811a\u672c\u4f20\u53c2\u8f93\u5165\u4efb\u4f55\u4e00\u4e2a\u547d\u4ee4\u5e76\u6267\u884c\uff0c\u68c0\u67e5\u8fd9\u4e2a\u547d\u4ee4\u7684\u6267\u884c\u7ed3\u679c\u662f\u5426\u6b63\u786e<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B11%EF%BC%9Afor%E5%BE%AA%E7%8E%AF%E6%89%93%E5%8D%B0%E4%B8%8B%E9%9D%A2%E8%BF%99%E4%B8%80%E6%AE%B5%E8%AF%9D%E4%B8%AD%E5%AD%97%E6%AF%8D%E6%95%B0%E4%B8%8D%E5%A4%A7%E4%BA%8E6%E7%9A%84%E5%8D%95%E8%AF%8D\" >\u6848\u4f8b11\uff1afor\u5faa\u73af\u6253\u5370\u4e0b\u9762\u8fd9\u4e00\u6bb5\u8bdd\u4e2d\u5b57\u6bcd\u6570\u4e0d\u5927\u4e8e6\u7684\u5355\u8bcd<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B12%EF%BC%9A%E4%B9%A6%E5%86%99%E8%84%9A%E6%9C%AC%E6%A3%80%E6%9F%A5%E8%BE%93%E5%85%A5%E7%9A%84%E5%9F%9F%E5%90%8D%EF%BC%88%E4%B8%80%E4%B8%AA%E6%88%96%E5%A4%9A%E4%B8%AA%EF%BC%89%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5ping%E9%80%9A-%E9%80%9A%E8%BF%87read%E5%91%BD%E4%BB%A4%E5%AE%9E%E7%8E%B0\" >\u6848\u4f8b12\uff1a\u4e66\u5199\u811a\u672c\u68c0\u67e5\u8f93\u5165\u7684\u57df\u540d\uff08\u4e00\u4e2a\u6216\u591a\u4e2a\uff09\u662f\u5426\u53ef\u4ee5ping\u901a--\u901a\u8fc7read\u547d\u4ee4\u5b9e\u73b0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B13%EF%BC%9A%E8%AE%A1%E7%AE%97%E5%99%A8%E4%BC%A0%E5%85%A5%E8%84%9A%E6%9C%AC%E4%B8%AD2%E4%B8%AA%E5%8F%82%E6%95%B0%EF%BC%8C%E8%BF%9B%E8%A1%8C%E8%AE%A1%E7%AE%97%EF%BC%8C%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C%E2%91%A0%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%BC%A0%E5%8F%82%E2%91%A1read%E4%BC%A0%E5%8F%82\" >\u6848\u4f8b13\uff1a\u8ba1\u7b97\u5668\u4f20\u5165\u811a\u672c\u4e2d2\u4e2a\u53c2\u6570\uff0c\u8fdb\u884c\u8ba1\u7b97\uff0c\u8f93\u51fa\u7ed3\u679c\u2460\u547d\u4ee4\u884c\u4f20\u53c2\u2461read\u4f20\u53c2<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B17%EF%BC%9A%E9%80%9A%E8%BF%87%E8%84%9A%E6%9C%AC%E4%BC%A0%E5%8F%82%E6%96%B9%E5%BC%8F%E4%BC%A0%E8%BE%931%E4%B8%AA%E5%8F%82%E6%95%B0%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E4%B8%BA%E6%96%87_%E4%BB%B6%E6%98%AF%E5%90%A6%E4%B8%BA%E7%9B%AE%E5%BD%95%E6%98%AF%E5%90%A6%E5%85%B7%E6%9C%89%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90%EF%BC%88%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%AF%94%E8%BE%83%EF%BC%89\" >\u6848\u4f8b17\uff1a\u901a\u8fc7\u811a\u672c\u4f20\u53c2\u65b9\u5f0f\u4f20\u8f931\u4e2a\u53c2\u6570,\u5224\u65ad\u662f\u5426\u4e3a\u6587\n\u4ef6,\u662f\u5426\u4e3a\u76ee\u5f55,\u662f\u5426\u5177\u6709\u6267\u884c\u6743\u9650.\uff08\u5b57\u7b26\u4e32\u6bd4\u8f83\uff09<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B18-%E6%A3%80%E6%9F%A5selinux%E6%98%AF%E5%90%A6%E5%85%B3%E9%97%AD%E8%84%9A%E6%9C%AC%E5%A6%82%E6%9E%9C%E6%B2%A1%E6%9C%89%E5%85%B3%E9%97%AD%E6%8F%90%E7%A4%BA%E6%98%AF%E5%90%A6%E8%A6%81%E5%85%B3%E9%97%ADyes%E5%88%99%E5%85%B3%E9%97%AD%E5%85%B6%E4%BB%96%E5%B0%B1%E4%B8%8D%E5%85%B3%E9%97%AD\" >\u6848\u4f8b18-\u68c0\u67e5selinux\u662f\u5426\u5173\u95ed\u811a\u672c,\u5982\u679c\u6ca1\u6709\u5173\u95ed\u63d0\u793a\u662f\u5426\u8981\u5173\u95ed,yes\u5219\u5173\u95ed,\u5176\u4ed6\u5c31\u4e0d\u5173\u95ed<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B20%EF%BC%9A_%E4%B9%A6%E5%86%99%E4%B8%80%E4%B8%AA%E8%84%9A%E6%9C%AC%E9%80%9A%E8%BF%87read%E8%AF%BB%E5%8F%96%E8%BE%93%E5%85%A5%E5%88%A4%E6%96%AD_%E8%BE%93%E5%85%A5%E6%98%AF%E6%95%B4%E6%95%B0%E6%B5%AE%E7%82%B9%E6%95%B0%E5%B0%8F%E6%95%B0%E8%BF%98%E6%98%AF%E5%AD%97%E7%AC%A6\" >\u6848\u4f8b20\uff1a \u4e66\u5199\u4e00\u4e2a\u811a\u672c\u901a\u8fc7read\u8bfb\u53d6\u8f93\u5165,\u5224\u65ad\n\u8f93\u5165\u662f\u6574\u6570,\u6d6e\u70b9\u6570(\u5c0f\u6570),\u8fd8\u662f\u5b57\u7b26.<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B21_%E4%B9%A6%E5%86%99%E6%9C%8D%E5%8A%A1%E6%A3%80%E6%9F%A5%E8%84%9A%E6%9C%AC%E6%89%A7%E8%A1%8C%E7%9A%84%E6%97%B6%E5%80%99%E8%BE%93%E5%85%A5%E6%9C%8D%E5%8A%A1%E5%90%8D%E5%AD%97%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E8%BF%90_%E8%A1%8C%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%BC%80%E5%90%AF%E8%87%AA%E5%90%AF%E5%8A%A8\" >\u6848\u4f8b21: \u4e66\u5199\u670d\u52a1\u68c0\u67e5\u811a\u672c,\u6267\u884c\u7684\u65f6\u5019\u8f93\u5165\u670d\u52a1\u540d\u5b57\u68c0\u67e5\u662f\u5426\u8fd0\n\u884c,\u68c0\u67e5\u662f\u5426\u5f00\u542f\u81ea\u542f\u52a8.<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B22%EF%BC%9A%E6%A3%80%E6%9F%A5%E7%A3%81%E7%9B%98%E5%88%86%E5%8C%BA%E7%9A%84%E6%83%85%E5%86%B5\" >\u6848\u4f8b22\uff1a\u68c0\u67e5\u78c1\u76d8\u5206\u533a\u7684\u60c5\u51b5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B23%EF%BC%9A%E4%B9%A6%E5%86%99%E5%A4%9A%E5%88%86%E6%94%AF%E6%A0%BC%E5%BC%8F%E6%AF%94%E8%BE%83%E5%A4%A7%E5%B0%8F%E8%84%9A%E6%9C%AC\" >\u6848\u4f8b23\uff1a\u4e66\u5199\u591a\u5206\u652f\u683c\u5f0f\u6bd4\u8f83\u5927\u5c0f\u811a\u672c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B24%EF%BC%9A%E6%A0%B9%E6%8D%AE%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E4%B8%8D%E5%90%8C%E4%BD%BF%E7%94%A8%E7%8E%87%E8%AE%BE%E7%BD%AE%E4%B8%8D%E5%90%8C%E7%9A%84%E8%AD%A6%E5%91%8A%E6%8F%90%E7%A4%BA\" >\u6848\u4f8b24\uff1a\u6839\u636e\u78c1\u76d8\u7a7a\u95f4\u4e0d\u540c\u4f7f\u7528\u7387\u8bbe\u7f6e\u4e0d\u540c\u7684\u8b66\u544a\u63d0\u793a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B25%EF%BC%9A%E8%BE%93%E5%87%BA%E6%8C%87%E5%AE%9A%E7%94%A8%E6%88%B7%E4%BF%A1%E6%81%AF%EF%BC%88%E7%94%A8%E6%88%B7%E5%B7%A1%E6%A3%80%E8%84%9A%E6%9C%AC%EF%BC%89%EF%BC%8C%E6%9C%AA%E6%9D%A5%E5%8F%AF%E4%BB%A5%E5%81%9A%E5%AE%89%E5%85%A8%E6%A3%80%E6%9F%A5\" >\u6848\u4f8b25\uff1a\u8f93\u51fa\u6307\u5b9a\u7528\u6237\u4fe1\u606f\uff08\u7528\u6237\u5de1\u68c0\u811a\u672c\uff09\uff0c\u672a\u6765\u53ef\u4ee5\u505a\u5b89\u5168\u68c0\u67e5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B26%EF%BC%9Acase%E8%AF%AD%E5%8F%A5%E6%A0%BC%E5%BC%8F%E2%80%93%E8%8F%9C%E5%8D%95%E9%80%89%E6%8B%A9%E5%8A%9F%E8%83%BD\" >\u6848\u4f8b26\uff1acase\u8bed\u53e5\u683c\u5f0f\u2013\u83dc\u5355\u9009\u62e9\u529f\u80fd<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B27%EF%BC%9A%E5%88%A4%E6%96%AD%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E7%9A%84%E6%98%AFyes%E8%BF%98%E6%98%AFno%EF%BC%88%E9%80%89%E9%A1%B9%E4%B8%AD_%E7%9A%84%E4%BD%BF%E7%94%A8%EF%BC%89\" >\u6848\u4f8b27\uff1a\u5224\u65ad\u7528\u6237\u8f93\u5165\u7684\u662fyes\u8fd8\u662fno\uff08\u9009\u9879\u4e2d| \u7684\u4f7f\u7528\uff09<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B28%EF%BC%9A%E5%87%BD%E6%95%B0%E5%9F%BA%E6%9C%AC%E6%A0%BC%E5%BC%8F%E5%8F%8A%E4%BD%BF%E7%94%A8\" >\u6848\u4f8b28\uff1a\u51fd\u6570\u57fa\u672c\u683c\u5f0f\u53ca\u4f7f\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B29%EF%BC%9A%E5%87%BD%E6%95%B0%E4%BC%A0%E5%8F%82%E7%9A%84%E4%BD%BF%E7%94%A8\" >\u6848\u4f8b29\uff1a\u51fd\u6570\u4f20\u53c2\u7684\u4f7f\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B30%EF%BC%9A%E5%B7%B2%E6%9C%89%E8%84%9A%E6%9C%AC%E5%87%BD%E6%95%B0%E5%8C%96_%E6%A3%80%E6%9F%A5ip%E6%98%AF%E5%90%A6%E8%83%BD%E8%AE%BF%E9%97%AE%EF%BC%8C%E5%B0%86%E6%AF%8F%E4%B8%80%E6%AD%A5%E8%AE%BE%E7%BD%AE%E4%B8%BA%E4%B8%80%E4%B8%AA%E5%87%BD%E6%95%B0\" >\u6848\u4f8b30\uff1a\u5df2\u6709\u811a\u672c\u51fd\u6570\u5316:\u68c0\u67e5ip\u662f\u5426\u80fd\u8bbf\u95ee\uff0c\u5c06\u6bcf\u4e00\u6b65\u8bbe\u7f6e\u4e3a\u4e00\u4e2a\u51fd\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B31%EF%BC%9A%E4%B8%AA%E4%BA%BA%E9%A2%9C%E8%89%B2%E5%87%BD%E6%95%B0%E5%BA%93%E6%90%AD%E5%BB%BA%EF%BC%8C%E4%B8%8D%E5%90%8C%E6%98%BE%E7%A4%BA%E6%95%88%E6%9E%9C%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E5%87%BD%E6%95%B0%E8%A1%A8%E7%A4%BA\" >\u6848\u4f8b31\uff1a\u4e2a\u4eba\u989c\u8272\u51fd\u6570\u5e93\u642d\u5efa\uff0c\u4e0d\u540c\u663e\u793a\u6548\u679c\u7528\u4e0d\u540c\u7684\u51fd\u6570\u8868\u793a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B32%EF%BC%9A%E7%BB%99%E4%B8%AA%E4%BA%BA%E9%A2%9C%E8%89%B2%E5%87%BD%E6%95%B0%E5%BA%93%E8%84%9A%E6%9C%AC%E4%B8%AD%E5%8A%A0%E5%85%A5%E6%97%A5%E5%BF%97%E6%96%B9%E4%BE%BF%E4%BB%A5%E5%90%8E%E8%B0%83%E7%94%A8\" >\u6848\u4f8b32\uff1a\u7ed9\u4e2a\u4eba\u989c\u8272\u51fd\u6570\u5e93\u811a\u672c\u4e2d\u52a0\u5165\u65e5\u5fd7\u65b9\u4fbf\u4ee5\u540e\u8c03\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B33%EF%BC%9A%E6%A3%80%E6%9F%A5%E6%8C%87%E5%AE%9A%E5%9C%B0%E5%9D%80%E7%9A%84%E7%AB%AF%E5%8F%A3%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE\" >\u6848\u4f8b33\uff1a\u68c0\u67e5\u6307\u5b9a\u5730\u5740\u7684\u7aef\u53e3\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B34%EF%BC%9A%E6%A3%80%E6%9F%A5%E6%8C%87%E5%AE%9Awebapi%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE\" >\u6848\u4f8b34\uff1a\u68c0\u67e5\u6307\u5b9aweb\/api\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B35%EF%BC%9A%E6%A3%80%E6%9F%A5%E5%9F%9F%E5%90%8D%E6%98%AF%E5%90%A6%E8%BF%87%E6%9C%9F\" >\u6848\u4f8b35\uff1a\u68c0\u67e5\u57df\u540d\u662f\u5426\u8fc7\u671f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B36%EF%BC%9A%E4%BD%BF%E7%94%A8for%E5%BE%AA%E7%8E%AF%E5%9C%A8oldboy%E7%9B%AE%E5%BD%95%E4%B8%8B%E9%80%9A%E8%BF%87%E9%9A%8F%E6%9C%BA%E7%9A%8410%E4%B8%AA%E5%B0%8F%E5%86%99%E5%AD%97%E6%AF%8D%E5%8A%A0%E5%9B%BA%E5%AE%9A%E5%AD%97%E7%AC%A6oldboy%E6%89%B9%E9%87%8F%E5%88%9B%E5%BB%BA%E5%8D%81%E4%B8%AAhtml%E6%96%87%E4%BB%B6\" >\u6848\u4f8b36\uff1a\u4f7f\u7528for\u5faa\u73af\u5728\/oldboy\u76ee\u5f55\u4e0b\u901a\u8fc7\u968f\u673a\u768410\u4e2a\u5c0f\u5199\u5b57\u6bcd\u52a0\u56fa\u5b9a\u5b57\u7b26oldboy\u6279\u91cf\u521b\u5efa\u5341\u4e2ahtml\u6587\u4ef6<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-43\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E7%94%A8for%E5%BE%AA%E7%8E%AF%E6%89%93%E5%8D%B099%E4%B9%98%E6%B3%95%E8%A1%A8\" >\u7528for\u5faa\u73af\u6253\u537099\u4e58\u6cd5\u8868<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-44\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B37%EF%BC%9A%E8%BE%93%E5%87%BA1%E5%88%B010%E5%B9%B6%E8%AE%A1%E7%AE%97%E6%80%BB%E5%92%8C%EF%BC%88%E6%9D%A1%E4%BB%B6%EF%BC%9A%E5%BE%AA%E7%8E%AF%E6%AC%A1%E6%95%B0%E7%AD%89%E4%BA%8E10%EF%BC%89\" >\u6848\u4f8b37\uff1a\u8f93\u51fa1\u523010\u5e76\u8ba1\u7b97\u603b\u548c\uff08\u6761\u4ef6\uff1a\u5faa\u73af\u6b21\u6570\u7b49\u4e8e10\uff09<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-45\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B39%EF%BC%9A%E7%94%9F%E6%88%90%E9%9A%8F%E6%9C%BA%E6%95%B0%E5%AD%97%EF%BC%881-100%EF%BC%89%EF%BC%8C%E5%88%A4%E6%96%AD%E6%95%B0%E5%AD%97%E6%98%AF%E4%BB%80%E4%B9%88\" >\u6848\u4f8b39\uff1a\u751f\u6210\u968f\u673a\u6570\u5b57\uff081-100\uff09\uff0c\u5224\u65ad\u6570\u5b57\u662f\u4ec0\u4e48<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-46\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B40%EF%BC%9A%E9%80%9A%E8%BF%87while_read%E6%96%B9%E5%BC%8F%E7%BB%9F%E8%AE%A1iptxt%E6%96%87%E4%BB%B6%EF%BC%8C%E5%B9%B6ping%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84ip%EF%BC%88%E4%BB%A5%E5%90%8Eping%E6%94%B9%E6%88%90firewalld%E5%B1%8F%E8%94%BD%EF%BC%89\" >\u6848\u4f8b40\uff1a\u901a\u8fc7while read\u65b9\u5f0f\u7edf\u8ba1ip.txt\u6587\u4ef6\uff0c\u5e76ping\u6587\u4ef6\u4e2d\u7684ip\uff08\u4ee5\u540eping\u6539\u6210firewalld\u5c4f\u853d\uff09<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-47\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B41%EF%BC%9A%E4%BA%86%E8%A7%A3%E6%96%B9%E6%B3%952%E5%92%8C%E6%96%B9%E6%B3%953%E5%8C%BA%E5%88%AB%EF%BC%9A%E5%9C%A8while%E5%89%8D%E8%AF%BB%E5%8F%96%E5%91%BD%E4%BB%A4%E5%92%8C%E5%9C%A8done%E5%90%8E%E7%94%A8%E9%87%8D%E5%AE%9A%E5%90%91%E7%AC%A6\" >\u6848\u4f8b41\uff1a\u4e86\u89e3\u65b9\u6cd52\u548c\u65b9\u6cd53\u533a\u522b\uff1a\u5728while\u524d\u8bfb\u53d6\u547d\u4ee4\u548c\u5728done\u540e\u7528\u91cd\u5b9a\u5411\u7b26&lt;\u8bfb\u53d6\u6587\u4ef6<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-48\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B41%EF%BC%9Aforwhile_until%E4%B8%89%E7%A7%8D%E5%BE%AA%E7%8E%AF%E6%A0%BC%E5%BC%8F%E5%8C%BA%E5%88%AB%E5%8F%8A%E5%BE%AA%E7%8E%AF%E6%9D%A1%E4%BB%B6%E5%88%86%E6%9E%90\" >\u6848\u4f8b41\uff1afor\/while\/ until\u4e09\u79cd\u5faa\u73af\u683c\u5f0f\u533a\u522b\u53ca\u5faa\u73af\u6761\u4ef6\u5206\u6790<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-49\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B42%EF%BC%9A%E6%B5%8B%E8%AF%95read%E5%91%BD%E4%BB%A4%E8%B5%8B%E5%80%BC%E6%95%B0%E7%BB%84%E5%B9%B6%E8%BE%93%E5%87%BA%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%86%85%E5%AE%B9\" >\u6848\u4f8b42\uff1a\u6d4b\u8bd5read\u547d\u4ee4\u8d4b\u503c\u6570\u7ec4\u5e76\u8f93\u51fa\u6570\u7ec4\u4e2d\u7684\u5185\u5bb9<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-50\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B43%EF%BC%9A%E8%AF%95%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AAshell%E8%AE%A1%E7%AE%97%E5%99%A8%EF%BC%8C%E6%B1%82%E5%87%BA%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E6%89%80%E6%9C%89%E6%95%B0%E5%AD%97%E7%9A%84%E4%BB%A5%E4%B8%8B%E8%AE%A1%E7%AE%97%E7%BB%93%E6%9E%9C%EF%BC%9A%E6%80%BB%E5%92%8C%EF%BC%8C%E5%B9%B3%E5%9D%87%E5%80%BC%EF%BC%8C%E6%9C%80%E5%A4%A7%E5%80%BC%EF%BC%8C%E6%9C%80%E5%B0%8F%E5%80%BC\" >\u6848\u4f8b43\uff1a\u8bd5\u7f16\u5199\u4e00\u4e2ashell\u8ba1\u7b97\u5668\uff0c\u6c42\u51fa\u7528\u6237\u8f93\u5165\u6240\u6709\u6570\u5b57\u7684\u4ee5\u4e0b\u8ba1\u7b97\u7ed3\u679c\uff1a\u603b\u548c\uff0c\u5e73\u5747\u503c\uff0c\u6700\u5927\u503c\uff0c\u6700\u5c0f\u503c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-51\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B44%EF%BC%9A%E6%8A%8A%E6%A1%88%E4%BE%8B30%E6%94%B9%E4%B8%BA%E6%95%B0%E7%BB%84%E5%BD%A2%E5%BC%8F%EF%BC%8C%E4%BB%8Eserverfilesurlstxt%E8%AF%BB%E5%8F%96%E5%86%85%E5%AE%B9\" >\u6848\u4f8b44\uff1a\u628a\u6848\u4f8b30\u6539\u4e3a\u6570\u7ec4\u5f62\u5f0f\uff0c\u4eceserver\/files\/urls.txt\u8bfb\u53d6\u5185\u5bb9<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-52\" href=\"https:\/\/linuxjk.cn\/?page_id=847\/#%E6%A1%88%E4%BE%8B53%EF%BC%9A%E7%94%A8awk%E7%BB%9F%E8%AE%A1ip%E5%92%8C%E6%AF%8F%E4%B8%AAip%E5%AF%B9%E5%BA%94%E7%9A%84%E6%B5%81%E9%87%8F%EF%BC%8C%E5%8F%96%E6%B5%81%E9%87%8F%E6%8E%92%E8%A1%8C%E5%89%8D50%E5%90%8D%E8%BF%9B%E8%A1%8C%E5%9C%B0%E5%9D%80%E6%9F%A5%E8%AF%A2%E5%92%8C%E5%8D%95%E4%BD%8D%E6%8D%A2%E7%AE%97\" >\u6848\u4f8b53\uff1a\u7528awk\u7edf\u8ba1ip\u548c\u6bcf\u4e2aip\u5bf9\u5e94\u7684\u6d41\u91cf\uff0c\u53d6\u6d41\u91cf\u6392\u884c\u524d50\u540d\u8fdb\u884c\u5730\u5740\u67e5\u8be2\u548c\u5355\u4f4d\u6362\u7b97<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E8%BF%90%E8%A1%8C%E6%89%B9%E9%87%8F%E5%AE%89%E8%A3%85zabbix_agent%E7%9A%84%E5%89%A7%E6%9C%AC\"><\/span>\u8fd0\u884c\u6279\u91cf\u5b89\u88c5zabbix_agent\u7684\u5267\u672c<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-562af47 elementor-widget elementor-widget-shortcode\" data-id=\"562af47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">run.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/run.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n\n# Zabbix Agent \u90e8\u7f72\u5de5\u5177\n# \u652f\u6301 CentOS 7\/8, Anolis 7\/8, Ubuntu 18\/22\n\n# \u989c\u8272\u5b9a\u4e49\nRED=&#039;\\033[0;31m&#039;\nGREEN=&#039;\\033[0;32m&#039;\nYELLOW=&#039;\\033[1;33m&#039;\nBLUE=&#039;\\033[0;34m&#039;\nNC=&#039;\\033[0m&#039; # No Color\n\n# \u914d\u7f6e\nINVENTORY=&quot;inventory\/hosts.yml&quot;\nPLAYBOOK_DIR=&quot;.&quot;\n\n# \u7cfb\u7edf\u7c7b\u578b\u5230 inventory \u7ec4\u7684\u6620\u5c04\ndeclare -A SYSTEM_GROUPS=(\n    [&quot;centos7&quot;]=&quot;centos7&quot;\n    [&quot;centos8&quot;]=&quot;centos8&quot;\n    [&quot;anolis7&quot;]=&quot;anolis7&quot;\n    [&quot;anolis8&quot;]=&quot;anolis8&quot;\n    [&quot;ubuntu18&quot;]=&quot;ubuntu18&quot;\n    [&quot;ubuntu22&quot;]=&quot;ubuntu22&quot;\n)\n\n# \u6839\u636e\u73b0\u6709\u6587\u4ef6\uff0c\u64cd\u4f5c\u5230 playbook \u7684\u6620\u5c04\ndeclare -A ACTION_PLAYBOOKS=(\n    [&quot;install&quot;]=&quot;install-zabbix-agent.yml&quot;\n    [&quot;verify&quot;]=&quot;verify-installation.yml&quot;\n    [&quot;reinstall&quot;]=&quot;reinstall-agent.yml&quot;\n    [&quot;test&quot;]=&quot;test-install.yml&quot;\n    [&quot;step-test&quot;]=&quot;step-by-step-test-fixed.yml&quot;\n    [&quot;pre-check&quot;]=&quot;pre-check.yml&quot;\n    [&quot;fix-config&quot;]=&quot;fix-centos7-zabbix.yml&quot;\n)\n\n# \u663e\u793a\u4f7f\u7528\u8bf4\u660e\nshow_usage() {\n    echo -e &quot;${BLUE}Zabbix Agent \u90e8\u7f72\u5de5\u5177${NC}&quot;\n    echo &quot;&quot;\n    echo &quot;\u4f7f\u7528\u65b9\u6cd5:&quot;\n    echo &quot;  $0 &lt;system_type&gt; &lt;action&gt;&quot;\n    echo &quot;&quot;\n    echo &quot;\u652f\u6301\u7684\u7cfb\u7edf\u7c7b\u578b:&quot;\n    echo -e &quot;  ${GREEN}centos7${NC}   - CentOS 7.x&quot;\n    echo -e &quot;  ${GREEN}centos8${NC}   - CentOS 8.x \/ Rocky Linux 8 \/ AlmaLinux 8&quot;\n    echo -e &quot;  ${GREEN}anolis7${NC}   - Anolis OS 7.x&quot;\n    echo -e &quot;  ${GREEN}anolis8${NC}   - Anolis OS 8.x&quot;\n    echo -e &quot;  ${GREEN}ubuntu18${NC}  - Ubuntu 18.04 LTS&quot;\n    echo -e &quot;  ${GREEN}ubuntu22${NC}  - Ubuntu 22.04 LTS&quot;\n    echo &quot;&quot;\n    echo &quot;\u652f\u6301\u7684\u64cd\u4f5c:&quot;\n    echo -e &quot;  ${GREEN}install${NC}       - \u5b89\u88c5 Zabbix Agent&quot;\n    echo -e &quot;  ${GREEN}verify${NC}        - \u9a8c\u8bc1 Agent \u5b89\u88c5\u72b6\u6001&quot;\n    echo -e &quot;  ${GREEN}reinstall${NC}     - \u91cd\u65b0\u5b89\u88c5 Agent&quot;\n    echo -e &quot;  ${GREEN}test${NC}          - \u6d4b\u8bd5\u5b89\u88c5&quot;\n    echo -e &quot;  ${GREEN}step-test${NC}     - \u5206\u6b65\u6d4b\u8bd5&quot;\n    echo -e &quot;  ${GREEN}pre-check${NC}     - \u5b89\u88c5\u524d\u68c0\u67e5&quot;\n    echo -e &quot;  ${GREEN}fix-config${NC}    - \u5b89\u88c5pcre2\u4f9d\u8d56\uff08\u4ec5\u9650centos7\uff09&quot;\n    echo &quot;&quot;\n    echo &quot;\u7279\u6b8a\u64cd\u4f5c:&quot;\n    echo -e &quot;  ${GREEN}all &lt;action&gt;${NC}  - \u5728\u6240\u6709\u4e3b\u673a\u4e0a\u6267\u884c\u64cd\u4f5c&quot;\n    echo -e &quot;  ${GREEN}list-hosts${NC}    - \u5217\u51fa\u6240\u6709\u4e3b\u673a&quot;\n    echo &quot;&quot;\n    echo &quot;\u793a\u4f8b:&quot;\n    echo &quot;  $0 centos7 install      # \u5728 CentOS 7 \u4e3b\u673a\u4e0a\u5b89\u88c5&quot;\n    echo &quot;  $0 anolis8 verify       # \u9a8c\u8bc1 Anolis 8 \u4e3b\u673a\u4e0a\u7684 Agent&quot;\n    echo &quot;  $0 centos7 fix-config  # \u4fee\u590d centos7 \u4e0a\u7684\u914d\u7f6e&quot;\n    echo &quot;  $0 all install          # \u5728\u6240\u6709\u4e3b\u673a\u4e0a\u5b89\u88c5&quot;\n}\n\n# \u68c0\u67e5 inventory \u6587\u4ef6\ncheck_inventory() {\n    if [ ! -f &quot;$INVENTORY&quot; ]; then\n        echo -e &quot;${RED}\u9519\u8bef: inventory \u6587\u4ef6\u4e0d\u5b58\u5728: $INVENTORY${NC}&quot;\n        echo &quot;\u8bf7\u786e\u4fdd inventory\/hosts.yml \u6587\u4ef6\u5b58\u5728&quot;\n        exit 1\n    fi\n}\n\n# \u68c0\u67e5 playbook \u6587\u4ef6\ncheck_playbook() {\n    local playbook=&quot;$1&quot;\n    if [ ! -f &quot;$PLAYBOOK_DIR\/$playbook&quot; ]; then\n        echo -e &quot;${RED}\u9519\u8bef: playbook \u6587\u4ef6\u4e0d\u5b58\u5728: $PLAYBOOK_DIR\/$playbook${NC}&quot;\n        echo &quot;\u53ef\u7528\u7684 playbook \u6587\u4ef6:&quot;\n        ls -la *.yml\n        exit 1\n    fi\n}\n\n# \u9a8c\u8bc1\u7cfb\u7edf\u7c7b\u578b\nvalidate_system_type() {\n    local system_type=&quot;$1&quot;\n    if [[ ! &quot; ${!SYSTEM_GROUPS[@]} &quot; =~ &quot; $system_type &quot; ]]; then\n        echo -e &quot;${RED}\u9519\u8bef: \u4e0d\u652f\u6301\u7684\u7cfb\u7edf\u7c7b\u578b &#039;$system_type&#039;${NC}&quot;\n        echo &quot;\u652f\u6301\u7684\u7cfb\u7edf\u7c7b\u578b: ${!SYSTEM_GROUPS[@]}&quot;\n        echo &quot;&quot;\n        show_usage\n        exit 1\n    fi\n}\n\n# \u9a8c\u8bc1\u64cd\u4f5c\u7c7b\u578b\nvalidate_action() {\n    local action=&quot;$1&quot;\n    if [[ ! &quot; ${!ACTION_PLAYBOOKS[@]} &quot; =~ &quot; $action &quot; ]]; then\n        echo -e &quot;${RED}\u9519\u8bef: \u4e0d\u652f\u6301\u7684\u64cd\u4f5c &#039;$action&#039;${NC}&quot;\n        echo &quot;\u652f\u6301\u7684\u64cd\u4f5c: ${!ACTION_PLAYBOOKS[@]}&quot;\n        echo &quot;&quot;\n        show_usage\n        exit 1\n    fi\n}\n\n# \u68c0\u67e5\u7ec4\u662f\u5426\u5b58\u5728\ncheck_group_exists() {\n    local group=&quot;$1&quot;\n    if ! ansible-inventory -i &quot;$INVENTORY&quot; --list | grep -q &quot;\\&quot;$group\\&quot;&quot;; then\n        echo -e &quot;${YELLOW}\u8b66\u544a: inventory \u4e2d\u672a\u627e\u5230\u7ec4 &#039;$group&#039;${NC}&quot;\n        echo &quot;\u8bf7\u68c0\u67e5 inventory\/hosts.yml \u6587\u4ef6\u4e2d\u662f\u5426\u5b9a\u4e49\u4e86\u8be5\u7ec4&quot;\n        return 1\n    fi\n    return 0\n}\n\n# \u5217\u51fa\u4e3b\u673a\nlist_hosts() {\n    echo -e &quot;${BLUE}==================== \u4e3b\u673a\u5217\u8868 ====================${NC}&quot;\n\n    # \u4f7f\u7528 ansible-inventory \u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\n    for system_type in &quot;${!SYSTEM_GROUPS[@]}&quot;; do\n        local group=&quot;${SYSTEM_GROUPS[$system_type]}&quot;\n        echo -e &quot;\\n${GREEN}=== $system_type ($group) ===${NC}&quot;\n\n        # \u68c0\u67e5\u7ec4\u662f\u5426\u5b58\u5728\n        if check_group_exists &quot;$group&quot;; then\n            # \u83b7\u53d6\u8be5\u7ec4\u7684\u4e3b\u673a\u5217\u8868\n            ansible-inventory -i &quot;$INVENTORY&quot; --list | \\\n            python3 -c &quot;\nimport sys, json\ndata = json.load(sys.stdin)\ngroup = &#039;$group&#039;\nif group in data and &#039;hosts&#039; in data[group]:\n    for host in data[group][&#039;hosts&#039;]:\n        print(f&#039;  \ud83d\udccd {host}&#039;)\n    print(f&#039;  \u603b\u8ba1: {len(data[group][\\&quot;hosts\\&quot;])} \u53f0\u4e3b\u673a&#039;)\nelse:\n    print(&#039;  \ud83d\udeab \u672a\u627e\u5230\u4e3b\u673a\u6216\u7ec4\u4e0d\u5b58\u5728&#039;)\n&quot;\n        else\n            echo &quot;  \ud83d\udeab \u7ec4\u4e0d\u5b58\u5728&quot;\n        fi\n    done\n\n    echo -e &quot;\\n${BLUE}=================================================${NC}&quot;\n}\n\n# \u8fd0\u884c ansible playbook\nrun_playbook() {\n    local system_type=&quot;$1&quot;\n    local action=&quot;$2&quot;\n    local extra_vars=&quot;system_type=$system_type&quot;\n\n    # \u9a8c\u8bc1\u64cd\u4f5c\u7c7b\u578b\n    validate_action &quot;$action&quot;\n\n    # \u83b7\u53d6\u5bf9\u5e94\u7684 playbook\n    local playbook=&quot;${ACTION_PLAYBOOKS[$action]}&quot;\n\n    check_playbook &quot;$playbook&quot;\n\n    local group=&quot;${SYSTEM_GROUPS[$system_type]}&quot;\n\n    echo -e &quot;${BLUE}\u5728 ${system_type} \u4e3b\u673a\u4e0a\u6267\u884c ${action} \u64cd\u4f5c...${NC}&quot;\n    echo &quot;\u76ee\u6807\u7ec4: $group&quot;\n    echo &quot;Playbook: $playbook&quot;\n    echo &quot;&quot;\n\n    # \u68c0\u67e5\u7ec4\u662f\u5426\u5b58\u5728\n    if ! check_group_exists &quot;$group&quot;; then\n        echo -e &quot;${RED}\u9519\u8bef: \u65e0\u6cd5\u7ee7\u7eed\uff0c\u7ec4 &#039;$group&#039; \u4e0d\u5b58\u5728${NC}&quot;\n        return 1\n    fi\n\n    # \u6839\u636e\u4e0d\u540c\u7684 playbook \u6dfb\u52a0\u4e0d\u540c\u7684\u53c2\u6570\n    case &quot;$action&quot; in\n        &quot;fix-config&quot;|&quot;verify&quot;)\n            extra_vars=&quot;$extra_vars action=$action&quot;\n            ;;\n    esac\n\n    ansible-playbook -i &quot;$INVENTORY&quot; \\\n                     --limit &quot;$group&quot; \\\n                     --extra-vars &quot;$extra_vars&quot; \\\n                     &quot;$PLAYBOOK_DIR\/$playbook&quot;\n}\n\n# \u5728\u6240\u6709\u4e3b\u673a\u4e0a\u6267\u884c\u64cd\u4f5c\nrun_on_all() {\n    local action=&quot;$1&quot;\n\n    echo -e &quot;${BLUE}\u5728\u6240\u6709\u4e3b\u673a\u4e0a\u6267\u884c ${action} \u64cd\u4f5c...${NC}&quot;\n\n    # \u9a8c\u8bc1\u64cd\u4f5c\u7c7b\u578b\n    validate_action &quot;$action&quot;\n\n    local playbook=&quot;${ACTION_PLAYBOOKS[$action]}&quot;\n    check_playbook &quot;$playbook&quot;\n\n    # \u6839\u636e\u4e0d\u540c\u7684 playbook \u6dfb\u52a0\u4e0d\u540c\u7684\u53c2\u6570\n    case &quot;$action&quot; in\n        &quot;fix-config&quot;|&quot;verify&quot;)\n            ansible-playbook -i &quot;$INVENTORY&quot; \\\n                             --extra-vars &quot;action=$action&quot; \\\n                             &quot;$PLAYBOOK_DIR\/$playbook&quot;\n            ;;\n        *)\n            ansible-playbook -i &quot;$INVENTORY&quot; &quot;$PLAYBOOK_DIR\/$playbook&quot;\n            ;;\n    esac\n}\n\n# \u4e3b\u51fd\u6570\nmain() {\n    # \u68c0\u67e5\u53c2\u6570\u6570\u91cf\n    if [ $# -eq 0 ]; then\n        show_usage\n        exit 1\n    fi\n\n    # \u68c0\u67e5\u57fa\u672c\u6587\u4ef6\n    check_inventory\n\n    local system_type=&quot;$1&quot;\n    local action=&quot;$2&quot;\n\n    # \u5904\u7406\u7279\u6b8a\u547d\u4ee4\n    case &quot;$system_type&quot; in\n        &quot;help&quot;|&quot;--help&quot;|&quot;-h&quot;)\n            show_usage\n            exit 0\n            ;;\n        &quot;list-hosts&quot;)\n            list_hosts\n            exit 0\n            ;;\n        &quot;all&quot;)\n            if [ -z &quot;$action&quot; ]; then\n                echo -e &quot;${RED}\u9519\u8bef: &#039;all&#039; \u9700\u8981\u6307\u5b9a\u64cd\u4f5c${NC}&quot;\n                show_usage\n                exit 1\n            fi\n            run_on_all &quot;$action&quot;\n            exit 0\n            ;;\n    esac\n\n    # \u9a8c\u8bc1\u53c2\u6570\n    if [ -z &quot;$action&quot; ]; then\n        echo -e &quot;${RED}\u9519\u8bef: \u7f3a\u5c11\u64cd\u4f5c\u53c2\u6570${NC}&quot;\n        show_usage\n        exit 1\n    fi\n\n    # \u9a8c\u8bc1\u7cfb\u7edf\u7c7b\u578b\n    validate_system_type &quot;$system_type&quot;\n\n    # \u6267\u884c\u64cd\u4f5c\n    run_playbook &quot;$system_type&quot; &quot;$action&quot;\n}\n\n# \u68c0\u67e5\u662f\u5426\u6709 ansible\nif ! command -v ansible-playbook &amp;&gt; \/dev\/null; then\n    echo -e &quot;${RED}\u9519\u8bef: \u672a\u627e\u5230 ansible-playbook \u547d\u4ee4${NC}&quot;\n    echo &quot;\u8bf7\u5148\u5b89\u88c5 Ansible&quot;\n    exit 1\nfi\n\n# \u8fd0\u884c\u4e3b\u51fd\u6570\nmain &quot;$@&quot;\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-37198a0 elementor-widget elementor-widget-heading\" data-id=\"37198a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"debian%E7%B3%BB%E5%AE%B9%E5%99%A8%E5%86%85%E9%85%8D%E7%BD%AElsyncd\"><\/span>debian\u7cfb\u5bb9\u5668\u5185\u914d\u7f6elsyncd<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0460a26 elementor-widget elementor-widget-shortcode\" data-id=\"0460a26\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">debian\u7cfb\u5bb9\u5668\u5185\u914d\u7f6elsyncd.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/debian\u7cfb\u5bb9\u5668\u5185\u914d\u7f6elsyncd.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#\u521b\u5efa\u5fc5\u8981\u7684\u76ee\u5f55\u7ed3\u6784\u548c\u6587\u4ef6\r\nmkdir -p  \/etc\/nodes\/sites-available  \r\nmkdir -p  \/etc\/nodes\/sites-enabled\r\nmkdir -p  \/etc\/nodes\/streams-available\r\nmkdir -p  \/etc\/nodes\/streams-enabled\r\n\r\ncat &gt; \/etc\/nginx\/nginx.conf &lt;&lt; &#039;EOF&#039;\r\nuser nginx;\r\nworker_processes auto;\r\nerror_log \/var\/log\/nginx\/error.log notice;\r\npid \/run\/nginx.pid;\r\nevents {\r\n    worker_connections 1024;\r\n}\r\nhttp {\r\n    include \/etc\/nginx\/mime.types;\r\n    default_type application\/octet-stream;\r\n    log_format main &#039;$remote_addr - $remote_user [$time_local] &quot;$request&quot; &#039;\r\n        &#039;$status $body_bytes_sent &quot;$http_referer&quot; &#039;\r\n        &#039;&quot;$http_user_agent&quot; &quot;$http_x_forwarded_for&quot;&#039;;\r\n    access_log \/var\/log\/nginx\/access.log main;\r\n    sendfile on;\r\n    #tcp_nopush     on;\r\n    keepalive_timeout 65;\r\n    #gzip  on;\r\n    include \/etc\/nginx\/conf.d\/*.conf;\r\n    include \/etc\/nodes\/sites-enabled\/*;\r\n}\r\nstream {\r\n    include \/etc\/nodes\/streams-enabled\/*;\r\n}\r\nEOF\r\n\r\ncat &gt; \/etc\/nginx\/conf.d\/stub_status_nginx-ui.conf &lt;&lt; &#039;EOF&#039;\r\n# DO NOT EDIT THIS FILE, IT IS AUTO GENERATED BY NGINX-UI\r\n# Nginx stub_status configuration for Nginx-UI\r\n# Modified at 2025-10-29 14:40:46\r\nserver {\r\n    listen 51820;\r\n    server_name localhost;\r\n    # Status monitoring interface\r\n    location \/stub_status {\r\n        stub_status;\r\n        allow 127.0.0.1;\r\n        deny all;\r\n    }\r\n}\r\nEOF\r\n\r\n# \u66f4\u65b0\u5305\u7ba1\u7406\u5668\u5e76\u5b89\u88c5\u5fc5\u8981\u7684\u5de5\u5177\r\napt-get update\r\napt-get install -y lsyncd rsync inotify-tools procps\r\n\r\n# \u68c0\u67e5\u5b89\u88c5\u662f\u5426\u6210\u529f\r\nlsyncd -version\r\nrsync --version\r\n\r\n# \u5728\u5bb9\u5668\u5185\u521b\u5efa\u914d\u7f6e\u76ee\u5f55\r\nmkdir -p \/etc\/lsyncd\r\nmkdir -p \/var\/log\/lsyncd\r\nmkdir -p \/opt\/sync-scripts\r\nmkdir -p \/etc\/nginx\/other_nginx_containers\r\n\r\n#\u521b\u5efalsyncd\u914d\u7f6e\u6587\u4ef6\r\n# \u521b\u5efa\u4e3b\u914d\u7f6e\u6587\u4ef6\r\ncat &gt; \/etc\/lsyncd\/lsyncd.conf.lua &lt;&lt; &#039;EOF&#039;\r\n-- Lsyncd \u914d\u7f6e\u6587\u4ef6\r\nsettings {\r\n    logfile = &quot;\/var\/log\/lsyncd\/lsyncd.log&quot;,\r\n    statusFile = &quot;\/var\/log\/lsyncd\/lsyncd.status&quot;,\r\n    statusInterval = 1,\r\n    nodaemon = false\r\n}\r\n\r\n-- \u53cc\u5411\u540c\u6b65\u914d\u7f6e\uff1a\/etc\/nodes\/ \u2194 \/etc\/nginx\/other_nginx_containers\r\nsync {\r\n    default.rsync,\r\n    source = &quot;\/etc\/nodes\/&quot;,\r\n    target = &quot;\/etc\/nginx\/other_nginx_containers\/&quot;,\r\n    rsync = {\r\n        archive = true,\r\n        compress = true,\r\n        verbose = true,\r\n        owner = true,\r\n        group = true,\r\n        perms = true,\r\n        _extra = {&quot;--delete&quot;}\r\n    },\r\n    delay = 1\r\n}\r\n\r\nsync {\r\n    default.rsync,\r\n    source = &quot;\/etc\/nginx\/other_nginx_containers\/&quot;, \r\n    target = &quot;\/etc\/nodes\/&quot;,\r\n    rsync = {\r\n        archive = true,\r\n        compress = true,\r\n        verbose = true,\r\n        owner = true,\r\n        group = true,\r\n        perms = true,\r\n        _extra = {&quot;--delete&quot;}\r\n    },\r\n    delay = 1\r\n}\r\nEOF\r\n\r\n\r\n# \u521b\u5efa\u542f\u52a8\u811a\u672c\r\ncat &gt; \/opt\/sync-scripts\/start-sync.sh &lt;&lt; &#039;EOF&#039;\r\n#!\/bin\/bash\r\necho &quot;\u542f\u52a8Lsyncd\u53cc\u5411\u540c\u6b65\u670d\u52a1...&quot;\r\n\r\n# \u68c0\u67e5\u914d\u7f6e\u76ee\u5f55\u662f\u5426\u5b58\u5728\r\nmkdir -p \/etc\/nodes\/\r\nmkdir -p \/etc\/nginx\/other_nginx_containers\r\n\r\n# \u505c\u6b62\u5df2\u8fd0\u884c\u7684lsyncd\uff08\u4f7f\u7528kill\u547d\u4ee4\uff09\r\nif ps aux | grep lsyncd | grep -v grep &gt; \/dev\/null; then\r\n    echo &quot;\u505c\u6b62\u5df2\u8fd0\u884c\u7684lsyncd\u8fdb\u7a0b...&quot;\r\n    kill $(ps aux | grep lsyncd | grep -v grep | awk &#039;{print $2}&#039;) 2&gt;\/dev\/null\r\n    sleep 2\r\nfi\r\n\r\n# \u542f\u52a8lsyncd\r\nlsyncd \/etc\/lsyncd\/lsyncd.conf.lua\r\n\r\n# \u68c0\u67e5\u662f\u5426\u542f\u52a8\u6210\u529f\r\nsleep 3\r\nif ps aux | grep lsyncd | grep -v grep &gt; \/dev\/null; then\r\n    echo &quot;\u2705 Lsyncd\u542f\u52a8\u6210\u529f&quot;\r\n    echo &quot;\u76d1\u63a7\u65e5\u5fd7: tail -f \/var\/log\/lsyncd\/lsyncd.log&quot;\r\nelse\r\n    echo &quot;\u274c Lsyncd\u542f\u52a8\u5931\u8d25&quot;\r\n    # \u67e5\u770b\u9519\u8bef\u65e5\u5fd7\r\n    if [ -f &quot;\/var\/log\/lsyncd\/lsyncd.log&quot; ]; then\r\n        echo &quot;\u9519\u8bef\u4fe1\u606f:&quot;\r\n        tail -20 \/var\/log\/lsyncd\/lsyncd.log\r\n    fi\r\n    exit 1\r\nfi\r\nEOF\r\n\r\n# \u521b\u5efa\u505c\u6b62\u811a\u672c\r\n\r\ncat &gt; \/opt\/sync-scripts\/stop-sync.sh &lt;&lt; &#039;EOF&#039;\r\n#!\/bin\/bash\r\necho &quot;\u505c\u6b62Lsyncd\u540c\u6b65\u670d\u52a1...&quot;\r\n\r\nif ps aux | grep lsyncd | grep -v grep &gt; \/dev\/null; then\r\n    PID=$(ps aux | grep lsyncd | grep -v grep | awk &#039;{print $2}&#039;)\r\n    echo &quot;\u505c\u6b62lsyncd\u8fdb\u7a0b (PID: $PID)&quot;\r\n    kill $PID 2&gt;\/dev\/null\r\n    sleep 2\r\n    \r\n    # \u68c0\u67e5\u662f\u5426\u505c\u6b62\u6210\u529f\r\n    if ps aux | grep lsyncd | grep -v grep &gt; \/dev\/null; then\r\n        echo &quot;\u5f3a\u5236\u6740\u6b7b\u8fdb\u7a0b...&quot;\r\n        kill -9 $PID 2&gt;\/dev\/null\r\n    else\r\n        echo &quot;\u2705 Lsyncd\u5df2\u505c\u6b62&quot;\r\n    fi\r\nelse\r\n    echo &quot;\u2705 Lsyncd\u672a\u8fd0\u884c&quot;\r\nfi\r\nEOF\r\n\r\n# \u521b\u5efa\u72b6\u6001\u68c0\u67e5\u811a\u672c\r\ncat &gt; \/opt\/sync-scripts\/status-sync.sh &lt;&lt; &#039;EOF&#039;\r\n#!\/bin\/bash\r\necho &quot;=== Lsyncd\u540c\u6b65\u72b6\u6001 ===&quot;\r\n\r\n# \u68c0\u67e5\u8fdb\u7a0b\r\nif ps aux | grep lsyncd | grep -v grep &gt; \/dev\/null; then\r\n    PID=$(ps aux | grep lsyncd | grep -v grep | awk &#039;{print $2}&#039;)\r\n    echo &quot;\u2705 Lsyncd\u8fdb\u7a0b\u8fd0\u884c\u4e2d (PID: $PID)&quot;\r\nelse\r\n    echo &quot;\u274c Lsyncd\u8fdb\u7a0b\u672a\u8fd0\u884c&quot;\r\nfi\r\n\r\n# \u68c0\u67e5\u65e5\u5fd7\r\nif [ -f &quot;\/var\/log\/lsyncd\/lsyncd.log&quot; ]; then\r\n    echo &quot;\ud83d\udccb \u6700\u8fd1\u65e5\u5fd7:&quot;\r\n    tail -10 \/var\/log\/lsyncd\/lsyncd.log\r\nelse\r\n    echo &quot;\ud83d\udccb \u65e5\u5fd7\u6587\u4ef6\u4e0d\u5b58\u5728&quot;\r\nfi\r\n\r\n# \u68c0\u67e5\u540c\u6b65\u76ee\u5f55\u72b6\u6001\r\necho &quot;&quot;\r\necho &quot;=== \u76ee\u5f55\u540c\u6b65\u72b6\u6001 ===&quot;\r\nnodes_count=$(find \/etc\/nodes\/ -type f 2&gt;\/dev\/null | wc -l)\r\nnginx_count=$(find \/etc\/nginx\/other_nginx_containers\/ -type f 2&gt;\/dev\/null | wc -l)\r\n\r\necho &quot;\ud83d\udcc1 \/etc\/nodes\/ ($nodes_count files) \u2194 \/etc\/nginx\/other_nginx_containers\/ ($nginx_count files)&quot;\r\n\r\nif [ &quot;$nodes_count&quot; -eq &quot;$nginx_count&quot; ]; then\r\n    echo &quot;\u2705 \u6587\u4ef6\u6570\u91cf\u4e00\u81f4&quot;\r\nelse\r\n    echo &quot;\u26a0\ufe0f  \u6587\u4ef6\u6570\u91cf\u4e0d\u4e00\u81f4&quot;\r\nfi\r\n\r\necho &quot;&quot;\r\necho &quot;\u76ee\u5f55\u5185\u5bb9\u5bf9\u6bd4:&quot;\r\necho &quot;\/etc\/nodes\/:&quot;\r\nls -la \/etc\/nodes\/ 2&gt;\/dev\/null || echo &quot;\u76ee\u5f55\u4e3a\u7a7a\u6216\u4e0d\u5b58\u5728&quot;\r\necho &quot;&quot;\r\necho &quot;\/etc\/nginx\/other_nginx_containers\/:&quot;\r\nls -la \/etc\/nginx\/other_nginx_containers\/ 2&gt;\/dev\/null || echo &quot;\u76ee\u5f55\u4e3a\u7a7a\u6216\u4e0d\u5b58\u5728&quot;\r\nEOF\r\n\r\n# \u521b\u5efa\u5f3a\u5236\u540c\u6b65\u811a\u672c\r\ncat &gt; \/opt\/sync-scripts\/force-sync.sh &lt;&lt; &#039;EOF&#039;\r\n#!\/bin\/bash\r\necho &quot;\u6267\u884c\u5f3a\u5236\u540c\u6b65...&quot;\r\n\r\n# \u505c\u6b62lsyncd\r\nif ps aux | grep lsyncd | grep -v grep &gt; \/dev\/null; then\r\n    kill $(ps aux | grep lsyncd | grep -v grep | awk &#039;{print $2}&#039;) 2&gt;\/dev\/null\r\n    sleep 2\r\nfi\r\n\r\n# \u786e\u4fdd\u76ee\u5f55\u5b58\u5728\r\nmkdir -p \/etc\/nodes\/\r\nmkdir -p \/etc\/nginx\/other_nginx_containers\/\r\n\r\necho &quot;\u540c\u6b65 \/etc\/nodes\/ \u2192 \/etc\/nginx\/other_nginx_containers\/&quot;\r\nrsync -av --delete \/etc\/nodes\/ \/etc\/nginx\/other_nginx_containers\/\r\n\r\necho &quot;\u540c\u6b65 \/etc\/nginx\/other_nginx_containers\/ \u2192 \/etc\/nodes\/&quot;\r\nrsync -av --delete \/etc\/nginx\/other_nginx_containers\/ \/etc\/nodes\/\r\n\r\n# \u91cd\u65b0\u542f\u52a8lsyncd\r\nlsyncd \/etc\/lsyncd\/lsyncd.conf.lua\r\necho &quot;\u5f3a\u5236\u540c\u6b65\u5b8c\u6210&quot;\r\nEOF\r\n\r\n\r\n# \u8bbe\u7f6e\u811a\u672c\u6743\u9650\r\nchmod +x \/opt\/sync-scripts\/*.sh\r\n\r\nsh -x \/opt\/sync-scripts\/start-sync.sh\r\nsh -x \/opt\/sync-scripts\/force-sync.sh\r\nsh -x \/opt\/sync-scripts\/status-sync.sh\r\n\r\n\r\n\r\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4702f89 elementor-widget elementor-widget-heading\" data-id=\"4702f89\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85libre_office%E5%8F%8A%E7%B3%BB%E7%BB%9F%E5%AD%97%E4%BD%93\"><\/span>\u4e00\u952e\u5b89\u88c5libre_office\u53ca\u7cfb\u7edf\u5b57\u4f53<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-04a1ce5 elementor-widget elementor-widget-shortcode\" data-id=\"04a1ce5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">\u5b89\u88c5libre_office.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/\u5b89\u88c5libre_office.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n\n# LibreOffice \u5b8c\u6574\u5b89\u88c5\u811a\u672c\n# \u5305\u542b\u4e3b\u7a0b\u5e8f\u5b89\u88c5\u548c\u5b57\u4f53\u5b89\u88c5\u529f\u80fd\n\n# \u811a\u672c\u914d\u7f6e\nRESOURCES_DIR=&quot;\/data\/resources&quot;\nLIBREOFFICE_ARCHIVE=&quot;$RESOURCES_DIR\/LibreOffice_7.6.7.2_Linux_x86-64_rpm.tar.gz&quot;\nFONTS_ZIP=&quot;$RESOURCES_DIR\/fonts.zip&quot;\nINSTALL_DIR=&quot;\/opt&quot;\nLOG_FILE=&quot;\/var\/log\/libreoffice_install.log&quot;\n\n# \u989c\u8272\u5b9a\u4e49\nRED=&#039;\\033[0;31m&#039;\nGREEN=&#039;\\033[0;32m&#039;\nYELLOW=&#039;\\033[1;33m&#039;\nBLUE=&#039;\\033[0;34m&#039;\nNC=&#039;\\033[0m&#039; # No Color\n\n# \u65e5\u5fd7\u51fd\u6570\nlog_info() {\n    echo -e &quot;${BLUE}[INFO]${NC} $(date &#039;+%Y-%m-%d %H:%M:%S&#039;) - $1&quot; | tee -a &quot;$LOG_FILE&quot;\n}\n\nlog_success() {\n    echo -e &quot;${GREEN}[SUCCESS]${NC} $(date &#039;+%Y-%m-%d %H:%M:%S&#039;) - $1&quot; | tee -a &quot;$LOG_FILE&quot;\n}\n\nlog_warning() {\n    echo -e &quot;${YELLOW}[WARNING]${NC} $(date &#039;+%Y-%m-%d %H:%M:%S&#039;) - $1&quot; | tee -a &quot;$LOG_FILE&quot;\n}\n\nlog_error() {\n    echo -e &quot;${RED}[ERROR]${NC} $(date &#039;+%Y-%m-%d %H:%M:%S&#039;) - $1&quot; | tee -a &quot;$LOG_FILE&quot;\n}\n\n# \u68c0\u67e5root\u6743\u9650\ncheck_root() {\n    if [[ $EUID -ne 0 ]]; then\n        log_error &quot;\u6b64\u811a\u672c\u9700\u8981root\u6743\u9650\u8fd0\u884c&quot;\n        exit 1\n    fi\n}\n\n# \u68c0\u67e5JDK\u662f\u5426\u5b89\u88c5\ncheck_jdk() {\n    log_info &quot;\u68c0\u67e5JDK\u662f\u5426\u5df2\u5b89\u88c5...&quot;\n    \n    local java_installed=false\n    \n    # \u68c0\u67e5Java\u547d\u4ee4\u662f\u5426\u5b58\u5728\n    if command -v java &amp;&gt; \/dev\/null; then\n        java_version=$(java -version 2&gt;&amp;1 | head -n1 | cut -d&#039;&quot;&#039; -f2)\n        log_success &quot;\u68c0\u6d4b\u5230Java\u5df2\u5b89\u88c5\uff0c\u7248\u672c: $java_version&quot;\n        java_installed=true\n    fi\n    \n    # \u68c0\u67e5rpm\u5305\u4e2d\u7684JDK\n    if rpm -qa | grep -E &quot;java-|jdk-&quot; &amp;&gt; \/dev\/null; then\n        log_success &quot;\u68c0\u6d4b\u5230\u901a\u8fc7rpm\u5b89\u88c5\u7684JDK&quot;\n        java_installed=true\n    fi\n    \n    if [[ $java_installed == false ]]; then\n        log_error &quot;\u672a\u68c0\u6d4b\u5230JDK\u5b89\u88c5\uff0cLibreOffice\u9700\u8981Java\u8fd0\u884c\u73af\u5883&quot;\n        log_info &quot;\u8bf7\u5148\u5b89\u88c5JDK\uff0c\u7136\u540e\u91cd\u65b0\u8fd0\u884c\u6b64\u811a\u672c&quot;\n        log_info &quot;\u63a8\u8350\u5b89\u88c5OpenJDK: yum install -y java-11-openjdk&quot;\n        exit 1\n\t\n    fi\n}\n\n# \u5b89\u88c5\u7cfb\u7edf\u4f9d\u8d56\ninstall_dependencies() {\n    log_info &quot;\u5b89\u88c5\u7cfb\u7edf\u4f9d\u8d56\u5305...&quot;\n    \n    # \u5b89\u88c5\u5fc5\u8981\u7684\u4f9d\u8d56\u5305\n    yum -y install ibus &gt;&gt; &quot;$LOG_FILE&quot; 2&gt;&amp;1\n    yum -y install libX11-devel --nogpg &gt;&gt; &quot;$LOG_FILE&quot; 2&gt;&amp;1\n    \n    if [[ $? -eq 0 ]]; then\n        log_success &quot;\u7cfb\u7edf\u4f9d\u8d56\u5b89\u88c5\u5b8c\u6210&quot;\n    else\n        log_warning &quot;\u7cfb\u7edf\u4f9d\u8d56\u5b89\u88c5\u53ef\u80fd\u5b58\u5728\u554f\u984c&quot;\n    fi\n}\n\n# \u5b89\u88c5\u81ea\u5b9a\u4e49\u5b57\u4f53\ninstall_and_verify_fonts() {\n    local fonts_temp=&quot;\/tmp\/fonts_install&quot;\n    local system_fonts_dir=&quot;\/usr\/share\/fonts\/custom_fonts&quot;\n    \n    log_info &quot;\u5f00\u59cb\u5b89\u88c5\u81ea\u5b9a\u4e49\u5b57\u4f53...&quot;\n    \n    # 1. \u68c0\u67e5\u5b57\u4f53\u5305\u662f\u5426\u5b58\u5728\n    if [[ ! -f &quot;$FONTS_ZIP&quot; ]]; then\n        log_warning &quot;\u5b57\u4f53\u5305\u4e0d\u5b58\u5728: $FONTS_ZIP\uff0c\u8df3\u8fc7\u5b57\u4f53\u5b89\u88c5&quot;\n        return 0\n    fi\n    \n    # 2. \u68c0\u67e5\u6587\u4ef6\u683c\u5f0f\n    if ! file &quot;$FONTS_ZIP&quot; | grep -q &quot;Zip archive&quot;; then\n        log_error &quot;\u6587\u4ef6\u4e0d\u662f\u6709\u6548\u7684ZIP\u683c\u5f0f: $FONTS_ZIP&quot;\n        return 1\n    fi\n    \n    # 3. \u6e05\u7406\u5e76\u521b\u5efa\u4e34\u65f6\u76ee\u5f55\n    rm -rf &quot;$fonts_temp&quot;\n    mkdir -p &quot;$fonts_temp&quot;\n    \n    # 4. \u89e3\u538b\u5b57\u4f53\u5305\n    log_info &quot;\u89e3\u538b\u5b57\u4f53\u5305...&quot;\n    if ! unzip -q &quot;$FONTS_ZIP&quot; -d &quot;$fonts_temp&quot;; then\n        log_error &quot;\u5b57\u4f53\u5305\u89e3\u538b\u5931\u8d25&quot;\n        rm -rf &quot;$fonts_temp&quot;\n        return 1\n    fi\n    \n    # 5. \u67e5\u627e\u5b57\u4f53\u6587\u4ef6\n    local font_files=()\n    while IFS= read -r -d &#039;&#039; file; do\n        font_files+=(&quot;$file&quot;)\n    done &lt; &lt;(find &quot;$fonts_temp&quot; -type f \\( -name &quot;*.ttf&quot; -o -name &quot;*.otf&quot; -o -name &quot;*.ttc&quot; -o -name &quot;*.TTF&quot; -o -name &quot;*.OTF&quot; \\) -print0)\n    \n    if [[ ${#font_files[@]} -eq 0 ]]; then\n        log_warning &quot;\u672a\u627e\u5230\u4efb\u4f55\u5b57\u4f53\u6587\u4ef6(.ttf\/.otf\/.ttc)\uff0c\u8df3\u8fc7\u5b57\u4f53\u5b89\u88c5&quot;\n        rm -rf &quot;$fonts_temp&quot;\n        return 0\n    fi\n    \n    log_success &quot;\u627e\u5230 ${#font_files[@]} \u4e2a\u5b57\u4f53\u6587\u4ef6&quot;\n    \n    # 6. \u521b\u5efa\u7cfb\u7edf\u5b57\u4f53\u76ee\u5f55\n    mkdir -p &quot;$system_fonts_dir&quot;\n    \n    # 7. \u590d\u5236\u5b57\u4f53\u6587\u4ef6\u5e76\u8bbe\u7f6e\u6743\u9650\n    log_info &quot;\u5b89\u88c5\u5b57\u4f53\u6587\u4ef6...&quot;\n    for font_file in &quot;${font_files[@]}&quot;; do\n        local font_name=$(basename &quot;$font_file&quot;)\n        cp &quot;$font_file&quot; &quot;$system_fonts_dir\/&quot;\n        chmod 644 &quot;$system_fonts_dir\/$font_name&quot;\n        log_info &quot;\u5b89\u88c5\u5b57\u4f53: $font_name&quot;\n    done\n    \n    # 8. \u66f4\u65b0\u5b57\u4f53\u7f13\u5b58\n    log_info &quot;\u66f4\u65b0\u5b57\u4f53\u7f13\u5b58...&quot;\n    if command -v fc-cache &gt;\/dev\/null 2&gt;&amp;1; then\n        if fc-cache -fv &quot;$system_fonts_dir&quot; &gt;&gt; &quot;$LOG_FILE&quot; 2&gt;&amp;1; then\n            log_success &quot;\u5b57\u4f53\u7f13\u5b58\u66f4\u65b0\u6210\u529f&quot;\n        else\n            log_error &quot;\u5b57\u4f53\u7f13\u5b58\u66f4\u65b0\u5931\u8d25&quot;\n            rm -rf &quot;$fonts_temp&quot;\n            return 1\n        fi\n    else\n        log_warning &quot;\u672a\u627e\u5230fc-cache\u547d\u4ee4\uff0c\u8df3\u8fc7\u7f13\u5b58\u66f4\u65b0&quot;\n    fi\n    \n    # 9. \u9a8c\u8bc1\u5b57\u4f53\u5b89\u88c5\n    log_info &quot;\u9a8c\u8bc1\u5b57\u4f53\u5b89\u88c5...&quot;\n    if command -v fc-list &gt;\/dev\/null 2&gt;&amp;1; then\n        local installed_count=$(fc-list | grep -c &quot;$system_fonts_dir&quot;)\n        log_success &quot;\u7cfb\u7edf\u5df2\u8bc6\u522b $installed_count \u4e2a\u65b0\u5b57\u4f53&quot;\n        \n        # \u663e\u793a\u90e8\u5206\u5b89\u88c5\u7684\u5b57\u4f53\n        fc-list | grep &quot;$system_fonts_dir&quot; | head -5 | while read font; do\n            log_info &quot;\u5b57\u4f53\u793a\u4f8b: $font&quot;\n        done\n    fi\n    \n    # 10. \u6e05\u7406\u4e34\u65f6\u6587\u4ef6\n    rm -rf &quot;$fonts_temp&quot;\n    \n    log_success &quot;\u81ea\u5b9a\u4e49\u5b57\u4f53\u5b89\u88c5\u5b8c\u6210&quot;\n    return 0\n}\n\n# \u5b89\u88c5LibreOffice\u4e3b\u7a0b\u5e8f\ninstall_libreoffice_main() {\n    log_info &quot;\u5f00\u59cb\u5b89\u88c5LibreOffice\u4e3b\u7a0b\u5e8f...&quot;\n    \n    # \u68c0\u67e5\u5b89\u88c5\u5305\u662f\u5426\u5b58\u5728\n    if [[ ! -f &quot;$LIBREOFFICE_ARCHIVE&quot; ]]; then\n        log_error &quot;\u672a\u627e\u5230LibreOffice\u5b89\u88c5\u5305: $LIBREOFFICE_ARCHIVE&quot;\n        exit 1\n    fi\n    \n    # \u5207\u6362\u5230\u8d44\u6e90\u76ee\u5f55\n    cd &quot;$RESOURCES_DIR&quot;\n    \n    # \u89e3\u538b\u5b89\u88c5\u5305\n    log_info &quot;\u89e3\u538b\u5b89\u88c5\u5305...&quot;\n    if ! tar -zxvf &quot;LibreOffice_7.6.7.2_Linux_x86-64_rpm.tar.gz&quot; &gt;&gt; &quot;$LOG_FILE&quot; 2&gt;&amp;1; then\n        log_error &quot;\u89e3\u538b\u5b89\u88c5\u5305\u5931\u8d25&quot;\n        exit 1\n    fi\n    \n    # \u8fdb\u5165RPM\u5305\u76ee\u5f55\n    local rpm_dir=&quot;$RESOURCES_DIR\/LibreOffice_7.6.7.2_Linux_x86-64_rpm\/RPMS&quot;\n    if [[ ! -d &quot;$rpm_dir&quot; ]]; then\n        log_error &quot;\u672a\u627e\u5230RPM\u5305\u76ee\u5f55: $rpm_dir&quot;\n        exit 1\n    fi\n    \n    log_info &quot;\u627e\u5230RPM\u5305\u76ee\u5f55: $rpm_dir&quot;\n    cd &quot;$rpm_dir&quot;\n    \n    # \u5b89\u88c5RPM\u5305\n    log_info &quot;\u5b89\u88c5RPM\u5305...&quot;\n    if yum -y localinstall *.rpm &gt;&gt; &quot;$LOG_FILE&quot; 2&gt;&amp;1; then\n        log_success &quot;RPM\u5305\u5b89\u88c5\u6210\u529f&quot;\n    else\n        log_error &quot;RPM\u5305\u5b89\u88c5\u5931\u8d25&quot;\n        exit 1\n    fi\n    \n    # \u521b\u5efa\u7b26\u53f7\u94fe\u63a5\n    if [[ ! -f &quot;\/usr\/local\/bin\/soffice&quot; ]]; then\n        ln -sf \/opt\/libreoffice7.6\/program\/soffice \/usr\/local\/bin\/soffice\n        log_info &quot;\u521b\u5efa\u7b26\u53f7\u94fe\u63a5: \/usr\/local\/bin\/soffice&quot;\n    fi\n}\n\n# \u914d\u7f6e\u73af\u5883\u53d8\u91cf\nsetup_environment() {\n    log_info &quot;\u914d\u7f6e\u73af\u5883\u53d8\u91cf...&quot;\n    \n    # \u6dfb\u52a0\u5230\/etc\/profile\n    if ! grep -q &quot;LibreOffice_PATH&quot; \/etc\/profile; then\n        cat &gt;&gt; \/etc\/profile &lt;&lt; EOF\n\n# LibreOffice Configuration\nexport LibreOffice_PATH=\/opt\/libreoffice7.6\/program\nexport PATH=\\$LibreOffice_PATH:\\$PATH\nEOF\n        log_success &quot;\u73af\u5883\u53d8\u91cf\u5df2\u6dfb\u52a0\u5230\/etc\/profile&quot;\n    fi\n    \n    # \u8bbe\u7f6e\u5f53\u524d\u73af\u5883\u53d8\u91cf\n    export LibreOffice_PATH=\/opt\/libreoffice7.6\/program\n    export PATH=$LibreOffice_PATH:$PATH\n}\n\n# \u6d4b\u8bd5\u5b89\u88c5\ntest_installation() {\n    log_info &quot;\u5f00\u59cb\u6d4b\u8bd5\u5b89\u88c5...&quot;\n    \n    local test_pass=0\n    local test_total=0\n    \n    # \u6d4b\u8bd51: \u68c0\u67e5soffice\u547d\u4ee4\n    echo &quot;=== \u6d4b\u8bd51: \u68c0\u67e5soffice\u547d\u4ee4 ===&quot;\n    if command -v soffice &gt;\/dev\/null 2&gt;&amp;1; then\n        log_success &quot;soffice\u547d\u4ee4\u53ef\u7528: $(which soffice)&quot;\n        ((test_pass++))\n    else\n        log_error &quot;soffice\u547d\u4ee4\u4e0d\u53ef\u7528&quot;\n    fi\n    ((test_total++))\n    \n    # \u6d4b\u8bd52: \u68c0\u67e5\u7248\u672c\u4fe1\u606f\n    echo &quot;=== \u6d4b\u8bd52: \u68c0\u67e5\u7248\u672c\u4fe1\u606f ===&quot;\n    if soffice --version &gt;&gt; &quot;$LOG_FILE&quot; 2&gt;&amp;1; then\n        local version=$(soffice --version | head -1)\n        log_success &quot;\u7248\u672c\u68c0\u67e5\u901a\u8fc7: $version&quot;\n        ((test_pass++))\n    else\n        log_error &quot;\u7248\u672c\u68c0\u67e5\u5931\u8d25&quot;\n    fi\n    ((test_total++))\n    \n    # \u6d4b\u8bd53: \u6d4b\u8bd5\u6587\u6863\u8f6c\u6362\n    echo &quot;=== \u6d4b\u8bd53: \u6d4b\u8bd5\u6587\u6863\u8f6c\u6362\u529f\u80fd ===&quot;\n    local test_file=&quot;\/tmp\/test_install.txt&quot;\n    echo &quot;LibreOffice\u5b89\u88c5\u6d4b\u8bd5\u6587\u6863&quot; &gt; &quot;$test_file&quot;\n    echo &quot;\u521b\u5efa\u65f6\u95f4: $(date)&quot; &gt;&gt; &quot;$test_file&quot;\n    \n    if soffice --headless --convert-to pdf --outdir \/tmp &quot;$test_file&quot; &gt;&gt; &quot;$LOG_FILE&quot; 2&gt;&amp;1; then\n        if [[ -f &quot;\/tmp\/test_install.pdf&quot; ]]; then\n            local pdf_size=$(stat -c%s &quot;\/tmp\/test_install.pdf&quot;)\n            log_success &quot;\u6587\u6863\u8f6c\u6362\u529f\u80fd\u6b63\u5e38 (PDF\u5927\u5c0f: ${pdf_size}\u5b57\u8282)&quot;\n            ((test_pass++))\n            rm -f &quot;\/tmp\/test_install.pdf&quot;\n        else\n            log_error &quot;\u6587\u6863\u8f6c\u6362\u5931\u8d25 - \u672a\u751f\u6210PDF\u6587\u4ef6&quot;\n        fi\n    else\n        log_error &quot;\u6587\u6863\u8f6c\u6362\u6d4b\u8bd5\u6267\u884c\u5931\u8d25&quot;\n    fi\n    ((test_total++))\n    rm -f &quot;$test_file&quot;\n    \n    # \u6d4b\u8bd54: \u68c0\u67e5\u5b57\u4f53\necho &quot;=== \u6d4b\u8bd54: \u68c0\u67e5\u5b57\u4f53\u5b89\u88c5 ===&quot;\n    if command -v fc-list &gt;\/dev\/null 2&gt;&amp;1; then\n        local font_count=$(fc-list | wc -l)\n        # \u4fee\u6b63\uff1a\u4f7f\u7528\u66f4\u53ef\u9760\u7684\u65b9\u6cd5\u7edf\u8ba1\u81ea\u5b9a\u4e49\u5b57\u4f53\n        local custom_font_count=0\n        if [[ -d &quot;\/usr\/share\/fonts\/custom_fonts&quot; ]]; then\n            custom_font_count=$(find \/usr\/share\/fonts\/custom_fonts -name &quot;*.ttf&quot; -o -name &quot;*.otf&quot; -o -name &quot;*.ttc&quot; 2&gt;\/dev\/null | wc -l)\n        fi\n        \n        log_success &quot;\u7cfb\u7edf\u5b57\u4f53\u603b\u6570: $font_count, \u81ea\u5b9a\u4e49\u5b57\u4f53: $custom_font_count&quot;\n        ((test_pass++))\n        \n        # \u663e\u793a\u524d\u51e0\u4e2a\u81ea\u5b9a\u4e49\u5b57\u4f53\uff08\u5982\u679c\u5b58\u5728\uff09\n        if [[ $custom_font_count -gt 0 ]]; then\n            log_info &quot;\u81ea\u5b9a\u4e49\u5b57\u4f53\u793a\u4f8b:&quot;\n            fc-list | grep &quot;\/usr\/share\/fonts\/custom_fonts&quot; 2&gt;\/dev\/null | head -3 | while read font; do\n                log_info &quot;  - $font&quot;\n            done\n        else\n            log_info &quot;\u672a\u5b89\u88c5\u81ea\u5b9a\u4e49\u5b57\u4f53&quot;\n        fi\n    else\n        log_warning &quot;\u65e0\u6cd5\u68c0\u67e5\u5b57\u4f53\u6570\u91cf - fc-list\u547d\u4ee4\u4e0d\u53ef\u7528&quot;\n        ((test_pass++))  # \u8df3\u8fc7\u8fd9\u4e2a\u6d4b\u8bd5\uff0c\u4e0d\u8bb0\u5931\u8d25\n    fi\n    ((test_total++))\n\n    # \u8f93\u51fa\u6d4b\u8bd5\u7ed3\u679c\n    echo &quot;================================================&quot;\n    log_info &quot;\u6d4b\u8bd5\u7ed3\u679c: $test_pass\/$test_total \u9879\u6d4b\u8bd5\u901a\u8fc7&quot;\n    \n    if [[ $test_pass -eq $test_total ]]; then\n        log_success &quot;\ud83c\udf89 LibreOffice\u5b89\u88c5\u6d4b\u8bd5\u5b8c\u5168\u901a\u8fc7\uff01&quot;\n        return 0\n    else\n        log_warning &quot;\u26a0\ufe0f  LibreOffice\u5b89\u88c5\u5b58\u5728\u90e8\u5206\u95ee\u9898&quot;\n        return 1\n    fi\n}\n\n# \u663e\u793a\u5b89\u88c5\u4fe1\u606f\nshow_installation_info() {\n    echo\n    echo &quot;================================================&quot;\n    echo &quot;LibreOffice \u5b89\u88c5\u5b8c\u6210&quot;\n    echo &quot;================================================&quot;\n    echo &quot;\u5b89\u88c5\u76ee\u5f55: \/opt\/libreoffice7.6&quot;\n    echo &quot;\u7a0b\u5e8f\u8def\u5f84: \/opt\/libreoffice7.6\/program\/soffice&quot;\n    echo &quot;\u7b26\u53f7\u94fe\u63a5: \/usr\/local\/bin\/soffice&quot;\n    echo &quot;\u5b57\u4f53\u76ee\u5f55: \/usr\/share\/fonts\/custom_fonts&quot;\n    echo &quot;\u65e5\u5fd7\u6587\u4ef6: $LOG_FILE&quot;\n    echo\n    echo &quot;\u4f7f\u7528\u793a\u4f8b:&quot;\n    echo &quot;  soffice --writer          # \u542f\u52a8Writer&quot;\n    echo &quot;  soffice --calc            # \u542f\u52a8Calc&quot;\n    echo &quot;  soffice --headless --convert-to pdf input.doc  # \u6587\u6863\u8f6c\u6362&quot;\n    echo\n    echo &quot;\u5373\u5c06\u81ea\u52a8\u8fdb\u884c\u5b89\u88c5\u6d4b\u8bd5...&quot;\n    echo &quot;================================================&quot;\n    echo\n}\n\n# \u6e05\u7406\u5b89\u88c5\u6587\u4ef6\ncleanup_installation() {\n    log_info &quot;\u6e05\u7406\u5b89\u88c5\u6587\u4ef6...&quot;\n    \n    # \u5220\u9664\u89e3\u538b\u7684\u76ee\u5f55\n    if [[ -d &quot;$RESOURCES_DIR\/LibreOffice_7.6.7.2_Linux_x86-64_rpm&quot; ]]; then\n        rm -rf &quot;$RESOURCES_DIR\/LibreOffice_7.6.7.2_Linux_x86-64_rpm&quot;\n        log_success &quot;\u6e05\u7406\u5b89\u88c5\u76ee\u5f55\u5b8c\u6210&quot;\n    fi\n}\n\n# \u4e3b\u5b89\u88c5\u51fd\u6570\nmain_installation() {\n    log_info &quot;\u5f00\u59cbLibreOffice\u5b8c\u6574\u5b89\u88c5\u6d41\u7a0b...&quot;\n    \n    # \u68c0\u67e5root\u6743\u9650\n    check_root\n    #\u68c0\u67e5\u662f\u5426\u5b58\u5728Jdk\n    check_jdk\n\n    # \u521b\u5efa\u65e5\u5fd7\u76ee\u5f55\n    mkdir -p $(dirname &quot;$LOG_FILE&quot;)\n    \n    # \u5b89\u88c5\u7cfb\u7edf\u4f9d\u8d56\n    install_dependencies\n    \n    # \u5b89\u88c5LibreOffice\u4e3b\u7a0b\u5e8f\n    install_libreoffice_main\n    \n    # \u5b89\u88c5\u5b57\u4f53\n    install_and_verify_fonts\n    \n    # \u914d\u7f6e\u73af\u5883\u53d8\u91cf\n    setup_environment\n    \n    # \u663e\u793a\u5b89\u88c5\u4fe1\u606f\n    show_installation_info\n\n    # \u6d4b\u8bd5\u5b89\u88c5\n    test_installation\n    \n    # \u6e05\u7406\u5b89\u88c5\u6587\u4ef6\n    cleanup_installation\n\n    log_success &quot;LibreOffice\u5b89\u88c5\u5b8c\u6210\uff01&quot;\n}\n\n# \u811a\u672c\u4f7f\u7528\u8bf4\u660e\nusage() {\n    echo &quot;\u7528\u6cd5: $0 [\u9009\u9879]&quot;\n    echo &quot;\u9009\u9879:&quot;\n    echo &quot;  -h, --help    \u663e\u793a\u5e2e\u52a9\u4fe1\u606f&quot;\n    echo &quot;  -t, --test    \u4ec5\u6d4b\u8bd5\u5b89\u88c5\u662f\u5426\u6210\u529f\uff0c\u4e0d\u8fdb\u884c\u5b89\u88c5&quot;\n    echo &quot;  -f, --fonts   \u4ec5\u5b89\u88c5\u5b57\u4f53&quot;\n    echo &quot;  -c, --clean   \u6e05\u7406\u5b89\u88c5\u6587\u4ef6&quot;\n    echo\n    echo &quot;\u793a\u4f8b:&quot;\n    echo &quot; bash $0             # \u5b8c\u6574\u5b89\u88c5&quot;\n    echo &quot; bash $0 --test      # \u4ec5\u6d4b\u8bd5&quot;\n    echo &quot; bash $0 --fonts     # \u4ec5\u5b89\u88c5\u5b57\u4f53&quot;\n    echo &quot; bash $0 --clean     # \u6e05\u7406\u5b89\u88c5\u6587\u4ef6&quot;\n    echo\n    echo &quot;\u6587\u4ef6\u4f4d\u7f6e:&quot;\n    echo &quot;  \u8d44\u6e90\u76ee\u5f55: $RESOURCES_DIR&quot;\n    echo &quot;  \u5b89\u88c5\u5305: $LIBREOFFICE_ARCHIVE&quot;\n    echo &quot;  \u5b57\u4f53\u5305: $FONTS_ZIP&quot;\n    echo &quot;  \u811a\u672c\u4f4d\u7f6e: \/data\/scripts\/install_libreoffice.sh&quot;\n}\n\n# \u6e05\u7406\u51fd\u6570\ncleanup_files() {\n    log_info &quot;\u5f00\u59cb\u6e05\u7406\u5b89\u88c5\u6587\u4ef6...&quot;\n    \n    if [[ -d &quot;$RESOURCES_DIR\/LibreOffice_7.6.7.2_Linux_x86-64_rpm&quot; ]]; then\n        rm -rf &quot;$RESOURCES_DIR\/LibreOffice_7.6.7.2_Linux_x86-64_rpm&quot;\n        log_success &quot;\u5df2\u6e05\u7406\u5b89\u88c5\u76ee\u5f55&quot;\n    else\n        log_info &quot;\u672a\u627e\u5230\u9700\u8981\u6e05\u7406\u7684\u5b89\u88c5\u76ee\u5f55&quot;\n    fi\n}\n\n# \u53c2\u6570\u5904\u7406\ncase &quot;$1&quot; in\n    -h|--help)\n        usage\n        exit 0\n        ;;\n    -t|--test)\n        log_info &quot;\u5f00\u59cb\u6d4b\u8bd5LibreOffice\u5b89\u88c5...&quot;\n        test_installation\n        exit 0\n        ;;\n    -f|--fonts)\n        log_info &quot;\u5f00\u59cb\u5b89\u88c5\u5b57\u4f53...&quot;\n        check_root\n        install_and_verify_fonts\n        test_installation\n        exit 0\n        ;;\n    -c|--clean)\n        log_info &quot;\u5f00\u59cb\u6e05\u7406\u5b89\u88c5\u6587\u4ef6...&quot;\n        check_root\n        cleanup_files\n        exit 0\n        ;;\n    &quot;&quot;)\n        main_installation\n        ;;\n    *)\n        log_error &quot;\u672a\u77e5\u53c2\u6570: $1&quot;\n        usage\n        exit 1\n        ;;\nesac\n\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fc48a39 elementor-widget elementor-widget-heading\" data-id=\"fc48a39\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%E6%AF%8F%E9%9A%9430%E5%88%86%E9%92%9F%E7%9B%91%E6%8E%A7docker%E5%8D%A0%E7%94%A8%E8%B5%84%E6%BA%90\"><\/span>\u5b9a\u65f6\u4efb\u52a1\u6bcf\u969430\u5206\u949f\u76d1\u63a7docker\u5360\u7528\u8d44\u6e90<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-28ad5a8 elementor-widget elementor-widget-shortcode\" data-id=\"28ad5a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">\u7edf\u8ba1docker\u5360\u7528\u8d44\u6e90.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/\u7edf\u8ba1docker\u5360\u7528\u8d44\u6e90.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n\n# Docker\u5bb9\u5668\u8d44\u6e90\u7edf\u8ba1\u811a\u672c\n# \u4f5c\u8005\uff1azp\n# \u521b\u5efa\u65f6\u95f4\uff1a$(date +&quot;%Y-%m-%d %H:%M:%S&quot;)\n\n# \u914d\u7f6e\u53c2\u6570\nLOG_DIR=&quot;\/var\/log\/dockerxunjian_zp&quot;\nCURRENT_DATE=$(date +&quot;%Y-%m-%d&quot;)\nTIMESTAMP=$(date +&quot;%H:%M:%S&quot;)\nLOG_FILE=&quot;${LOG_DIR}\/${CURRENT_DATE}_docker_stats.txt&quot;\n\n# \u521b\u5efa\u65e5\u5fd7\u76ee\u5f55\uff08\u5982\u679c\u4e0d\u5b58\u5728\uff09\nmkdir -p &quot;$LOG_DIR&quot;\n\n# \u51fd\u6570\uff1a\u68c0\u67e5Docker\u662f\u5426\u8fd0\u884c\ncheck_docker() {\n    if ! systemctl is-active --quiet docker; then\n        echo &quot;\u9519\u8bef\uff1aDocker\u670d\u52a1\u672a\u8fd0\u884c&quot;\n        exit 1\n    fi\n}\n\n# \u51fd\u6570\uff1a\u751f\u6210\u5206\u9694\u7b26\ngenerate_separator() {\n    echo &quot;&quot;\n    echo &quot;################################################################################&quot;\n    echo &quot;#                           \u7b2c $1 \u6b21\u5de1\u68c0 - $TIMESTAMP                            &quot;\n    echo &quot;################################################################################&quot;\n    echo &quot;&quot;\n}\n\n# \u51fd\u6570\uff1a\u83b7\u53d6\u7cfb\u7edf\u4fe1\u606f\nget_system_info() {\n    echo &quot;==================== \u7cfb\u7edf\u4fe1\u606f ====================&quot;\n    echo &quot;\u7edf\u8ba1\u65f6\u95f4\uff1a$CURRENT_DATE $TIMESTAMP&quot;\n    echo &quot;\u4e3b\u673a\u540d\uff1a$(hostname)&quot;\n    echo &quot;\u64cd\u4f5c\u7cfb\u7edf\uff1a$(cat \/etc\/os-release | grep &quot;PRETTY_NAME&quot; | cut -d&#039;&quot;&#039; -f2)&quot;\n    echo &quot;\u5185\u6838\u7248\u672c\uff1a$(uname -r)&quot;\n    echo &quot;\u7cfb\u7edf\u8fd0\u884c\u65f6\u95f4\uff1a$(uptime -p)&quot;\n    echo &quot;&quot;\n}\n\n# \u51fd\u6570\uff1a\u83b7\u53d6Docker\u4fe1\u606f\nget_docker_info() {\n    echo &quot;==================== Docker\u4fe1\u606f ====================&quot;\n    echo &quot;Docker\u7248\u672c\uff1a$(docker --version 2&gt;\/dev\/null | cut -d&#039; &#039; -f3 | cut -d&#039;,&#039; -f1)&quot;\n    echo &quot;\u5bb9\u5668\u6570\u91cf\uff1a$(docker ps -q | wc -l) \u4e2a\u8fd0\u884c\u4e2d&quot;\n    echo &quot;\u603b\u5bb9\u5668\u6570\u91cf\uff1a$(docker ps -a -q | wc -l) \u4e2a\uff08\u5305\u62ec\u505c\u6b62\u7684\uff09&quot;\n    echo &quot;&quot;\n}\n\n# \u51fd\u6570\uff1a\u83b7\u53d6\u7cfb\u7edf\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5\nget_system_resources() {\n    echo &quot;==================== \u7cfb\u7edf\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5 ====================&quot;\n    \n    # \u5185\u5b58\u4f7f\u7528\u60c5\u51b5\n    total_mem=$(free -h | grep Mem | awk &#039;{print $2}&#039;)\n    used_mem=$(free -h | grep Mem | awk &#039;{print $3}&#039;)\n    free_mem=$(free -h | grep Mem | awk &#039;{print $4}&#039;)\n    mem_usage=$(free | grep Mem | awk &#039;{printf &quot;%.2f&quot;, $3\/$2 * 100}&#039;)\n    \n    echo &quot;\u5185\u5b58\u4f7f\u7528\uff1a$used_mem \/ $total_mem (\u4f7f\u7528\u7387: ${mem_usage}%)&quot;\n    \n    # CPU\u4f7f\u7528\u60c5\u51b5\uff081\u79d2\u5185\u7684\u5e73\u5747\u503c\uff09\n    cpu_usage=$(top -bn1 | grep &quot;Cpu(s)&quot; | sed &quot;s\/.*, *\\([0-9.]*\\)%* id.*\/\\1\/&quot; | awk &#039;{print 100 - $1}&#039;)\n    echo &quot;CPU\u4f7f\u7528\u7387\uff1a${cpu_usage}%&quot;\n    \n    # \u78c1\u76d8\u4f7f\u7528\u60c5\u51b5\uff08\u6839\u76ee\u5f55\uff09\n    disk_usage=$(df -h \/ | awk &#039;NR==2 {print $5}&#039;)\n    disk_total=$(df -h \/ | awk &#039;NR==2 {print $2}&#039;)\n    disk_used=$(df -h \/ | awk &#039;NR==2 {print $3}&#039;)\n    echo &quot;\u6839\u76ee\u5f55\u78c1\u76d8\u4f7f\u7528\uff1a$disk_used \/ $disk_total (\u4f7f\u7528\u7387: $disk_usage)&quot;\n    \n    echo &quot;&quot;\n}\n\n# \u51fd\u6570\uff1a\u83b7\u53d6\u5bb9\u5668\u8be6\u7ec6\u8d44\u6e90\u4f7f\u7528\u60c5\u51b5\nget_container_stats() {\n    echo &quot;==================== \u5bb9\u5668\u8d44\u6e90\u4f7f\u7528\u8be6\u60c5 ====================&quot;\n    \n    # \u68c0\u67e5\u662f\u5426\u6709\u8fd0\u884c\u7684\u5bb9\u5668\n    running_containers=$(docker ps -q)\n    if [ -z &quot;$running_containers&quot; ]; then\n        echo &quot;\u5f53\u524d\u6ca1\u6709\u8fd0\u884c\u7684\u5bb9\u5668&quot;\n        echo &quot;&quot;\n        return\n    fi\n    \n    # \u4f7f\u7528docker stats\u547d\u4ee4\u83b7\u53d6\u5b9e\u65f6\u6570\u636e\uff08\u53ea\u83b7\u53d6\u4e00\u6b21\uff09\n    echo &quot;\u5bb9\u5668\u540d\u79f0          CPU\u4f7f\u7528\u7387   \u5185\u5b58\u4f7f\u7528\/\u9650\u5236    \u5185\u5b58\u4f7f\u7528\u7387   \u7f51\u7edcI\/O         \u5757\u8bbe\u5907I\/O      \u5bb9\u5668ID&quot;\n    echo &quot;--------------------------------------------------------------------------------------------------------&quot;\n    \n    docker stats --no-stream --format &quot;table {{.Name}}\\t{{.CPUPerc}}\\t{{.MemUsage}}\\t{{.MemPerc}}\\t{{.NetIO}}\\t{{.BlockIO}}\\t{{.Container}}&quot; | tail -n +2\n    \n    echo &quot;&quot;\n}\n\n# \u51fd\u6570\uff1a\u83b7\u53d6\u5bb9\u5668\u5b58\u50a8\u4f7f\u7528\u60c5\u51b5\nget_container_storage() {\n    echo &quot;==================== \u5bb9\u5668\u5b58\u50a8\u4f7f\u7528\u60c5\u51b5 ====================&quot;\n    \n    # \u83b7\u53d6\u6240\u6709\u5bb9\u5668\uff08\u5305\u62ec\u505c\u6b62\u7684\uff09\n    all_containers=$(docker ps -a --format &quot;{{.Names}}&quot;)\n    \n    if [ -z &quot;$all_containers&quot; ]; then\n        echo &quot;\u6ca1\u6709\u627e\u5230\u4efb\u4f55\u5bb9\u5668&quot;\n        echo &quot;&quot;\n        return\n    fi\n    \n    for container in $all_containers; do\n        # \u83b7\u53d6\u5bb9\u5668\u5927\u5c0f\n        container_size=$(docker ps -a --filter &quot;name=$container&quot; --format &quot;{{.Size}}&quot; 2&gt;\/dev\/null)\n        if [ $? -eq 0 ] &amp;&amp; [ ! -z &quot;$container_size&quot; ]; then\n            # \u83b7\u53d6\u5bb9\u5668\u72b6\u6001\n            container_status=$(docker inspect --format=&#039;{{.State.Status}}&#039; &quot;$container&quot; 2&gt;\/dev\/null)\n            if [ $? -eq 0 ]; then\n                echo &quot;\u5bb9\u5668: $container (\u72b6\u6001: $container_status) - \u5927\u5c0f: $container_size&quot;\n            else\n                echo &quot;\u5bb9\u5668: $container - \u5927\u5c0f: $container_size&quot;\n            fi\n        fi\n    done\n    \n    echo &quot;&quot;\n}\n\n# \u51fd\u6570\uff1a\u83b7\u53d6\u955c\u50cf\u5b58\u50a8\u60c5\u51b5\nget_image_storage() {\n    echo &quot;==================== Docker\u955c\u50cf\u5b58\u50a8\u60c5\u51b5 ====================&quot;\n    \n    # \u955c\u50cf\u603b\u5927\u5c0f\n    image_total_size=$(docker system df -v 2&gt;\/dev\/null | grep &quot;Images&quot; | awk &#039;{print $4}&#039;)\n    if [ ! -z &quot;$image_total_size&quot; ]; then\n        echo &quot;\u955c\u50cf\u603b\u5360\u7528\u7a7a\u95f4: $image_total_size&quot;\n    fi\n    \n    # \u663e\u793a\u524d5\u4e2a\u6700\u5927\u7684\u955c\u50cf\n    echo &quot;&quot;\n    echo &quot;\u524d5\u4e2a\u6700\u5927\u7684\u955c\u50cf\uff1a&quot;\n    docker images --format &quot;table {{.Repository}}\\t{{.Tag}}\\t{{.Size}}&quot; | head -6\n    echo &quot;&quot;\n}\n\n# \u51fd\u6570\uff1a\u83b7\u53d6\u5de1\u68c0\u6b21\u6570\nget_inspection_count() {\n    local log_file=&quot;$1&quot;\n    if [ -f &quot;$log_file&quot; ]; then\n        # \u7edf\u8ba1\u6587\u4ef6\u4e2d\u5df2\u6709\u7684\u5de1\u68c0\u6b21\u6570\n        count=$(grep -c &quot;\u7b2c.*\u6b21\u5de1\u68c0&quot; &quot;$log_file&quot; 2&gt;\/dev\/null || echo 0)\n        echo $((count + 1))\n    else\n        echo 1\n    fi\n}\n\n# \u4e3b\u51fd\u6570\nmain() {\n    # \u68c0\u67e5Docker\u670d\u52a1\u72b6\u6001\n    check_docker\n    \n    # \u83b7\u53d6\u5f53\u524d\u5de1\u68c0\u6b21\u6570\n    inspection_count=$(get_inspection_count &quot;$LOG_FILE&quot;)\n    \n    # \u8ffd\u52a0\u5185\u5bb9\u5230\u65e5\u5fd7\u6587\u4ef6\n    {\n        # \u5982\u679c\u662f\u7b2c\u4e00\u6b21\u5de1\u68c0\uff0c\u6dfb\u52a0\u6587\u4ef6\u5934\n        if [ &quot;$inspection_count&quot; -eq 1 ]; then\n            echo &quot;Docker\u5bb9\u5668\u8d44\u6e90\u6bcf\u65e5\u7edf\u8ba1\u62a5\u544a&quot;\n            echo &quot;\u7edf\u8ba1\u65e5\u671f\uff1a$CURRENT_DATE&quot;\n            echo &quot;\u65e5\u5fd7\u6587\u4ef6\uff1a$LOG_FILE&quot;\n            echo &quot;\u5de1\u68c0\u9891\u7387\uff1a\u6bcf30\u5206\u949f\u4e00\u6b21\uff08\u6bcf\u65e548\u6b21\uff09&quot;\n            echo &quot;==================================================================================&quot;\n            echo &quot;&quot;\n        fi\n        \n        # \u751f\u6210\u5de1\u68c0\u5206\u9694\u7b26\n        generate_separator &quot;$inspection_count&quot;\n        \n        # \u83b7\u53d6\u5404\u9879\u4fe1\u606f\n        get_system_info\n        get_docker_info\n        get_system_resources\n        get_container_stats\n        get_container_storage\n        get_image_storage\n        \n        echo &quot;\u672c\u6b21\u5de1\u68c0\u7ed3\u675f\u65f6\u95f4\uff1a$(date +&quot;%H:%M:%S&quot;)&quot;\n        \n    } &gt;&gt; &quot;$LOG_FILE&quot;\n    \n    # \u8bbe\u7f6e\u6b63\u786e\u7684\u6587\u4ef6\u6743\u9650\n    chmod 644 &quot;$LOG_FILE&quot;\n    \n    echo &quot;\u7b2c $inspection_count \u6b21\u5de1\u68c0\u5b8c\u6210\uff01\u7ed3\u679c\u5df2\u8ffd\u52a0\u5230: $LOG_FILE&quot;\n}\n\n# \u811a\u672c\u6267\u884c\nmain &quot;$@&quot;\n\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f02e117 elementor-widget elementor-widget-heading\" data-id=\"f02e117\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%94%B6%E9%9B%86%E7%B3%BB%E7%BB%9F%E6%88%96%E6%9C%8D%E5%8A%A1%E8%BD%AF%E4%BB%B6%E6%97%A5%E5%BF%97%E5%B9%B6%E4%BF%9D%E5%AD%98%E5%88%B0%E5%88%B0tmp\"><\/span>\u6536\u96c6\u7cfb\u7edf\u6216\u670d\u52a1\u8f6f\u4ef6\u65e5\u5fd7\u5e76\u4fdd\u5b58\u5230\u5230\/tmp<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3899c4f elementor-widget elementor-widget-shortcode\" data-id=\"3899c4f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">\u6536\u96c6\u7cfb\u7edf\u6216\u670d\u52a1\u8f6f\u4ef6\u65e5\u5fd7.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/\u6536\u96c6\u7cfb\u7edf\u6216\u670d\u52a1\u8f6f\u4ef6\u65e5\u5fd7.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n\nTARGET_DIR=&quot;\/tmp\/logs_$(date +&quot;%Y%m%d_%H%M%S&quot;)&quot;\n\nmkdir -p &quot;$TARGET_DIR&quot;\n\necho &quot;\u5f00\u59cb\u6536\u96c6\u7cfb\u7edf\u65e5\u5fd7\u548c\u670d\u52a1\u65e5\u5fd7...&quot;\n\n# 1. \u6536\u96c6\u7cfb\u7edf\u65e5\u5fd7\u76ee\u5f55\necho &quot;\u6536\u96c6\u7cfb\u7edf\u65e5\u5fd7...&quot;\ncp -r \/var\/log\/* &quot;$TARGET_DIR\/&quot; 2&gt;\/dev\/null\n\n# 2. \u6536\u96c6journalctl\u7cfb\u7edf\u65e5\u5fd7\necho &quot;\u6536\u96c6journalctl\u65e5\u5fd7...&quot;\njournalctl --since=&quot;1 week ago&quot; &gt; &quot;$TARGET_DIR\/journalctl_full.log&quot;\njournalctl -k &gt; &quot;$TARGET_DIR\/kernel.log&quot;\njournalctl -u docker &gt; &quot;$TARGET_DIR\/docker_service.log&quot;\n\n# 3. \u6536\u96c6\u7cfb\u7edf\u4fe1\u606f\necho &quot;\u6536\u96c6\u7cfb\u7edf\u4fe1\u606f...&quot;\ndmesg &gt; &quot;$TARGET_DIR\/dmesg.log&quot;\ncat \/proc\/meminfo &gt; &quot;$TARGET_DIR\/meminfo.log&quot;\ncat \/proc\/cpuinfo &gt; &quot;$TARGET_DIR\/cpuinfo.log&quot;\nfree -h &gt; &quot;$TARGET_DIR\/memory_usage.log&quot;\ndf -h &gt; &quot;$TARGET_DIR\/disk_usage.log&quot;\ntop -b -n 1 &gt; &quot;$TARGET_DIR\/top_snapshot.log&quot;\n\n# 4. \u6536\u96c6\u670d\u52a1\u72b6\u6001\necho &quot;\u6536\u96c6\u670d\u52a1\u72b6\u6001...&quot;\nsystemctl status &gt; &quot;$TARGET_DIR\/systemd_status.log&quot;\nsystemctl list-units --failed &gt; &quot;$TARGET_DIR\/failed_services.log&quot;\nsystemctl list-units --all &gt; &quot;$TARGET_DIR\/all_services.log&quot;\n\n# 5. \u6536\u96c6Docker\u76f8\u5173\u65e5\u5fd7\necho &quot;\u6536\u96c6Docker\u65e5\u5fd7...&quot;\ndocker logs es &gt; &quot;$TARGET_DIR\/docker_es.log&quot; 2&gt;\/dev\/null\ndocker logs mysql_backup &gt; &quot;$TARGET_DIR\/docker_mysql_backup.log&quot; 2&gt;\/dev\/null\ndocker logs mysql_backup_2 &gt; &quot;$TARGET_DIR\/docker_mysql_backup_2.log&quot; 2&gt;\/dev\/null\ndocker logs postgres_backup &gt; &quot;$TARGET_DIR\/docker_postgres_backup.log&quot; 2&gt;\/dev\/null\ndocker logs minio-backup &gt; &quot;$TARGET_DIR\/docker_minio_backup.log&quot; 2&gt;\/dev\/null\ndocker logs minio-backup-108 &gt; &quot;$TARGET_DIR\/docker_minio_backup_108.log&quot; 2&gt;\/dev\/null\ndocker logs influxdb-backup &gt; &quot;$TARGET_DIR\/docker_influxdb_backup.log&quot; 2&gt;\/dev\/null\ndocker logs es_snapshot_sync &gt; &quot;$TARGET_DIR\/docker_es_snapshot_sync.log&quot; 2&gt;\/dev\/null\n\ndocker ps -a &gt; &quot;$TARGET_DIR\/docker_ps.log&quot;\ndocker stats --no-stream &gt; &quot;$TARGET_DIR\/docker_stats.log&quot;\n\n# 6. \u6536\u96c6\u8fdb\u7a0b\u4fe1\u606f\necho &quot;\u6536\u96c6\u8fdb\u7a0b\u4fe1\u606f...&quot;\nps aux &gt; &quot;$TARGET_DIR\/processes.log&quot;\nps aux --sort=-%mem | head -20 &gt; &quot;$TARGET_DIR\/top_memory_processes.log&quot;\nps aux --sort=-%cpu | head -20 &gt; &quot;$TARGET_DIR\/top_cpu_processes.log&quot;\n\n# 7. \u6536\u96c6\u7f51\u7edc\u4fe1\u606f\necho &quot;\u6536\u96c6\u7f51\u7edc\u4fe1\u606f...&quot;\nss -tulnp &gt; &quot;$TARGET_DIR\/network_connections.log&quot;\nnetstat -s &gt; &quot;$TARGET_DIR\/network_stats.log&quot;\nip addr show &gt; &quot;$TARGET_DIR\/network_interfaces.log&quot;\n\n# 8. \u6536\u96c6\u786c\u4ef6\u4fe1\u606f\necho &quot;\u6536\u96c6\u786c\u4ef6\u4fe1\u606f...&quot;\nlscpu &gt; &quot;$TARGET_DIR\/cpu_details.log&quot;\nlsblk &gt; &quot;$TARGET_DIR\/block_devices.log&quot;\nlspci &gt; &quot;$TARGET_DIR\/pci_devices.log&quot;\n\n# 9. \u6536\u96c6\u7cfb\u7edf\u914d\u7f6e\necho &quot;\u6536\u96c6\u7cfb\u7edf\u914d\u7f6e...&quot;\nsysctl -a &gt; &quot;$TARGET_DIR\/sysctl.conf&quot; 2&gt;\/dev\/null\ncat \/etc\/systemd\/system.conf &gt; &quot;$TARGET_DIR\/systemd_system.conf&quot; 2&gt;\/dev\/null\ncat \/etc\/security\/limits.conf &gt; &quot;$TARGET_DIR\/limits.conf&quot; 2&gt;\/dev\/null\n\n# 10. \u6536\u96c6\u5185\u6838\u65e5\u5fd7\necho &quot;\u6536\u96c6\u5185\u6838\u65e5\u5fd7...&quot;\ndmesg -T &gt; &quot;$TARGET_DIR\/dmesg_timestamp.log&quot;\ncat \/var\/log\/dmesg &gt; &quot;$TARGET_DIR\/dmesg_old.log&quot; 2&gt;\/dev\/null\n\n# 11. \u6536\u96c6Elasticsearch\u7279\u5b9a\u65e5\u5fd7\uff08\u4ece\u5bb9\u5668\u5185\uff09\necho &quot;\u6536\u96c6Elasticsearch\u8be6\u7ec6\u65e5\u5fd7...&quot;\ndocker exec es cat \/usr\/share\/elasticsearch\/logs\/gc.log &gt; &quot;$TARGET_DIR\/es_gc.log&quot; 2&gt;\/dev\/null\ndocker exec es cat \/usr\/share\/elasticsearch\/logs\/elasticsearch.log &gt; &quot;$TARGET_DIR\/es_main.log&quot; 2&gt;\/dev\/null\n\n# 12. \u6536\u96c6\u5907\u4efd\u5e94\u7528\u65e5\u5fd7\necho &quot;\u6536\u96c6\u5907\u4efd\u5e94\u7528\u65e5\u5fd7...&quot;\nfind \/data\/backup -name &quot;*.log&quot; -exec cp {} &quot;$TARGET_DIR\/&quot; \\; 2&gt;\/dev\/null\n\n# 13. \u6536\u96c6Docker\u5bb9\u5668\u65e5\u5fd7\u6587\u4ef6\necho &quot;\u6536\u96c6Docker\u5bb9\u5668\u65e5\u5fd7\u6587\u4ef6...&quot;\nfind \/var\/lib\/docker\/containers -name &quot;*.log&quot; -exec cp {} &quot;$TARGET_DIR\/&quot; \\; 2&gt;\/dev\/null\n\n# 14. \u521b\u5efa\u65e5\u5fd7\u7d22\u5f15\u6587\u4ef6\necho &quot;\u521b\u5efa\u65e5\u5fd7\u7d22\u5f15...&quot;\nls -la &quot;$TARGET_DIR\/&quot; &gt; &quot;$TARGET_DIR\/log_index.txt&quot;\n\necho &quot;========================================&quot;\necho &quot;\u65e5\u5fd7\u6536\u96c6\u5b8c\u6210\uff01&quot;\necho &quot;\u76ee\u6807\u76ee\u5f55: $TARGET_DIR&quot;\necho &quot;\u6536\u96c6\u7684\u65e5\u5fd7\u6587\u4ef6\u6570\u91cf: $(ls &quot;$TARGET_DIR&quot; | wc -l)&quot;\necho &quot;\u603b\u5927\u5c0f: $(du -sh &quot;$TARGET_DIR&quot;)&quot;\necho &quot;========================================&quot;\n\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f7f3a0c elementor-widget elementor-widget-heading\" data-id=\"f7f3a0c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%89%B9%E9%87%8F%E5%AF%BC%E5%87%BAdocker%E9%95%9C%E5%83%8F\"><\/span>\u6279\u91cf\u5bfc\u51fadocker\u955c\u50cf<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b37d4bd elementor-widget elementor-widget-shortcode\" data-id=\"b37d4bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">save_scripts.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/save_scripts.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n#desc: \u6279\u91cf\u5bfc\u51fadocker\u955c\u50cf\ndocker images |awk &#039;NR&gt;1{print $1&quot;:&quot;$2}&#039; &gt;\/root\/images.txt\nfor name in `cat \/root\/images.txt`\ndo\n  name_new=`echo $name |sed -r &#039;s#:|\/#_#g&#039; `\n  docker save  ${name} -o ${name_new}.tar\ndone\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5c3e1b1 elementor-widget elementor-widget-heading\" data-id=\"5c3e1b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A3%80%E6%9F%A5%E6%8C%87%E5%AE%9A%E5%9F%9F%E5%90%8D%EF%BC%881%EF%BC%89%E7%9A%84https%E8%AF%81%E4%B9%A6%E8%BF%87%E6%9C%9F%E6%97%B6%E9%97%B4\"><\/span>\u68c0\u67e5\u6307\u5b9a\u57df\u540d\uff08$1\uff09\u7684https\u8bc1\u4e66\u8fc7\u671f\u65f6\u95f4<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-13e2a47 elementor-widget elementor-widget-shortcode\" data-id=\"13e2a47\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">check_https.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/check_https.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#\uff01\/bin\/bash\n#desc \u68c0\u67e5\u6307\u5b9a\u7684\u57df\u540d\u7684https\u8bc1\u4e66\u662f\u5426\u8fc7\u671f\n#1.vars\nexport LANG=en_US.UTF-8\nurl=https:\/\/$1\nwarn=3000\n#2.curl \u83b7\u53d6\u65e5\u671f\nexpire_date_ori=`curl -v $url  |&amp; grep &#039;expire date&#039; | awk &#039;{print $4,$5,$(NF-1)}&#039;`\nexpire_date_second=`date -d &quot;${expire_date_ori}&quot;  +%s`\nnow_date_second=`date  +%s `\n#3.\u8ba1\u7b97\ndays_left=`echo &quot;($expire_date_second - $now_date_second)\/60\/60\/24&quot; |bc`\n#4.\u5224\u65ad\nif [ $days_left -le $warn ];then\n  echo &quot;https\u8bc1\u4e66$url,\u8fd8\u6709$days_left\u8fc7\u671f,\u8bf7\u53ca\u65f6\u7eed\u8d39&quot;\nfi\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-06345b5 elementor-widget elementor-widget-heading\" data-id=\"06345b5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E5%B0%86%E9%A1%B9%E7%9B%AE%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%89%80%E6%9C%89%E4%BB%A3%E7%A0%81%E6%95%B4%E5%90%88%E5%88%B0%E4%B8%80%E8%B5%B7%E4%BB%A5%E4%BE%BF%E4%BA%8E%E4%BA%A4%E7%BB%99ai%E5%88%86%E6%9E%90\"><\/span>\u5c06\u9879\u76ee\u76ee\u5f55\u4e2d\u6240\u6709\u4ee3\u7801\u6574\u5408\u5230\u4e00\u8d77\u4ee5\u4fbf\u4e8e\u4ea4\u7ed9ai\u5206\u6790<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-141f804 elementor-widget elementor-widget-shortcode\" data-id=\"141f804\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">get_codes.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/get_codes.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n\n# \u9879\u76ee\u76ee\u5f55\ncode_src_dir=.\/app-67l8bp1zso3l_app_version-67l8bp1zso3k\/\n# \u8f93\u51fa\u4ee3\u7801\u5185\u5bb9\u6587\u4ef6\ncode_dest=&quot;code_dest.txt&quot;\n# \u65e5\u5fd7\u6587\u4ef6\nLOG_FILE=&quot;logs\/download.log&quot;\n\n# \u521b\u5efa\u65e5\u5fd7\u76ee\u5f55\uff08\u5982\u679c\u4e0d\u5b58\u5728\uff09\nmkdir -p &quot;$(dirname &quot;$LOG_FILE&quot;)&quot;\n\n# \u6e05\u7a7a\u4ee3\u7801\u5185\u5bb9\u6587\u4ef6\n&gt; &quot;$code_dest&quot;\n\n# \u8bb0\u5f55\u5f00\u59cb\u65f6\u95f4\necho &quot;\u811a\u672c\u8fd0\u884c\u5f00\u59cb\u65f6\u95f4: $(date)&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;==========================================&quot; | tee -a &quot;$LOG_FILE&quot;\n\n\n# \u5b9a\u4e49\u4e00\u4e2a\u6570\u7ec4code_src_name\u4fdd\u5b58\u9879\u76ee\u76ee\u5f55\u4e2d\u7684\u6240\u6709\u6587\u4ef6\u540d\uff08\u6392\u9664\u76ee\u5f55\u672c\u8eab\uff09\uff0c\u5360\u7528\u5185\u5b58\u9ad8\uff0c\u5fc5\u987bbashv4.0+\nmapfile -t code_src_name &lt; &lt;(find &quot;$code_src_dir&quot; -type f)\n\n# \u7edf\u8ba1\u6587\u4ef6\u6570\u91cf\uff1a\u6570\u7ec4\u524d\u52a0#\nfile_count=${#code_src_name[@]}\necho &quot;\u627e\u5230 $file_count \u4e2a\u6587\u4ef6&quot; | tee -a &quot;$LOG_FILE&quot;\n\n# \u904d\u5386\u6570\u7ec4\u5904\u7406\u6587\u4ef6\nfor file_path in &quot;${code_src_name[@]}&quot;; do\n\techo &quot;\u5904\u7406: $file_path&quot; | tee -a &quot;$LOG_FILE&quot;\n\n    # \u5199\u5165\u5230\u76ee\u6807\u6587\u4ef6\n    {\n    \techo &quot;========================================&quot;\n    \techo &quot;\u6587\u4ef6\u540d: $file_path&quot;\n    \techo &quot;========================================&quot;\n    \t[[ -r &quot;$file_path&quot; ]] &amp;&amp; cat &quot;$file_path&quot; || echo &quot;\u65e0\u6cd5\u8bfb\u53d6\u6587\u4ef6&quot;\n    \techo -e &quot;\\n&quot;\n    } &gt;&gt; &quot;$code_dest&quot;\ndone\n\n\n\n#\u53e6\u4e00\u79cd\u5e38\u7528\u7684\u8bfb\u53d6\u6587\u4ef6\u6216\u811a\u672c\u6267\u884c\u7ed3\u679c\u4e2d\u7684\u5185\u5bb9\u7684\u65b9\u6cd5\n# \u4f7f\u7528 while read \u5faa\u73af - \u66f4\u9ad8\u6548\u4e14\u5b89\u5168\uff0c\u5185\u5b58\u5360\u7528\u4f4e\uff0c\u9002\u7528\u4e8e\u9700\u8981\u5904\u7406\u7684\u6587\u4ef6\u6bd4\u8f83\u591a\u7684\u60c5\u51b5\n# \u521d\u59cb\u5316\u8ba1\u6570\u5668\n#  file_count=0\n#  while IFS= read -r -d &#039;&#039; file_path; do\n#  #read -d &#039;&#039;\uff1a\u8bfb\u53d6\u76f4\u5230 null \u5b57\u7b26\uff0c\u800c\u4e0d\u662f\u6362\u884c\u7b26\n#     # \u68c0\u67e5\u662f\u5426\u4e3a\u666e\u901a\u6587\u4ef6\u4e14\u53ef\u8bfb\n#      if [[ -f &quot;$file_path&quot; &amp;&amp; -r &quot;$file_path&quot; ]]; then\n#          echo &quot;\u5904\u7406: $file_path&quot; | tee -a &quot;$LOG_FILE&quot;\n#          echo &quot;\u5904\u7406\u6587\u4ef6: $file_path&quot;\n#          \n#          # \u5199\u5165\u6587\u4ef6\u4fe1\u606f\n#          {\n#              echo &quot;========================&quot;\n#              echo &quot;FILE: $file_path&quot;\n#              echo &quot;========================&quot;\n#              cat &quot;$file_path&quot;\n#              echo -e &quot;\\n&quot;\n#          } &gt;&gt; &quot;$code_dest&quot;\n#          # \u6210\u529f\u5904\u7406\u6587\u4ef6\uff0c\u8ba1\u6570\u5668\u52a01\n#          ((file_count++))\n#      else\n#          echo &quot;\u8df3\u8fc7\u6587\u4ef6\uff08\u4e0d\u53ef\u8bfb\u6216\u975e\u666e\u901a\u6587\u4ef6\uff09: $file_path&quot; &gt;&amp;2\n#      fi\n#  done &lt; &lt;(find &quot;$code_src_dir&quot; -type f -print0)\n#\n## \u4f7f\u7528 -print0 \u5904\u7406\u5305\u542b\u7279\u6b8a\u5b57\u7b26\u7684\u6587\u4ef6\u540d\n#find -print0\uff1a\u7528 null \u5b57\u7b26\uff08\\0\uff09\u5206\u9694\u6587\u4ef6\u540d\uff0c\u800c\u4e0d\u662f\u6362\u884c\u7b26\n#echo &quot;\u5b8c\u6210\uff01\u7ed3\u679c\u5df2\u4fdd\u5b58\u5230 $code_dest\uff1b\u65e5\u5fd7\u6587\u4ef6\u4fdd\u5b58\u5728$LOG_FILE &quot;\n\n\n\n# \u8bb0\u5f55\u7ed3\u675f\u65f6\u95f4\necho &quot;==========================================&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;\u811a\u672c\u8fd0\u884c\u7ed3\u675f\u65f6\u95f4: $(date)&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;\u603b\u5171\u5904\u7406\u4e86 $file_count \u4e2a\u6587\u4ef6&quot; | tee -a &quot;$LOG_FILE&quot;<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-94bb27a elementor-widget elementor-widget-heading\" data-id=\"94bb27a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E4%BB%A5%E7%99%BE%E5%88%86%E6%95%B0%E6%98%BE%E7%A4%BA%E4%BD%BF%E7%94%A8%E7%8E%87%E6%9C%80%E9%AB%98%E7%9A%84%E5%89%8D%E5%87%A0%E4%B8%AAjava%E7%BA%BF%E7%A8%8B\"><\/span>\u4ee5\u767e\u5206\u6570\u663e\u793a\u4f7f\u7528\u7387\u6700\u9ad8\u7684\u524d\u51e0\u4e2ajava\u7ebf\u7a0b.<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0e05bcc elementor-widget elementor-widget-shortcode\" data-id=\"0e05bcc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">show-busy-java-threads.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/show-busy-java-threads.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n# @Function\n# Find out the highest cpu consumed threads of java, and print the stack of these threads.\n#\n# @Usage\n#   $ .\/show-busy-java-threads.sh\n#\n# @author Jerry Lee\n\nreadonly PROG=`basename $0`\nreadonly -a COMMAND_LINE=(&quot;$0&quot; &quot;$@&quot;)\n\nusage() {\n    cat &lt;&lt;EOF\nUsage: ${PROG} [OPTION]...\nFind out the highest cpu consumed threads of java, and print the stack of these threads.\nExample: ${PROG} -c 10\n\nOptions:\n    -p, --pid       find out the highest cpu consumed threads from the specifed java process,\n                    default from all java process.\n    -c, --count     set the thread count to show, default is 5\n    -h, --help      display this help and exit\nEOF\n    exit $1\n}\n\nreadonly ARGS=`getopt -n &quot;$PROG&quot; -a -o c:p:h -l count:,pid:,help -- &quot;$@&quot;`\n[ $? -ne 0 ] &amp;&amp; usage 1\neval set -- &quot;${ARGS}&quot;\n\nwhile true; do\n    case &quot;$1&quot; in\n    -c|--count)\n        count=&quot;$2&quot;\n        shift 2\n        ;;\n    -p|--pid)\n        pid=&quot;$2&quot;\n        shift 2\n        ;;\n    -h|--help)\n        usage\n        ;;\n    --)\n        shift\n        break\n        ;;\n    esac\ndone\ncount=${count:-5}\n\nredEcho() {\n    [ -c \/dev\/stdout ] &amp;&amp; {\n        # if stdout is console, turn on color output.\n        echo -ne &quot;\\033[1;31m&quot;\n        echo -n &quot;$@&quot;\n        echo -e &quot;\\033[0m&quot;\n    } || echo &quot;$@&quot;\n}\n\nyellowEcho() {\n    [ -c \/dev\/stdout ] &amp;&amp; {\n        # if stdout is console, turn on color output.\n        echo -ne &quot;\\033[1;33m&quot;\n        echo -n &quot;$@&quot;\n        echo -e &quot;\\033[0m&quot;\n    } || echo &quot;$@&quot;\n}\n\nblueEcho() {\n    [ -c \/dev\/stdout ] &amp;&amp; {\n        # if stdout is console, turn on color output.\n        echo -ne &quot;\\033[1;36m&quot;\n        echo -n &quot;$@&quot;\n        echo -e &quot;\\033[0m&quot;\n    } || echo &quot;$@&quot;\n}\n\n# Check the existence of jstack command!\nif ! which jstack &amp;&gt; \/dev\/null; then\n    [ -z &quot;$JAVA_HOME&quot; ] &amp;&amp; {\n        redEcho &quot;Error: jstack not found on PATH!&quot;\n        exit 1\n    }\n    ! [ -f &quot;$JAVA_HOME\/bin\/jstack&quot; ] &amp;&amp; {\n        redEcho &quot;Error: jstack not found on PATH and $JAVA_HOME\/bin\/jstack file does NOT exists!&quot;\n        exit 1\n    }\n    ! [ -x &quot;$JAVA_HOME\/bin\/jstack&quot; ] &amp;&amp; {\n        redEcho &quot;Error: jstack not found on PATH and $JAVA_HOME\/bin\/jstack is NOT executalbe!&quot;\n        exit 1\n    }\n    export PATH=&quot;$JAVA_HOME\/bin:$PATH&quot;\nfi\n\nreadonly uuid=`date +%s`_${RANDOM}_$$\n\ncleanupWhenExit() {\n    rm \/tmp\/${uuid}_* &amp;&gt; \/dev\/null\n}\ntrap &quot;cleanupWhenExit&quot; EXIT\n\nprintStackOfThread() {\n    local line\n    local count=1\n    while IFS=&quot; &quot; read -a line ; do\n        local pid=${line[0]}\n        local threadId=${line[1]}\n        local threadId0x=`printf %x ${threadId}`\n        local user=${line[2]}\n        local pcpu=${line[4]}\n\n        local jstackFile=\/tmp\/${uuid}_${pid}\n\n        [ ! -f &quot;${jstackFile}&quot; ] &amp;&amp; {\n            {\n                if [ &quot;${user}&quot; == &quot;${USER}&quot; ]; then\n                    jstack ${pid} &gt; ${jstackFile}\n                else\n                    if [ $UID == 0 ]; then\n                        sudo -u ${user} jstack ${pid} &gt; ${jstackFile}\n                    else\n                        redEcho &quot;[$((count++))] Fail to jstack Busy(${pcpu}%) thread(${threadId}\/0x${threadId0x}) stack of java process(${pid}) under user(${user}).&quot;\n                        redEcho &quot;User of java process($user) is not current user($USER), need sudo to run again:&quot;\n                        yellowEcho &quot;    sudo ${COMMAND_LINE[@]}&quot;\n                        echo\n                        continue\n                    fi\n                fi\n            } || {\n                redEcho &quot;[$((count++))] Fail to jstack Busy(${pcpu}%) thread(${threadId}\/0x${threadId0x}) stack of java process(${pid}) under user(${user}).&quot;\n                echo\n                rm ${jstackFile}\n                continue\n            }\n        }\n        blueEcho &quot;[$((count++))] Busy(${pcpu}%) thread(${threadId}\/0x${threadId0x}) stack of java process(${pid}) under user(${user}):&quot;\n        sed &quot;\/nid=0x${threadId0x} \/,\/^$\/p&quot; -n ${jstackFile}\n    done\n}\n\n\nps -Leo pid,lwp,user,comm,pcpu --no-headers | {\n    [ -z &quot;${pid}&quot; ] &amp;&amp;\n    awk &#039;$4==&quot;java&quot;{print $0}&#039; ||\n    awk -v &quot;pid=${pid}&quot; &#039;$1==pid,$4==&quot;java&quot;{print $0}&#039;\n} | sort -k5 -r -n | head --lines &quot;${count}&quot; | printStackOfThread\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e49393 elementor-widget elementor-widget-heading\" data-id=\"2e49393\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%89%B9%E9%87%8F%E4%B8%8B%E8%BD%BDurl%E5%9C%B0%E5%9D%80%E6%96%87%E4%BB%B6\"><\/span>\u6279\u91cf\u4e0b\u8f7durl\u5730\u5740\u6587\u4ef6<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-630dd06 elementor-widget elementor-widget-shortcode\" data-id=\"630dd06\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">url_download_scripts_v4.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/url_download_scripts_v4.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n\n# \u5b9a\u4e49\u53d8\u91cf\nURL_FILE=&quot;files\/file.txt&quot;\nENCODED_URL_FILE=&quot;files\/encoded_urls.txt&quot;\nLOG_FILE=&quot;logs\/download.log&quot;\nSUCCESS_FILE=&quot;logs\/success.log&quot;\nFAIL_FILE=&quot;logs\/fail.log&quot;\nDOWNLOAD_DIR=&quot;files\/downloads&quot;\n\n# \u521b\u5efa\u4e0b\u8f7d\u76ee\u5f55\u548c\u65e5\u5fd7\u76ee\u5f55\nmkdir -p &quot;$DOWNLOAD_DIR&quot;\nmkdir -p &quot;$(dirname &quot;$LOG_FILE&quot;)&quot;\nmkdir -p &quot;$(dirname &quot;$ENCODED_URL_FILE&quot;)&quot;\n\n# \u521d\u59cb\u5316\u8ba1\u6570\u5668\ntotal=0\nsuccess=0\nfail=0\n\n# \u6e05\u7a7a\u65e5\u5fd7\u6587\u4ef6\n&gt; &quot;$LOG_FILE&quot;\n&gt; &quot;$SUCCESS_FILE&quot;\n&gt; &quot;$FAIL_FILE&quot;\n\n# \u8bb0\u5f55\u5f00\u59cb\u65f6\u95f4\necho &quot;\u4e0b\u8f7d\u5f00\u59cb\u65f6\u95f4: $(date)&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;==========================================&quot; | tee -a &quot;$LOG_FILE&quot;\n\n# \u7b2c\u4e00\u6b65\uff1a\u5bf9URL\u6587\u4ef6\u8fdb\u884c\u7f16\u7801\u5904\u7406\necho &quot;\u6b63\u5728\u5bf9URL\u8fdb\u884c\u7f16\u7801\u5904\u7406...&quot; | tee -a &quot;$LOG_FILE&quot;\n&gt; &quot;$ENCODED_URL_FILE&quot;\n\nwhile IFS= read -r url || [[ -n &quot;$url&quot; ]]; do\n    # \u8df3\u8fc7\u7a7a\u884c\n    url=$(echo &quot;$url&quot; | sed &#039;s\/^[[:space:]]*\/\/;s\/[[:space:]]*$\/\/&#039;)\n    if [[ -z &quot;$url&quot; ]]; then\n        continue\n    fi\n    \n    # \u5bf9URL\u8fdb\u884c\u7f16\u7801\uff1a\u7a7a\u683c -&gt; %20, ( -&gt; %28, ) -&gt; %29\n    encoded_url=$(echo &quot;$url&quot; | sed &#039;\n        s\/ \/%20\/g;\n        s\/(\/%28\/g;\n        s\/)\/%29\/g\n    &#039;)\n    \n    echo &quot;$encoded_url&quot; &gt;&gt; &quot;$ENCODED_URL_FILE&quot;\n    echo &quot;\u539f\u59cb: $url&quot; | tee -a &quot;$LOG_FILE&quot;\n    echo &quot;\u7f16\u7801: $encoded_url&quot; | tee -a &quot;$LOG_FILE&quot;\n    echo &quot;---&quot; | tee -a &quot;$LOG_FILE&quot;\n    \ndone &lt; &quot;$URL_FILE&quot;\n\necho &quot;URL\u7f16\u7801\u5b8c\u6210\uff01\u7f16\u7801\u540e\u7684URL\u4fdd\u5b58\u5728: $ENCODED_URL_FILE&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;==========================================&quot; | tee -a &quot;$LOG_FILE&quot;\n\n# \u7b2c\u4e8c\u6b65\uff1a\u4f7f\u7528\u7f16\u7801\u540e\u7684URL\u8fdb\u884c\u4e0b\u8f7d\necho &quot;\u5f00\u59cb\u4e0b\u8f7d\u6587\u4ef6...&quot; | tee -a &quot;$LOG_FILE&quot;\n\n# \u521b\u5efa\u6587\u4ef6\u6620\u5c04\u8bb0\u5f55\uff0c\u907f\u514d\u91cd\u590d\ndeclare -A downloaded_files\n\nwhile IFS= read -r encoded_url || [[ -n &quot;$encoded_url&quot; ]]; do\n    # \u8df3\u8fc7\u7a7a\u884c\n    encoded_url=$(echo &quot;$encoded_url&quot; | sed &#039;s\/^[[:space:]]*\/\/;s\/[[:space:]]*$\/\/&#039;)\n    if [[ -z &quot;$encoded_url&quot; ]]; then\n        continue\n    fi\n\n    total=$((total + 1))\n\n    # \u4ece\u7f16\u7801\u540e\u7684URL\u4e2d\u63d0\u53d6\u6587\u4ef6\u540d\uff08\u9700\u8981\u5148\u89e3\u7801\u6587\u4ef6\u540d\u90e8\u5206\uff09\n    original_filename=$(echo &quot;$encoded_url&quot; | sed &#039;s|.*\/||&#039; | sed &#039;\n        s\/%20\/ \/g;\n        s\/%28\/(\/g;\n        s\/%29\/)\/g\n    &#039;)\n    \n    # \u83b7\u53d6\u6587\u4ef6\u6269\u5c55\u540d\n    extension=&quot;${original_filename##*.}&quot;\n    if [[ &quot;$extension&quot; == &quot;$original_filename&quot; ]]; then\n        extension=&quot;&quot;\n    else\n        extension=&quot;.$extension&quot;\n    fi\n    \n    # \u751f\u6210\u552f\u4e00\u6587\u4ef6\u540d\uff08\u6dfb\u52a0\u5e8f\u53f7\u524d\u7f00\uff09\n    base_filename=$(basename &quot;$original_filename&quot; &quot;$extension&quot;)\n    filename=&quot;${total}_${base_filename}${extension}&quot;\n    \n    # \u68c0\u67e5\u6587\u4ef6\u540d\u662f\u5426\u5df2\u5b58\u5728\uff0c\u5982\u679c\u5b58\u5728\u5219\u6dfb\u52a0\u65f6\u95f4\u6233\n    if [[ -n &quot;${downloaded_files[$filename]}&quot; ]]; then\n        timestamp=$(date +%Y%m%d_%H%M%S)\n        filename=&quot;${total}_${base_filename}_${timestamp}${extension}&quot;\n    fi\n    \n    downloaded_files[$filename]=1\n\n    # \u5b8c\u6574\u7684\u6587\u4ef6\u8def\u5f84\n    filepath=&quot;${DOWNLOAD_DIR}\/${filename}&quot;\n\n    echo &quot;\u6b63\u5728\u4e0b\u8f7d\u7b2c $total \u4e2a\u6587\u4ef6: $filename&quot; | tee -a &quot;$LOG_FILE&quot;\n    echo &quot;\u539f\u59cb\u6587\u4ef6\u540d: $original_filename&quot; | tee -a &quot;$LOG_FILE&quot;\n    echo &quot;\u7f16\u7801URL: $(echo &quot;$encoded_url&quot; | cut -c1-80)...&quot; | tee -a &quot;$LOG_FILE&quot;\n\n    # \u4f7f\u7528wget\u4e0b\u8f7d\u6587\u4ef6\n    if wget --timeout=30 --tries=3 \\\n            --user-agent=&quot;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36&quot; \\\n            -O &quot;$filepath&quot; \\\n            &quot;$encoded_url&quot; 2&gt;&gt; &quot;$LOG_FILE&quot;; then\n        \n        # \u68c0\u67e5\u6587\u4ef6\u662f\u5426\u771f\u7684\u4e0b\u8f7d\u6210\u529f\uff08\u6587\u4ef6\u5b58\u5728\u4e14\u5927\u5c0f\u5927\u4e8e0\uff09\n        if [[ -f &quot;$filepath&quot; ]] &amp;&amp; [[ -s &quot;$filepath&quot; ]]; then\n            file_size=$(wc -c &lt; &quot;$filepath&quot;)\n            echo &quot;\u2713 \u6210\u529f\u4e0b\u8f7d: $filename ($file_size bytes)&quot; | tee -a &quot;$LOG_FILE&quot;\n            echo &quot;$encoded_url -&gt; $filepath ($file_size bytes)&quot; &gt;&gt; &quot;$SUCCESS_FILE&quot;\n            success=$((success + 1))\n            \n        else\n            echo &quot;\u2717 \u6587\u4ef6\u4e3a\u7a7a\u6216\u635f\u574f: $filename&quot; | tee -a &quot;$LOG_FILE&quot;\n            echo &quot;$encoded_url -&gt; \u7a7a\u6587\u4ef6\/\u635f\u574f&quot; &gt;&gt; &quot;$FAIL_FILE&quot;\n            rm -f &quot;$filepath&quot; 2&gt;\/dev\/null\n            fail=$((fail + 1))\n        fi\n    else\n        echo &quot;\u2717 \u4e0b\u8f7d\u5931\u8d25: $filename&quot; | tee -a &quot;$LOG_FILE&quot;\n        echo &quot;$encoded_url&quot; &gt;&gt; &quot;$FAIL_FILE&quot;\n        fail=$((fail + 1))\n    fi\n\n    echo &quot;---&quot; | tee -a &quot;$LOG_FILE&quot;\n    \n    # \u6dfb\u52a0\u5ef6\u8fdf\uff0c\u907f\u514d\u5bf9\u670d\u52a1\u5668\u9020\u6210\u592a\u5927\u538b\u529b\n    sleep 1\n\ndone &lt; &quot;$ENCODED_URL_FILE&quot;\n\n# \u8bb0\u5f55\u7ed3\u675f\u65f6\u95f4\u548c\u7edf\u8ba1\u4fe1\u606f\necho &quot;==========================================&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;\u4e0b\u8f7d\u7ed3\u675f\u65f6\u95f4: $(date)&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;==========================================&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;\u603b\u6587\u4ef6\u6570: $total&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;\u6210\u529f\u4e0b\u8f7d: $success&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;\u4e0b\u8f7d\u5931\u8d25: $fail&quot; | tee -a &quot;$LOG_FILE&quot;\n\n# \u4f7f\u7528awk\u8ba1\u7b97\u6210\u529f\u7387\uff08\u907f\u514dbc\u547d\u4ee4\u4e0d\u5b58\u5728\uff09\nif [[ $total -gt 0 ]]; then\n    success_rate=$(awk &quot;BEGIN {printf \\&quot;%.2f%%\\&quot;, $success * 100 \/ $total}&quot;)\n    echo &quot;\u6210\u529f\u7387: ${success_rate}&quot; | tee -a &quot;$LOG_FILE&quot;\nelse\n    echo &quot;\u6210\u529f\u7387: 0%&quot; | tee -a &quot;$LOG_FILE&quot;\nfi\n\n# \u8f93\u51fa\u4e0b\u8f7d\u76ee\u5f55\u7684\u5185\u5bb9\u548c\u5b9e\u9645\u6587\u4ef6\u6570\nactual_files=$(ls -1 &quot;$DOWNLOAD_DIR&quot; 2&gt;\/dev\/null | wc -l)\necho &quot;\u5b9e\u9645\u4e0b\u8f7d\u6587\u4ef6\u6570: $actual_files&quot; | tee -a &quot;$LOG_FILE&quot;\n\necho &quot;==========================================&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;\u4e0b\u8f7d\u76ee\u5f55\u5185\u5bb9:&quot; | tee -a &quot;$LOG_FILE&quot;\nls -la &quot;$DOWNLOAD_DIR\/&quot; | head -15 | tee -a &quot;$LOG_FILE&quot;\n\n# \u68c0\u67e5\u91cd\u590d\u6587\u4ef6\necho &quot;==========================================&quot; | tee -a &quot;$LOG_FILE&quot;\necho &quot;\u68c0\u67e5\u91cd\u590d\u6587\u4ef6...&quot; | tee -a &quot;$LOG_FILE&quot;\nls -1 &quot;$DOWNLOAD_DIR\/&quot; | sed &#039;s\/^[0-9]*_\/\/&#039; | sort | uniq -d | while read duplicate; do\n    count=$(ls -1 &quot;$DOWNLOAD_DIR\/&quot; | grep &quot;_${duplicate}$&quot; | wc -l)\n    echo &quot;\u91cd\u590d\u6587\u4ef6: $duplicate (\u51fa\u73b0 $count \u6b21)&quot; | tee -a &quot;$LOG_FILE&quot;\ndone\n\n# \u8f93\u51fa\u65e5\u5fd7\u6587\u4ef6\u4f4d\u7f6e\necho &quot;==========================================&quot;\necho &quot;\u8be6\u7ec6\u65e5\u5fd7: $LOG_FILE&quot;\necho &quot;\u6210\u529f\u4e0b\u8f7d\u5217\u8868: $SUCCESS_FILE&quot;\necho &quot;\u5931\u8d25\u4e0b\u8f7d\u5217\u8868: $FAIL_FILE&quot;\necho &quot;\u7f16\u7801\u540e\u7684URL\u6587\u4ef6: $ENCODED_URL_FILE&quot;\necho &quot;\u6587\u4ef6\u4e0b\u8f7d\u5230: $DOWNLOAD_DIR\/&quot;\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d8ef397 elementor-widget elementor-widget-heading\" data-id=\"d8ef397\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%9C%8D%E5%8A%A1%E7%AB%AF%E9%83%A8%E7%BD%B2rsyncd%E8%84%9A%E6%9C%AC\"><\/span><a href=\"https:\/\/linuxjk.cn\/?p=747#%E6%9C%8D%E5%8A%A1%E7%AB%AF%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2%E8%84%9A%E6%9C%AC\">\u670d\u52a1\u7aef\u90e8\u7f72rsyncd\u811a\u672c<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-33f3fc2 elementor-widget elementor-widget-shortcode\" data-id=\"33f3fc2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">use_rsync.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/use_rsync.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:use_rsync.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u90e8\u7f72rsync\u811a\u672c\n###########################################\n\n#create color func\n#\u989c\u8272\u51fd\u6570\nfunction redecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;31m${input}\\E[0m&quot;\n}\nfunction greenecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;32m${input}\\E[0m&quot;\n}\nfunction blueecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;36m${input}\\E[0m&quot;\n}\nfunction yellowecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;33m${input}\\E[0m&quot;\n}\n\n#1.vars\n\n\n#check user\n\necho &quot;################################################&quot;\nif [ &quot;`whoami`&quot; = &quot;root&quot; ];then\n\tgreenecho &quot;\u5f53\u524d\u4e3aroot\u7528\u6237,\u5f00\u59cb\u6267\u884c\u811a\u672c&quot;\nelse\n\tredecho &quot;\u8bf7\u5207\u6362root\u7528\u6237\u6267\u884c\u6b64\u811a\u672c&quot;\n\texit 0\nfi\necho &quot;------------------------------------------------&quot;\n\n#begin server\nblueecho &quot;1.\u68c0\u67e5\u662f\u5426\u5b89\u88c5rsync\u8f6f\u4ef6\u5305: &quot;\nif rpm -qa | grep rsync &amp;&gt;\/dev\/null;then\n\tgreenecho &quot;\u7cfb\u7edf\u4e2d\u5df2\u6709rsync\uff0c\u8df3\u8fc7\u5b89\u88c5\u6b65\u9aa4.........&quot;\nelse\n\tyum install -y rsync &amp;&gt;\/dev\/null\n\tif [ $? -ne 0 ];then\n\t\tredecho &quot;\u5b89\u88c5\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\u7cfb\u7edf\u7f51\u7edc\/yum\u6e90&quot; \n\t\texit 1\n\tfi\nfi\necho &quot;------------------------------------------------&quot;\n\nconfig_file=\/etc\/rsyncd.conf\nblueecho &quot;2. \u4e66\u5199\u914d\u7f6e\u6587\u4ef6:  \u6b64\u5904\u53ea\u652f\u6301\u5355\u4e2a\u6a21\u5757\u7684\u914d\u7f6e\u4e0e\u914d\u7f6e\u6587\u4ef6\u9664\u4e86\u6a21\u5757\u5916\u7684\u5176\u4ed6\u9879\uff0c\u5982\u679c\u60f3\u90e8\u7f72\u591a\u4e2a\u6a21\u5757\u8bf7\u4fee\u6539\u811a\u672c\u4e2d66-82\u884c &quot;\nread -p  &quot;\u8bf7\u8f93\u5165\u63a5\u6536\u6587\u4ef6\u7684\u6a21\u5757\u540d\u5b57\uff1a &quot; name\nyellowecho &quot;\u6a21\u5757\u540d\uff1a$name&quot;\nread -p  &quot;\u8bf7\u8f93\u5165\u6a21\u5757\u63cf\u8ff0\uff1a &quot; comment\nyellowecho &quot;\u6a21\u5757\u63cf\u8ff0\uff1a $comment&quot;\nread -p  &quot;\u8bf7\u8f93\u5165\u6a21\u5757\u7684\u6587\u4ef6\u5939\u4f4d\u7f6e\uff1a&quot; path\nyellowecho &quot;\u6a21\u5757\u6587\u4ef6\u5939\u4f4d\u7f6e\uff1a$path&quot;\n\ncat &gt; $config_file &lt;&lt;EOF\nuid=rsync\ngid=rsync\nlogfile=\/var\/log\/rsyncd.log\nauth users=rsync_backup \nsecrets file=\/etc\/rsyncd.password\nfake super=yes\nuse chroot=no\nmax connections=2000\ntimeout=600\npid file=\/var\/run\/rsync.pid\nlock file=\/var\/run\/rsync.lock\nignore errors=yes\nread only=false\nlist=false\n[$name] \ncomment=$comment\npath=$path\nEOF\nif [ $? -eq 0 ];then\n\tgreenecho &quot;\u6210\u529f\u5199\u5165\u914d\u7f6e\u6587\u4ef6 &quot;\nelse\n\tredecho &quot;\u5199\u5165\u914d\u7f6e\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5&quot;\n\texit 2\nfi\necho &quot;------------------------------------------------&quot;\n#\u5f00\u59cb\u6267\u884c\u90e8\u7f72\u547d\u4ee4\nblueecho &quot;\u521b\u5efarsync\u7528\u6237:&quot;\nif id rsync  &amp;&gt;\/dev\/null ;then\n\tgreenecho &quot;\u5df2\u5b58\u5728rsync\u7528\u6237\uff0c\u8df3\u8fc7\u521b\u5efa\u6b65\u9aa4......&quot;\nelse\n\tuseradd -s \/sbin\/nologin -M rsync\n\tgreenecho &quot;\u5df2\u521b\u5efarsync\u7528\u6237&quot;\nfi\necho &quot;------------------------------------------------&quot;\nblueecho &quot;\u8bbe\u7f6e\u81ea\u52a8\u4f20\u8f93\u5bc6\u7801\u6587\u4ef6rsync.client&quot;\npassword_file=\/etc\/rsyncd.password\nread -p &quot;\u8bbe\u7f6e\u5bc6\u7801\u6587\u4ef6rsync.client\uff0c\u8bf7\u76f4\u63a5\u8f93\u5165\u5bc6\u7801 : &quot; password\necho &quot;rsync_backup:$password&quot; &gt; $password_file &amp;&amp; chmod 600 $password_file\n\necho &quot;------------------------------------------------&quot;\nblueecho &quot;\u521b\u5efa\u5b58\u653e\u5907\u4efd\u7684\u76ee\u5f55\u5e76\u8bbe\u7f6e\u76ee\u5f55\u6240\u5c5e\u4e3b\u6240\u5c5e\u7ec4\u5747\u4e3arsync\u7528\u6237&quot;\nmkdir -p $path  &amp;&amp; chown -R rsync:rsync $path &amp;&gt;\/dev\/null\n\necho &quot;------------------------------------------------&quot;\n\nif ! systemctl enable --now rsyncd;then\n\tblueecho &quot;\u521b\u5efasystemd\u6587\u4ef6\uff0c\u5b58\u653e\u4f4d\u7f6e\/etc\/systemd\/system\/rsyncd.service&quot;\ncat &gt; \/etc\/systemd\/system\/rsyncd.service &lt;&lt;EOF\n[Unit]\nDescription=fast remote file copy program daemon\nAfter=network.target\n\n[Service]\nType=forking\nExecStart=\/usr\/bin\/rsync --daemon --config=\/etc\/rsyncd.conf\nExecReload=\/bin\/kill -HUP \\$MAINPID\n\n[Install]\nWantedBy=multi-user.target\nEOF\necho &quot;\u6210\u529f\u521b\u5efasystemd\u6587\u4ef6&quot;\nfi\n\necho &quot;------------------------------------------------&quot;\nblueecho &quot;\u542f\u52a8rsyncd\u670d\u52a1&quot;\nif systemctl restart rsyncd &amp;&amp; systemctl enable --now rsyncd &amp;&gt;\/dev\/null;then\n\tgreenecho &quot;\u670d\u52a1\u542f\u52a8\u6210\u529f\uff0c\u5df2\u8bbe\u7f6e\u5f00\u673a\u81ea\u542f&quot;\nelse\n\tredecho &quot;\u670d\u52a1\u542f\u52a8\u5931\u8d25,\u8bf7\u68c0\u67e5\u914d\u7f6e\u6587\u4ef6\/\u670d\u52a1\u7ba1\u7406\u6587\u4ef6&quot;\n\texit 3\nfi\n\necho &quot;------------------------------------------------&quot;\nblueecho &quot;\u9632\u706b\u5899\u653e\u884c873\u7aef\u53e3,\u653e\u884crsyncd\u670d\u52a1\uff0c\u91cd\u542f\u9632\u706b\u5899&quot;\nfirewall-cmd --permanent --add-port=873\/tcp &amp;&amp; firewall-cmd --permanent --add-service=rsyncd &amp;&amp; firewall-cmd --reload  &amp;&gt;\/dev\/null\n\n\necho &quot;------------------------------------------------&quot;\nblueecho &quot;#\u89e3\u9664SELinux\u5b89\u5168\u4e0a\u4e0b\u6587\u503c\u9650\u5236\uff0c\u5141\u8bb8 rsync \u5b8c\u5168\u8bbf\u95ee&quot;\nsemanage fcontext -a -t rsync_data_t &quot;$path(\/.*)?&quot;  &amp;&amp;  restorecon -Rv $path &amp;&amp;   setsebool -P rsync_full_access=1 &amp;&amp;  setenforce 1 &amp;&gt;\/dev\/null\n\n\necho &quot;------------------------------------------------&quot;\nread -p &quot;\u8bf7\u8f93\u5165\u5bc6\u7801\u521b\u5efa\u5ba2\u6237\u7aef\u5bc6\u7801\u6587\u4ef6\uff1a &quot; clientpasswd\nclient_file=\/etc\/rsync.client\necho &quot;$clientpasswd&quot; $client_file &amp;&amp; chmod 600 $client_file  &amp;&gt;\/dev\/null\n\n\necho &quot;------------------------------------------------&quot;\nblueecho   &quot;\u5f00\u59cb\u672c\u673a\u6d4b\u8bd5\uff08\u81ea\u5df1\u4f20\u81ea\u5df1\uff09&quot;\nrsync -av \/etc\/hostname rsync_backup@$HOSTNAME::$name  --password-file=$client_file  &amp;&gt;\/dev\/null\nif [ $? -eq 0 ];then\n\tgreenecho &quot;\u4f20\u8f93\u5b8c\u6210\uff0c\u8bf7\u68c0\u67e5\u662f\u5426\u4f20\u8f93\u6210\u529f\uff0c\u67e5\u770b\u76ee\u5f55\uff1a$path&quot;\n\tls -l $path\nelse\n\tredecho &quot;\u4f20\u8f93\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\u670d\u52a1\u72b6\u6001\/\u914d\u7f6e\u6587\u4ef6\/\u811a\u672c\u53d8\u91cf&quot;\n\texit 5\nfi\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-429d69e elementor-widget elementor-widget-heading\" data-id=\"429d69e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E7%AE%A1%E7%90%86%E6%9C%BAm01%E4%B8%80%E9%94%AE%E5%88%9B%E5%BB%BA%E7%A7%98%E9%92%A5%E5%AF%B9%EF%BC%8C%E5%88%86%E5%8F%91%E5%85%AC%E9%92%A5%E4%BB%A5%E6%89%B9%E9%87%8F%E8%BF%9E%E6%8E%A5%E8%84%9A%E6%9C%AC%EF%BC%88%E6%9C%AC%E8%B4%A8for%E5%BE%AA%E7%8E%AF%EF%BC%89\"><\/span><a href=\"https:\/\/linuxjk.cn\/?p=1692#6_%E4%B9%A6%E5%86%99%E4%B8%80%E9%94%AE%E8%84%9A%E6%9C%AC\">\u7ba1\u7406\u673am01\u4e00\u952e\u521b\u5efa\u79d8\u94a5\u5bf9\uff0c\u5206\u53d1\u516c\u94a5\u4ee5\u6279\u91cf\u8fde\u63a5\u811a\u672c\uff08\u672c\u8d28for\u5faa\u73af\uff09<\/a><span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d92bbc2 elementor-widget elementor-widget-shortcode\" data-id=\"d92bbc2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">sshfenfa.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/sshfenfa.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:sshfenfa.sh\n# Version:V1.0\n# Author:zhangpeng-vxhs888p\n# linuxjk.cn\n# Desc:\n#1. \u68c0\u67e5\u5bc6\u94a5\u6587\u4ef6\u662f\u5426\u5b58\u5728,\u5982\u679c\u4e0d\u5b58\u5728\u5219\u521b\u5efa ~\/.ssh\/id_rsa\n#2. ip\u5217\u8868(\u53d8\u91cf,\u6587\u4ef6,\u6570\u7ec4)\u5206\u53d1\u516c\u94a5\n#3. for+\u5206\u53d1\u547d\u4ee4\n#4. \u68c0\u67e5\u6210\u529f,\u5931\u8d25\n#5. for+\u6279\u91cf\u6267\u884c\u547d\u4ee4\n#6. for+ssh\u547d\u4ee4 hostname -I\n###########################################\n\n#\u989c\u8272\u51fd\u6570\nfunction redecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;31m${input}\\E[0m&quot;\n}\nfunction greenecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;32m${input}\\E[0m&quot;\n}\nfunction blueecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;36m${input}\\E[0m&quot;\n}\n\n#1.vars\nkey_file=\/root\/.ssh\/id_rsa\npub_file=\/root\/.ssh\/id_rsa.pub\nip_file=\/server\/scripts\/ip.txt\nips=&quot;`cat $ip_file`&quot;\npass=linuxjk.cn666\n#ips=&quot;10.0.0.7 10.0.0.8 10.0.0.9&quot;\n#2.\u68c0\u67e5\u5bc6\u94a5\u6587\u4ef6\u662f\u5426\u5b58\u5728,\u5982\u679c\u4e0d\u5b58\u5728\u5219\u521b\u5efa ~\/.ssh\/id_rsa\nblueecho &quot;\u68c0\u67e5\u5bc6\u94a5\u6587\u4ef6\u662f\u5426\u5b58\u5728&quot;\nif [ ! -f ${key_file} ];then\n\tssh-keygen -f $key_file -P &#039;&#039; &amp;&gt;\/dev\/null\n\tif [ $? -eq 0 ];then\n\t\tgreenecho &quot;\u6210\u529f\u521b\u5efa\u5bc6\u94a5\u6587\u4ef6 $key_file &quot;\n\telse\n\t\tredecho &quot;\u521b\u5efa\u5bc6\u94a5\u6587\u4ef6\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\u811a\u672c\uff01&quot;\n\t\texit 1\n\tfi\nelse\n\tgreenecho &quot;\u5df2\u5b58\u5728\u5bc6\u94a5\u5bf9\uff0c\u8df3\u8fc7\u6b64\u6b65......&quot;\nfi\n\n#3.\u5206\u53d1\u5bc6\u94a5\nblueecho &quot;\u5f00\u59cb\u5206\u53d1\u5bc6\u94a5&quot;\nfor ip in $ips\ndo\n\t#3.1\u68c0\u67e5ip\u662f\u5426\u80fdping\u901a\n\tif  ! ping -c 1 -W 1 $ip &amp;&gt;\/dev\/null ;then\n\t\tredecho &quot;$ip \u5c1d\u8bd5\u8bbf\u95ee\u5931\u8d25\uff0c\u8bf7\u68c0\u67e5\u811a\u672c\u6216\u670d\u52a1\u5668\u5f00\u673a\u72b6\u6001&quot;\n\t\tcontinue\n\tfi\n\t#3.2\u5206\u53d1\n\tsshpass -p$pass ssh-copy-id -i $pub_file -o StrictHostKeyChecking=no &quot;root@$ip&quot; &amp;&gt;\/dev\/null\n\tif [ $? -eq 0 ];then\n\t\tgreenecho &quot;$ip \u5bc6\u94a5\u5206\u53d1\u6210\u529f&quot;\n\t\t#3.2.1.\u9a8c\u8bc1\u8fde\u63a5\n\t\tif  ssh -o StrictHostKeyChecking=no $ip hostname -I &amp;&gt;\/dev\/null ;then\n\t\t\tgreenecho &quot;$ip SSH\u8fde\u63a5\u9a8c\u8bc1\u6210\u529f&quot;\n\t\telse\n\t\t\tredecho &quot;$ip SSH\u8fde\u63a5\u9a8c\u8bc1\u5931\u8d25&quot;\n\t\tfi\n\telse\n\t\tredecho &quot;$ip \u5bc6\u94a5\u5206\u53d1\u5931\u8d25&quot;\n\tfi\ndone\n\ngreenecho &quot;\u6240\u6709\u64cd\u4f5c\u5df2\u5b8c\u6210\uff01&quot;\nexit 0\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b6f69d7 elementor-widget elementor-widget-shortcode\" data-id=\"b6f69d7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">ip.txt<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/ip.txt\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">lb01\nlb02\nweb01\nweb02\nweb03\nweb04\nnfs01\nbackup\ndb01\nm01\n<\/code><\/pre>\n    <\/div><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-45fa6ac elementor-widget elementor-widget-heading\" data-id=\"45fa6ac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B01%EF%BC%9A%E6%AF%8F%E6%AC%A1%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95%E5%90%8E%E6%98%BE%E7%A4%BA%E7%B3%BB%E7%BB%9F%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF\"><\/span>\u6848\u4f8b01\uff1a\u6bcf\u6b21\u7528\u6237\u767b\u5f55\u540e\u663e\u793a\u7cfb\u7edf\u57fa\u672c\u4fe1\u606f<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a3889c elementor-widget elementor-widget-html\" data-id=\"6a3889c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">01_check_sys_cat.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/01_check_sys_cat.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:01_check_sys_cat.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b01\uff1a\u6bcf\u6b21\u7528\u6237\u767b\u5f55\u540e\u663e\u793a\u7cfb\u7edf\u57fa\u672c\u4fe1\u606f\n###########################################\n\n#1.vars\u53d8\u91cf\uf003\nhostname=`hostname`\nusername=`whoami`\nloadavg=`w | awk &#039;NR==1 {print$(NF-2),$(NF-1),$NF}&#039;`\ncpus=`lscpu | grep &quot;CPU(s):&quot; | awk &#039;NR==1 {print $2}&#039;`\n#procs=`top -bn1 | awk &#039;NR==2 {print $2}&#039;`\nprocs=`ps -e --no-headers | wc -l`\nzombies=`top -bn1 | awk &#039;NR==2 {print $(NF-1)}&#039;`\n#top_mem_processes=$(ps -eo %mem,comm --sort=-%mem | awk &#039;NR&lt;=11 &amp;&amp; NR&gt;1 {print $2}&#039;)\n#top_mem_processes=`top -bn1 -w 512 -o %MEM | awk &#039;NR&gt;=8&amp;&amp;NR&lt;13 {print $12}&#039;` \u663e\u793a\u5185\u5b58\u5360\u7528\u524d10\u4f46\u53d1\u73b0\u6709\u91cd\u590d\u503c\ntop_mem_processes=`top -bn1 -w 512 -o %MEM | awk &#039;NR&gt;=8&amp;&amp;NR&lt;21 {print $12}&#039; | uniq -c | awk &#039;{print $NF}&#039;`  #\u53bb\u91cd\u5904\u7406\uff0c\u53ea\u663e\u793a\u524d13\u4e2a\u8fdb\u7a0b\u4e2d\u9760\u524d\u7684\u51e0\u4e2a\n\nmem_total=`free -h | awk &#039;NR==2 {print $2}&#039;`\nmem_sy=`free -h | awk &#039;NR==2 {print $NF}&#039;`\nswap_total=`free -h | awk &#039;NR==3 {print $2}&#039;`\nswap_sy=`free -h | awk &#039;NR==3 {print $NF}&#039;`\nips=`hostname -I`\n#\u5b9e\u73b0\u767b\u5f55\u65f6\u63d0\u793a\uff0c\u5207\u6362\u7528\u6237\u4e0d\u63d0\u793a\uff1a\u5224\u65ad\u4e24\u4e2a\u53d8\u91cf\u662f\u5426\u5b58\u5728\uff0c\u5b58\u5728\u8868\u793a\u8fdc\u7a0b\u767b\u9646\uff0c\u4e0d\u5b58\u5728\u5c31\u662f\u5207\u6362\u7528\u6237\n# \u4e25\u683c\u5224\u65ad\uff1a\u53ea\u6709 SSH \u767b\u5f55\u4e14\u7236\u8fdb\u7a0b\u662f sshd \u65f6\u624d\u8f93\u51fa\nif [ -n &quot;$SSH_CLIENT&quot; ] &amp;&amp; [ -n &quot;$SSH_TTY&quot; ] &amp;&amp; [ &quot;$(ps -o comm= -p $PPID)&quot; = &quot;sshd&quot; ]; then\ncat&lt;&lt;EOF\n\u4e3b\u673a\u540d\uff1a$hostname\nip\u5730\u5740\uff1a$ips\n\u7528\u6237\u540d\uff1a$username\n\u7cfb\u7edf\u8d1f\u8f7d\uff1a$loadavg\nCPU\u6838\u5fc3\u603b\u6570\uff1a$cpus\n\u8fdb\u7a0b\u603b\u6570\uff1a$procs\n\u50f5\u5c38\u8fdb\u7a0b\u6570\u91cf\uff1a$zombies\n\u5185\u5b58\u5927\u5c0f\/\u5185\u5b58\u5269\u4f59\uff1a$mem_total $mem_sy\nswap\u5927\u5c0f\/swap\u5269\u4f59\uff1a$swap_total $swap_sy\nTop 10 \u5185\u5b58\u5360\u7528\u8fdb\u7a0b:\n$top_mem_processes\nEOF\nelse\n   exit 1\nfi\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-662a999 elementor-widget elementor-widget-html\" data-id=\"662a999\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">weather.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/weather.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n#curl -s wttr.in\/longfeng?lang=zh | awk &#039;NR &lt;= 17; END { print lines[40 - 2] } { lines[NR] = $0 }&#039;\n\n\nfunction redstrongecho(){\n\tinput=&quot;$@&quot;\n\techo -e &quot;\\E[1;41m${input}\\E[0m&quot;\n}\nfunction greenstrongecho(){\n\tinput=&quot;$@&quot;\n\techo -e &quot;\\E[1;42m${input}\\E[0m&quot;\n}\n#if [ -n &quot;$SSH_CLIENT&quot; ] &amp;&amp; [ -n &quot;$SSH_TTY&quot; ] &amp;&amp; [ &quot;$(ps -o comm= -p $PPID)&quot; = &quot;sshd&quot; ]\n#then\nredstrongecho &quot;\u4eca\u5929\u7684\u5929\u6c14\u662f\uff1a&quot;\n\ncurl -s wttr.in\/Jiamusi?lang=zh | awk &#039;NR &lt;= 17; END { print lines[40 - 2] } { lines[NR] = $0 }&#039;\n#else\n#\texit 1\n#fi\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5b095b6 elementor-widget elementor-widget-heading\" data-id=\"5b095b6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B02%EF%BC%9A%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC%E6%97%B6%E8%BE%93%E5%85%A5%E7%94%A8%E6%88%B7%E5%90%8D%E5%88%A4%E6%96%AD%E7%94%A8%E6%88%B7%E5%90%8D%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8\"><\/span>\u6848\u4f8b02\uff1a\u6267\u884c\u811a\u672c\u65f6\u8f93\u5165\u7528\u6237\u540d\u5224\u65ad\u7528\u6237\u540d\u662f\u5426\u5b58\u5728<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-25e005e elementor-widget elementor-widget-html\" data-id=\"25e005e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">02_check_user_exist.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/02_check_user_exist.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:02check_user_exist.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b02\uff1a\u6267\u884c\u811a\u672c\u65f6\u8f93\u5165\u7528\u6237\u540d\u5224\u65ad\u7528\u6237\u540d\u662f\u5426\u5b58\u5728\n###############\n############################\n\n#1.vars\nuser=$1\n#2.\u68c0\u67e5\u53c2\u6570\u6570\u91cf\u662f\u5426\u4e0d\u4e3a1,stop and exit\nif [ $# -ne 1 ]\nthen\n\techo &quot;\u53c2\u6570\u6570\u91cf\u4e0d\u5bf9\uff0c\u8bf7\u91cd\u65b0\u8fd0\u884c\u811a\u672c\uff01&quot;\n\techo &quot;\u6b63\u786e\u683c\u5f0f\uff1ash *.sh username&quot;\n\texit 1\nfi\n#\u6267\u884c\u547d\u4ee4\uff0c\u4e0b\u4e00\u6b65\u6839\u636e\u6b64\u5904\u662f\u5426\u6267\u884c\u6210\u529f\u5224\u65ad\u8f93\u51fa\u4fe1\u606f\nid ${user} &amp;&gt;\/dev\/null\n#3. id user--check\nif [ $? -eq 0 ]\nthen\n\techo &quot;${user} is exist,detailed information:&quot;\n\tid ${user}\nelse\n\techo &quot;${user} not exist&quot;\nfi\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c64c590 elementor-widget elementor-widget-heading\" data-id=\"c64c590\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B03%EF%BC%9A%E6%A3%80%E6%9F%A5ip%E6%88%96%E5%9F%9F%E5%90%8D%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE\"><\/span>\u6848\u4f8b03\uff1a\u68c0\u67e5ip\u6216\u57df\u540d\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7cc4367 elementor-widget elementor-widget-html\" data-id=\"7cc4367\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">03_check_ip_connect.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/03_check_ip_connect.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:03_check_ip_connect.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b03\uff1a\u68c0\u67e5ip\u6216\u57df\u540d\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee\n###########################################\n#1 vars\nip=$1\n#2.\u68c0\u67e5\u53c2\u6570\u6570\u91cf\u662f\u5426\u4e0d\u4e3a1,stop and exit\nif [ $# -ne 1 ]\nthen \n\techo &quot;\u811a\u672c\u53c2\u6570\u6570\u91cf\u4e0d\u5bf9\uff0c\u8bf7\u8f93\u51651\u4e2aip\u6216\u57df\u540d&quot;\n        echo &quot;\u6b63\u786e\u683c\u5f0f\uff1ash *.sh ipaddress\/domain name&quot;\n\texit 1\nfi\n#3\u6267\u884c\u547d\u4ee4\uff0c\u4e0b\u4e00\u6b65\u6839\u636e\u6b64\u5904\u662f\u5426\u6267\u884c\u6210\u529f\u5224\u65ad\u8f93\u51fa\u4fe1\u606f\nping -c1 ${ip}  &amp;&gt;\/dev\/null\n#4 judge $?\nif [ $? -eq 0 ]\nthen\n\techo &quot;connected&quot;\nelse\n\techo &quot;please check your net or input&quot;\nfi\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-83db8df elementor-widget elementor-widget-heading\" data-id=\"83db8df\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B04%EF%BC%9Ashell%E4%B8%AD%E7%9A%84%E4%BD%8D%E7%BD%AE%E5%8F%98%E9%87%8Fn%EF%BC%8C%E5%BD%93n%3E9%E6%97%B6%E6%80%8E%E4%B9%88%E5%A4%84%E7%90%86%EF%BC%9F-10_11\"><\/span>\u6848\u4f8b04\uff1ashell\u4e2d\u7684\u4f4d\u7f6e\u53d8\u91cf$n\uff0c\u5f53n&gt;9\u65f6\u600e\u4e48\u5904\u7406\uff1f-----${10} ${11}<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2684ee5 elementor-widget elementor-widget-html\" data-id=\"2684ee5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">04_test_arg.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/04_test_arg.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:04_test_arg.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b04\uff1ashell\u4e2d\u7684\u4f4d\u7f6e\u53d8\u91cf$n\uff0c\u5f53n&gt;9\u65f6\u600e\u4e48\u5904\u7406\uff1f-----${10} ${11}\n###########################################\necho $1 $2 $3... $9 ${10} ${11} ${12}\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c91526 elementor-widget elementor-widget-heading\" data-id=\"7c91526\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B05%EF%BC%9A%E8%A1%A8%E7%A4%BA%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC%E6%97%B6%E8%BE%93%E5%85%A5%E5%8F%82%E6%95%B0%E7%9A%84%E4%B8%AA%E6%95%B0%E4%B8%80%E8%88%AC%E7%94%A8%E4%BA%8E%E4%B8%8E%E5%88%A4%E6%96%AD%E7%BB%93%E5%90%88_%E6%A3%80%E6%9F%A5%E8%BE%93%E5%85%A5%E5%8F%82%E6%95%B0%E7%9A%84%E6%95%B0%E9%87%8F%E6%98%AF%E5%90%A6%E6%AD%A3%E7%A1%AE%EF%BC%89\"><\/span>\u6848\u4f8b05\uff1a$#\u8868\u793a\u8fd0\u884c\u811a\u672c\u65f6\u8f93\u5165\u53c2\u6570\u7684\u4e2a\u6570,\u4e00\u822c\u7528\u4e8e\u4e0e\u5224\u65ad\u7ed3\u5408\n(\u68c0\u67e5\u8f93\u5165\u53c2\u6570\u7684\u6570\u91cf\u662f\u5426\u6b63\u786e\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-503211d elementor-widget elementor-widget-html\" data-id=\"503211d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">05_test_jing.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/05_test_jing.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:05_test_jing.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b05\uff1a$#\u8868\u793a\u8fd0\u884c\u811a\u672c\u65f6\u8f93\u5165\u53c2\u6570\u7684\u4e2a\u6570,\u4e00\u822c\u7528\u4e8e\u4e0e\u5224\u65ad\u7ed3\u5408 (\u68c0\u67e5\u8f93\u5165\u53c2\u6570\u7684\u6570\u91cf\u662f\u5426\u6b63\u786e\uff09\n###########################################\necho $1 $2 $3\necho $#\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cf99f69 elementor-widget elementor-widget-heading\" data-id=\"cf99f69\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B06%EF%BC%9A%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC%E8%BE%93%E5%85%A51%E4%B8%AA%E6%88%96%E5%A4%9A%E4%B8%AA%E7%94%A8%E6%88%B7%E5%90%8D%E9%80%9A%E8%BF%87%E8%84%9A%E6%9C%AC%E8%BF%9B%E8%A1%8C%E8%BE%93%E5%87%BA_%E6%A3%80%E6%9F%A5%E8%BF%99%E4%BA%9B%E7%94%A8%E6%88%B7%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8\"><\/span>\u6848\u4f8b06\uff1a\u6267\u884c\u811a\u672c\u8f93\u51651\u4e2a\u6216\u591a\u4e2a\u7528\u6237\u540d\u901a\u8fc7\u811a\u672c\u8fdb\u884c\u8f93\u51fa\n(\u68c0\u67e5\u8fd9\u4e9b\u7528\u6237\u662f\u5426\u5b58\u5728)<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cbb4493 elementor-widget elementor-widget-html\" data-id=\"cbb4493\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">06_check_multi_users.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/06_check_multi_users.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:06_check_multi_users.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b06\uff1a\u6267\u884c\u811a\u672c\u8f93\u51651\u4e2a\u6216\u591a\u4e2a\u7528\u6237\u540d\u901a\u8fc7\u811a\u672c\u8fdb\u884c\u8f93\u51fa (\u68c0\u67e5\u8fd9\u4e9b\u7528\u6237\u662f\u5426\u5b58\u5728)\n###########################################\n#1.vars\nnames=&quot;$@&quot;\n\n#2.\u68c0\u67e5\u811a\u672c\u53c2\u6570\u4e2a\u6570\u662f\u5426\u4e3a0\uff08\u8f93\u5165\u662f\u5426\u4e3a\u7a7a\uff09\uff0c\u5982\u679c\u8f93\u5165\u4e3a\u7a7a\u5219\u9000\u51fa\nif [ $# -eq 0 ];then\n\techo &quot;please check your input&quot;\n\techo &quot;help: sh  $0 user...&quot;\n\texit 1\nfi\n\n#3.for\nfor i in ${names}\ndo\n\t#\u7528id\u547d\u4ee4\u68c0\u67e5\u7528\u6237\u662f\u5426\u5b58\u5728\n\tid ${i} &amp;&gt;\/dev\/null\nif [ $? -eq 0 ]\nthen\n\tid ${i}\nelse\n\techo &quot;$i is not exist&quot;\nfi\ndone\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cda7d13 elementor-widget elementor-widget-heading\" data-id=\"cda7d13\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B07%EF%BC%9A%E6%9B%BF%E4%BB%A3rm%E7%9A%84%E5%9B%9E%E6%94%B6%E7%AB%99%E8%84%9A%E6%9C%AC\"><\/span>\u6848\u4f8b07\uff1a\u66ff\u4ee3rm\u7684\u56de\u6536\u7ad9\u811a\u672c<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d046fa elementor-widget elementor-widget-html\" data-id=\"5d046fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">07_rm.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/07_rm.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:07_rm.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u66ff\u4ee3rm\u7684\u56de\u6536\u7ad9\u811a\u672c\n###########################################\n\n#1. \u521b\u5efa\u4e34\u65f6\u76ee\u5f55\ntmp_dir=$(mktemp -d -p \/tmp rm_sh_XXXXX)\ninput_dir=&quot;$1&quot;  # \u76f4\u63a5\u4f7f\u7528 $1 \u66f4\u7b80\u6d01\n\n#2. \u6821\u9a8c\u8f93\u5165\u975e\u7a7a\nif [ -z &quot;$input_dir&quot; ]; then\n    echo &quot;\u9519\u8bef\uff1a\u672a\u63d0\u4f9b\u76ee\u5f55\u53c2\u6570\uff01&quot;\n    exit 1\nfi\n\n#3. \u89e3\u6790\u7edd\u5bf9\u8def\u5f84\uff08\u4f7f\u7528 readlink -f \u589e\u5f3a\u517c\u5bb9\u6027\uff09\njueduipath=$(readlink -f &quot;$input_dir&quot; 2&gt;\/dev\/null)\nif [ $? -ne 0 ] || [ -z &quot;$jueduipath&quot; ]; then\n    echo &quot;failed: $input_dir is not exist&quot;\n    exit 1\nfi\n\n#4. \u68c0\u67e5\u662f\u5426\u4e3a\u6839\u76ee\u5f55\nif [ &quot;$jueduipath&quot; = &quot;\/&quot; ]; then\n    echo &quot;this is \/, stop your rm !&quot;\n    exit 1\nfi\n\n#5. \u79fb\u52a8\u76ee\u6807\u5230\u4e34\u65f6\u76ee\u5f55\nmv -- &quot;$jueduipath&quot; &quot;$tmp_dir&quot;\nif [ $? -eq 0 ]; then\n    echo &quot;success save to $tmp_dir&quot;\nelse\n    echo &quot;failed&quot;\nfi\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bf6b231 elementor-widget elementor-widget-heading\" data-id=\"bf6b231\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B10_%E9%80%9A%E8%BF%87%E8%84%9A%E6%9C%AC%E4%BC%A0%E5%8F%82%E8%BE%93%E5%85%A5%E4%BB%BB%E4%BD%95%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E5%B9%B6%E6%89%A7%E8%A1%8C%EF%BC%8C%E6%A3%80%E6%9F%A5%E8%BF%99%E4%B8%AA%E5%91%BD%E4%BB%A4%E7%9A%84%E6%89%A7%E8%A1%8C%E7%BB%93%E6%9E%9C%E6%98%AF%E5%90%A6%E6%AD%A3%E7%A1%AE\"><\/span>\u6848\u4f8b10:\u901a\u8fc7\u811a\u672c\u4f20\u53c2\u8f93\u5165\u4efb\u4f55\u4e00\u4e2a\u547d\u4ee4\u5e76\u6267\u884c\uff0c\u68c0\u67e5\u8fd9\u4e2a\u547d\u4ee4\u7684\u6267\u884c\u7ed3\u679c\u662f\u5426\u6b63\u786e<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3d98ef6 elementor-widget elementor-widget-html\" data-id=\"3d98ef6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">10_check_cmd.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/10_check_cmd.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:10_check_cmd.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b10:\u901a\u8fc7\u811a\u672c\u4f20\u53c2\u8f93\u5165\u4efb\u4f55\u4e00\u4e2a\u547d\u4ee4\u5e76\u6267\u884c\uff0c\u68c0\u67e5\u8fd9\u4e2a\u547d\u4ee4\u7684\u6267\u884c\u7ed3\u679c\u662f\u5426\u6b63\u786e\n###########################################\n#1.vars\ncmd=&quot;$@&quot;\n\n\n#2.\u68c0\u67e5\u811a\u672c\u53c2\u6570\u4e2a\u6570\u662f\u5426\u4e3a0\uff08\u8f93\u5165\u662f\u5426\u4e3a\u7a7a\uff09\uff0c\u5982\u679c\u8f93\u5165\u4e3a\u7a7a\u5219\u9000\u51fa\nif [ $# -eq 0 ]\nthen\n\techo &quot;error!!! please input correct command&quot;\n\techo &quot;help: sh $0 cmd&quot;\n\texit 1\nfi\n\n#3.\u6267\u884c\u8f93\u5165\u7684\u547d\u4ee4\uff0c\u8f93\u51fa\u5b9a\u5411\u5230\u7a7a\n$cmd &amp;&gt; \/dev\/null\n\n#4.\u8fdb\u884c\u5224\u65ad\u4e0a\u4e00\u6761\u547d\u4ee4\u7684\u8fd4\u56de\u503c\uff0c\u4e3a0\u5219\u6210\u529f\nif [ $? -eq 0 ]\nthen\n\techo &quot;${cmd} success!&quot;\nelse\n\techo &quot;${cmd} error!&quot;\nfi\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-84a64c5 elementor-widget elementor-widget-heading\" data-id=\"84a64c5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B11%EF%BC%9Afor%E5%BE%AA%E7%8E%AF%E6%89%93%E5%8D%B0%E4%B8%8B%E9%9D%A2%E8%BF%99%E4%B8%80%E6%AE%B5%E8%AF%9D%E4%B8%AD%E5%AD%97%E6%AF%8D%E6%95%B0%E4%B8%8D%E5%A4%A7%E4%BA%8E6%E7%9A%84%E5%8D%95%E8%AF%8D\"><\/span>\u6848\u4f8b11\uff1afor\u5faa\u73af\u6253\u5370\u4e0b\u9762\u8fd9\u4e00\u6bb5\u8bdd\u4e2d\u5b57\u6bcd\u6570\u4e0d\u5927\u4e8e6\u7684\u5355\u8bcd<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c455da6 elementor-widget elementor-widget-text-editor\" data-id=\"c455da6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>I am a teacher welcome to my home thanks everybody yes or no<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9c49ba1 elementor-widget elementor-widget-html\" data-id=\"9c49ba1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">11_calc_strings.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/11_calc_strings.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:11_calc_strings.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b11\uff1afor\u5faa\u73af\u6253\u5370\u4e0b\u9762\u8fd9\u4e00\u6bb5\u8bdd\u4e2d\u5b57\u6bcd\u6570\u4e0d\u5927\u4e8e6\u7684\u5355\u8bcd\n###########################################\n\n#I am a teacher welcome to my home thanks everybody yes or no\n#1.vars\nstrs=&quot;I am a teacher welcome to my home thanks everybody yes or no&quot;\nnum=6\n#2.for\nfor str in $strs\ndo\n\t#begin if &lt;= 6 echo $str\n\tif [ ${#str} -le $num ]\n\tthen\n\t\techo &quot;$str&quot;\n\telse\n\t       echo &quot;$str&quot; &amp;&gt;\/dev\/null\t\n\tfi\ndone\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3a0882a elementor-widget elementor-widget-heading\" data-id=\"3a0882a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B12%EF%BC%9A%E4%B9%A6%E5%86%99%E8%84%9A%E6%9C%AC%E6%A3%80%E6%9F%A5%E8%BE%93%E5%85%A5%E7%9A%84%E5%9F%9F%E5%90%8D%EF%BC%88%E4%B8%80%E4%B8%AA%E6%88%96%E5%A4%9A%E4%B8%AA%EF%BC%89%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5ping%E9%80%9A-%E9%80%9A%E8%BF%87read%E5%91%BD%E4%BB%A4%E5%AE%9E%E7%8E%B0\"><\/span>\u6848\u4f8b12\uff1a\u4e66\u5199\u811a\u672c\u68c0\u67e5\u8f93\u5165\u7684\u57df\u540d\uff08\u4e00\u4e2a\u6216\u591a\u4e2a\uff09\u662f\u5426\u53ef\u4ee5ping\u901a--\u901a\u8fc7read\u547d\u4ee4\u5b9e\u73b0<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c52a85b elementor-widget elementor-widget-html\" data-id=\"c52a85b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">12_ping_url.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/12_ping_url.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:12_ping_url.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b12\uff1a\u4e66\u5199\u811a\u672c\u68c0\u67e5\u8f93\u5165\u7684\u57df\u540d\uff08\u4e00\u4e2a\u6216\u591a\u4e2a\uff09\u662f\u5426\u53ef\u4ee5ping\u901a--\u901a\u8fc7read\u547d\u4ee4\u5b9e\u73b0\nsource \/funcs\/func_diy.sh\n#\u8c03\u7528\u4e2a\u4eba\u51fd\u6570\u5e93\n###########################################\n#1.vars:\nread -t 40 -p &quot;please input domains: &quot; urls\n#-t:40s\u5185\u65e0\u8f93\u5165\u5219\u9000\u51fa -p:\u6253\u5370\u540e\u9762\u7684\u63d0\u793a\u4fe1\u606f\n#2.\u68c0\u67e5\u53d8\u91cf\u662f\u5426\u4e3a\u7a7a\nif [ -z $urls ];then\n    echo &quot;Help: \u8bf7\u8f93\u51651\u4e2a\u6216\u591a\u4e2a\u57df\u540d&quot;\nfi\n#3.for\nfor i in ${urls}\ndo\n\tping -c1 ${i} &amp;&gt;\/dev\/null\n\tif [ $? -eq 0 ]\n\tthen\n\t\tredstrongecho &quot;${i} is yes&quot;\n\telse\n\t\tgreenstrongecho &quot;${i} is no&quot;\n\tfi\ndone\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f345719 elementor-widget elementor-widget-heading\" data-id=\"f345719\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B13%EF%BC%9A%E8%AE%A1%E7%AE%97%E5%99%A8%E4%BC%A0%E5%85%A5%E8%84%9A%E6%9C%AC%E4%B8%AD2%E4%B8%AA%E5%8F%82%E6%95%B0%EF%BC%8C%E8%BF%9B%E8%A1%8C%E8%AE%A1%E7%AE%97%EF%BC%8C%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C%E2%91%A0%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%BC%A0%E5%8F%82%E2%91%A1read%E4%BC%A0%E5%8F%82\"><\/span>\u6848\u4f8b13\uff1a\u8ba1\u7b97\u5668\u4f20\u5165\u811a\u672c\u4e2d2\u4e2a\u53c2\u6570\uff0c\u8fdb\u884c\u8ba1\u7b97\uff0c\u8f93\u51fa\u7ed3\u679c\u2460\u547d\u4ee4\u884c\u4f20\u53c2\u2461read\u4f20\u53c2<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e8d029 elementor-widget elementor-widget-html\" data-id=\"8e8d029\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">13_num_calc.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/13_num_calc.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:13_num_calc.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b13\uff1a\u8ba1\u7b97\u5668\u4f20\u5165\u811a\u672c\u4e2d2\u4e2a\u53c2\u6570\uff0c\u8fdb\u884c\u8ba1\u7b97\uff0c\u8f93\u51fa\u7ed3\u679c  \u2460\u547d\u4ee4\u884c\u4f20\u53c2\n###########################################\n#1.vars\nnum1=$1\nnum2=$2\n\n#2.\u68c0\u67e5\u811a\u672c\u53c2\u6570\u4e2a\u6570\u662f\u5426\u4e3a2,\u5982\u679c\u4e0d\u4e3a2\u5219\u8f93\u51fa\u5e2e\u52a9\u4fe1\u606f\u5e76\u9000\u51fa\nif [ $# -ne 2 ]\nthen\n\techo &quot;help: sh $0 num1 num2&quot;\n\texit 3\nfi\n#3.\u68c0\u67e5\u8f93\u5165\u7684\u662f\u5426\u4e3a\u6570\u5b57\nexpr 1 + $num1 + $num2 &amp;&gt;\/dev\/null\nif [ $? -ge 2 ]\nthen\n\techo &quot;sh $0 num1 num2&quot;\n\texit 1\nfi\n\t\n#\u4f7f\u7528awk\u8ba1\u7b97\u52a0\u51cf\u4e58\u9664\njia=`awk -v n1=$num1 -v n2=$num2 &#039;BEGIN{print n1+n2}&#039;`\njian=`awk -v n1=$num1 -v n2=$num2 &#039;BEGIN{print n1-n2}&#039;`\ncheng=`awk -v n1=$num1 -v n2=$num2 &#039;BEGIN{print n1*n2}&#039;`\nchu=`awk -v n1=$num1 -v n2=$num2 &#039;BEGIN{print n1\/n2}&#039;`\n#4.\u6309\u7167\u4e24\u79cd\u683c\u5f0f\u8f93\u51fa\u8fd0\u7b97\u7ed3\u679c\ncat &lt;&lt;EOF\n$num1 + $num2 = $jia\n$num1 - $num2 = $jian\n$num1 * $num2 = $cheng\n$num1 \/ $num2 = $chu\nEOF\necho &quot;\n$num1 + $num2 = $jia\n$num1 - $num2 = $jian\n$num1 * $num2 = $cheng\n$num1 \/ $num2 = $chu&quot;\n\n#3.\u76f4\u63a5\u8ba1\u7b97\u5e76\u8f93\u51fa\necho &quot;$1 + $2=`echo $num1 + $num2 | bc -l`&quot;\necho &quot;$1 - $2=`echo $num1 - $num2 | bc -l`&quot;\necho &quot;$1 * $2=`echo &quot;$num1 * $num2&quot; | bc -l`&quot;\necho &quot;$1 \/ $2=`echo $num1 \/ $num2 | bc -l`&quot;\n\necho &quot;$1 + $2= `awk -v a=$num1 -v b=$num2 &#039;BEGIN{print a+b}&#039;`&quot;\necho &quot;$1 - $2= `awk -v a=$num1 -v b=$num2 &#039;BEGIN{print a-b}&#039;`&quot;\necho &quot;$1 * $2= `awk -v a=$num1 -v b=$num2 &#039;BEGIN{print a*b}&#039;`&quot;\necho &quot;$1 \/ $2= `awk -v a=$num1 -v b=$num2 &#039;BEGIN{print a\/b}&#039;`&quot;\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-72913ab elementor-widget elementor-widget-html\" data-id=\"72913ab\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">14_num_calc_read.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/14_num_calc_read.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:13_num_calc_read.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b13\uff1a\u8ba1\u7b97\u5668\u4f20\u5165\u811a\u672c\u4e2d2\u4e2a\u53c2\u6570\uff0c\u8fdb\u884c\u8ba1\u7b97\uff0c\u8f93\u51fa\u7ed3\u679c  \u2461read\u4f20\u53c2\n###########################################\n#1.vars\nread -p &quot;please input two parmeters: &quot; num1 num2\n\n#\u68c0\u67e5\u811a\u672c\u8f93\u5165\u662f\u5426\u4e3a\u7a7a\uff0c\u6700\u591a\u6709\u4e00\u4e2a\u4e3a\u7a7a\u5219\u9000\u51fa\nif [ -z &quot;$num1&quot; -o -z &quot;$num2&quot; ]\nthen\n\techo &quot;help: sh $0 num1 num2&quot;\n\texit 1\nfi\n#2.\u68c0\u67e5\u53c2\u6570\u662f\u5426\u4e3a\u6570\u5b57\nexpr 1 + $num1 + $num2 &amp;&gt;\/dev\/null\nif [ $? -gt 1 ]\nthen\n\techo &quot;error, need input two numbers&quot;\n\texit 2\nfi\n\n#3.\u8fdb\u884c\u8ba1\u7b97\n#\u4f7f\u7528 bc\u8ba1\u7b97\u5e76\u76f4\u63a5\u8f93\u51fa\u7ed3\u679c\necho &quot;$num1 + $num2= `echo $num1+$num2 | bc -l`&quot;\necho &quot;$num1 - $num2= `echo $num1-$num2 | bc -l`&quot;\necho &quot;$num1 * $num2= `echo $num1*$num2 | bc -l`&quot;\necho &quot;$num1 \/ $num2= `echo $num1\/$num2 | bc -l`&quot;\n#\u4f7f\u7528 awk\u8ba1\u7b97\u5e76\u8f93\u51fa\njia=`awk -v a=$num1 -v b=$num2 &#039;BEGIN{ print a+b}&#039;`\njian=`awk -v a=$num1 -v b=$num2 &#039;BEGIN{print a-b}&#039;`\ncheng=`awk -v a=$num1 -v b=$num2 &#039;BEGIN{print a*b}&#039;`\nchu=`awk -v a=$num1 -v b=$num2 &#039;BEGIN{print a\/b}&#039;`\ncat &lt;&lt;EOF\n$num1 + $num2 = $jia\n$num1 - $num2 = $jian\n$num1 * $num2 = $cheng\n$num1 \/ $num2 = $chu\nEOF\n\n\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3ead36e elementor-widget elementor-widget-heading\" data-id=\"3ead36e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B17%EF%BC%9A%E9%80%9A%E8%BF%87%E8%84%9A%E6%9C%AC%E4%BC%A0%E5%8F%82%E6%96%B9%E5%BC%8F%E4%BC%A0%E8%BE%931%E4%B8%AA%E5%8F%82%E6%95%B0%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E4%B8%BA%E6%96%87_%E4%BB%B6%E6%98%AF%E5%90%A6%E4%B8%BA%E7%9B%AE%E5%BD%95%E6%98%AF%E5%90%A6%E5%85%B7%E6%9C%89%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90%EF%BC%88%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%AF%94%E8%BE%83%EF%BC%89\"><\/span>\u6848\u4f8b17\uff1a\u901a\u8fc7\u811a\u672c\u4f20\u53c2\u65b9\u5f0f\u4f20\u8f931\u4e2a\u53c2\u6570,\u5224\u65ad\u662f\u5426\u4e3a\u6587\n\u4ef6,\u662f\u5426\u4e3a\u76ee\u5f55,\u662f\u5426\u5177\u6709\u6267\u884c\u6743\u9650.\uff08\u5b57\u7b26\u4e32\u6bd4\u8f83\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ee04b0 elementor-widget elementor-widget-html\" data-id=\"6ee04b0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">17_check_file.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/17_check_file.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:17_check_file.sh\n# Version:V3.0\n# Author:zhangpeng\n# Organization:linuxjk.cn\n# Desc: \u68c0\u67e5\u662f\u5426\u4e3a\u6587\u4ef6,\u662f\u5426\u4e3a\u76ee\u5f55,\u662f\u5426\u5177\u6709\u6267\u884c\u6743\u9650.\u589e\u5f3a\u6587\u4ef6\u7c7b\u578b\u68c0\u6d4b\uff08\u652f\u6301\u8f6f\u94fe\u63a5\uff09\n###########################################\n\n# \u53c2\u6570\u68c0\u67e5\n[ $# -ne 1 ] &amp;&amp; { echo &quot;\u7528\u6cd5: sh $0 \u6587\u4ef6\/\u76ee\u5f55&quot;; exit 1; }\n\nfile=&quot;$1&quot;\n\n# \u5b58\u5728\u6027\u68c0\u67e5\n[ ! -e &quot;$file&quot; ] &amp;&amp; { echo &quot;\u9519\u8bef\uff1a$file \u4e0d\u5b58\u5728\uff01&quot;; exit 1; }\n\n# \u7c7b\u578b\u68c0\u6d4b\uff08\u6309\u68c0\u6d4b\u987a\u5e8f\u6392\u5e8f\uff09\n#\u5982\u679c\u8f6f\u8fde\u63a5\u6307\u5411\u6587\u4ef6\/\u76ee\u5f55\uff0c\u5148\u68c0\u6d4b-f\/-d\u4f1a\u68c0\u6d4b\u8f6f\u8fde\u63a5\u6307\u5411\u7684\u90a3\u4e2a\u6587\u4ef6\/\u76ee\u5f55\uff0c\u6240\u4ee5\u5148\u68c0\u6d4b\u8f6f\u8fde\u63a5\nif [ -L &quot;$file&quot; ]; then\n    type=&quot;\u8f6f\u94fe\u63a5&quot;\n   # target=$(readlink -f &quot;$file&quot;)\n    \n    # \u68c0\u67e5\u76ee\u6807\u6587\u4ef6\u6743\u9650\n    if [ -x &quot;$target&quot; ]; then\n        perm=&quot;\u76ee\u6807\u6587\u4ef6\u6709\u6267\u884c\u6743\u9650&quot;\n    else\n        perm=&quot;\u76ee\u6807\u6587\u4ef6\u65e0\u6267\u884c\u6743\u9650&quot;\n    fi\n    \nelif [ -f &quot;$file&quot; ]; then\n    type=&quot;\u666e\u901a\u6587\u4ef6&quot;\n    [ -x &quot;$file&quot; ] &amp;&amp; perm=&quot;\u6709\u6267\u884c\u6743\u9650&quot; || perm=&quot;\u6ca1\u6709\u6267\u884c\u6743\u9650&quot;\n    \nelif [ -d &quot;$file&quot; ]; then\n    type=&quot;\u76ee\u5f55&quot;\n    [ -x &quot;$file&quot; ] &amp;&amp; perm=&quot;\u6709\u6267\u884c\u6743\u9650&quot; || perm=&quot;\u65e0\u6267\u884c\u6743\u9650&quot;\n    \nelse\n    echo &quot;$file \u5b58\u5728\uff0c\u4f46\u65e0\u6cd5\u8bc6\u522b\u7c7b\u578b\uff08\u53ef\u80fd\u662f\u8bbe\u5907\u6587\u4ef6\u3001\u7ba1\u9053\u6587\u4ef6\u7b49\uff09&quot;\n    exit 1\nfi\n\necho &quot;$file \u7c7b\u578b\uff1a${type}\uff0c${perm}&quot;\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-337709c elementor-widget elementor-widget-html\" data-id=\"337709c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">17_check_file_easy.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/17_check_file_easy.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:17_check_file_1.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u68c0\u67e5\u662f\u5426\u4e3a\u6587\u4ef6,\u662f\u5426\u4e3a\u76ee\u5f55,\u662f\u5426\u5177\u6709\u6267\u884c\u6743\u9650.(\u7b80\u5316\u7248)\n###########################################\n\n#1.vars\nfile=$1\n\n#2.\u68c0\u67e5\u53c2\u6570\u4e2a\u6570\u662f\u5426\u4e3a1\n[ $# -ne 1 ] &amp;&amp; {\n\techo &quot;help: sh $0 file&quot;\n        exit 1\n}\n#3.-d \u68c0\u67e5\u662f\u5426\u4e3a\u76ee\u5f55\nif [ -d $file ]\nthen\n\techo &quot;$file is dir&quot;\nelse\n\techo &quot;$file is not a dir&quot;\nfi\n\n#4.-f \u68c0\u67e5\u662f\u5426\u4e3a\u6587\u4ef6\nif [ -f $file ]\nthen\n\techo &quot;$file is file&quot;\nelse\n\techo &quot;$file is not a file&quot;\nfi\n#5. -x \u68c0\u67e5\u662f\u5426\u5177\u6709\u6267\u884c\u6743\u9650.\nif [ -x $file ];then\n\t\techo &quot;$file has +x&quot;\nelse\n\t\techo &quot;$file has not +x&quot;\nfi\n\n#6.-L \u68c0\u67e5\u662f\u5426\u4e3a\u8f6f\u8fde\u63a5\nif [ -L $file ];then\n\techo &quot;$file is a softlink&quot;\nelse\n\techo &quot;$file is not a softlink&quot;\nfi\n\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c65442b elementor-widget elementor-widget-heading\" data-id=\"c65442b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B18-%E6%A3%80%E6%9F%A5selinux%E6%98%AF%E5%90%A6%E5%85%B3%E9%97%AD%E8%84%9A%E6%9C%AC%E5%A6%82%E6%9E%9C%E6%B2%A1%E6%9C%89%E5%85%B3%E9%97%AD%E6%8F%90%E7%A4%BA%E6%98%AF%E5%90%A6%E8%A6%81%E5%85%B3%E9%97%ADyes%E5%88%99%E5%85%B3%E9%97%AD%E5%85%B6%E4%BB%96%E5%B0%B1%E4%B8%8D%E5%85%B3%E9%97%AD\"><\/span>\u6848\u4f8b18-\u68c0\u67e5selinux\u662f\u5426\u5173\u95ed\u811a\u672c,\u5982\u679c\u6ca1\u6709\u5173\u95ed\u63d0\u793a\u662f\u5426\u8981\u5173\u95ed,yes\u5219\u5173\u95ed,\u5176\u4ed6\u5c31\u4e0d\u5173\u95ed<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-78f77f1 elementor-widget elementor-widget-html\" data-id=\"78f77f1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">18_check_selinux.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/18_check_selinux.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:18_check_selinux.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u68c0\u67e5selinux\u662f\u5426\u5173\u95ed\uff0c\u5982\u679c\u672a\u5173\u95ed\uff0c\u63d0\u793a\u662f\u5426\u8981\u5173\u95ed\uff0cyes\u5219\u5173\u95ed\uff0c\u5176\u4ed6\u5c31\u4e0d\u5173\u95ed\n###########################################\n#1.vars\n#\/etc\/selinux\/config\u4e2d\u663e\u793a\u7684SELINUX=$perm\n#getenforce\u663e\u793a\u7684$temp\n\n#2.\u53d6\u51fa\u914d\u7f6e\u6587\u4ef6\/\u547d\u4ee4\u884c\u4e2dselinx\u7684\u72b6\u6001\n#awk -F= &#039;\/^SELINUX=\/ {print $2}&#039; \/etc\/selinux\/config\nperm=`sed -nr &#039;\/^SELINUX=\/p&#039; \/etc\/selinux\/config | awk -F= &#039;{print $NF}&#039;`\ntemp=`getenforce`\n#3.\u5224\u65ad\u5b57\u7b26\u4e32\u662f\u5426\u4e3a\u7a7a\nif [[ -z &quot;$perm&quot;  ||  -z &quot;$temp&quot; ]]\nthen\n\techo &quot;\u65e0\u6cd5\u83b7\u53d6selinux\u7b56\u7565\uff1a\u8bf7\u68c0\u67e5\u914d\u7f6e\u6587\u4ef6\uff1a\/etc\/selinux\/config&quot;\n\texit 1\nfi\n\n#3.\u5224\u65ad\u4ee5\u4e0a\u4e24\u4e2a\u5b57\u7b26\u4e32\u662f\u5426\u540c\u65f6\u7b49\u4e8edisabled\u2192\u2192\u2192selinux\u5f7b\u5e95\u5173\u95ed\nif [[ &quot;$perm&quot; = &quot;disabled&quot; ]] &amp;&amp;  { [[ &quot;$temp&quot; = Disabled ]] ||  [[ &quot;$temp&quot; = Permissive ]] ;}\nthen\n\techo &quot;SELINUX \u5df2\u7ecf\u5173\u95ed&quot;\n\texit 1\nelse\n\t \n#4.\u6b64\u65f6\u9700\u8981\u7528\u6237\u8f93\u5165\u662f\u5426\u8981\u5173\u95ed\uff0cyes\n        read -p &quot;SELINUX\u672a\u5173\u95ed\uff0c\u662f\u5426\u5173\u95edselinux:\u5173\u95ed\u8bf7\u8f93\u5165yes\uff1a&quot; input\n\tif [ &quot;$input&quot; = yes ];then\n\t\tsed -i &quot;s#SELINUX=.*#SELINUX=disabled#g&quot; \/etc\/selinux\/config\n\t\tsetenforce 0\n\t\techo &quot;\u5df2\u5173\u95edselinux\uff0c\u91cd\u542f\u751f\u6548&quot;\n\t\texit 1\n\telse\n\t\techo &quot;selinux is $temp&quot;\n\t\texit 1\n\tfi\nfi\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5bb3a7d elementor-widget elementor-widget-html\" data-id=\"5bb3a7d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">18_check_selinux_easy.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/18_check_selinux_easy.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:18.check_selinux_1.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b18-\u68c0\u67e5selinux\u662f\u5426\u5173\u95ed\u811a\u672c,\u5982\u679c\u6ca1\u6709\u5173\u95ed\u63d0\u793a\u662f\u5426\u8981\u5173\u95ed,yes\u5219\u5173\u95ed,\u5176\u4ed6\u5c31\u4e0d\u5173\u95ed\n###########################################\n#1.vars\nselinux_config=`awk -F= &#039;\/^SELINUX=\/ {print $2}&#039; \/etc\/selinux\/config`\nselinux_cmd=`getenforce`\n#2 \u5224\u65ad\u662f\u5426\u5173\u95ed\n#\u4e24\u4e2a\u6761\u4ef6\u540c\u65f6\u6210\u7acb\u5728[]\u4e2d\u9700\u8981\u4f7f\u7528-a\uff0c[ \u6761\u4ef61 -a \u6761\u4ef62 ]\u76f8\u5f53\u4e8e[]&amp;&amp;[]\u6216[[ \u6761\u4ef61 &amp;&amp; \u6761\u4ef62 ]]\nif [ &quot;$selinux_config&quot; = &quot;disabled&quot; -a &quot;$selinux_cmd&quot; = &quot;Disabled&quot; ]\nthen\n\techo &quot;SELINUX\u5df2\u7ecf\u5173\u95ed&quot;\nelse\n\tread -p &quot;\u662f\u5426\u5173\u95edselinux\uff0c\u8bf7\u8f93\u5165yes\/no: &quot; xuan\n\tif [ &quot;$xuan&quot; = &quot;yes&quot; ];then\n\t\tsed -i &#039;\/^SELINUX=\/s#=.*#=disabled#g&#039; \/etc\/selinux\/config\n\t\tsetenforce 0\n\t\techo &quot;\u5173\u95ed\u6210\u529f\uff01&quot;\n\telse\n\t\techo &quot;SELINUX \u672a\u5173\u95ed\uff01&quot;\n\tfi\nfi\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dfecb91 elementor-widget elementor-widget-heading\" data-id=\"dfecb91\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B20%EF%BC%9A_%E4%B9%A6%E5%86%99%E4%B8%80%E4%B8%AA%E8%84%9A%E6%9C%AC%E9%80%9A%E8%BF%87read%E8%AF%BB%E5%8F%96%E8%BE%93%E5%85%A5%E5%88%A4%E6%96%AD_%E8%BE%93%E5%85%A5%E6%98%AF%E6%95%B4%E6%95%B0%E6%B5%AE%E7%82%B9%E6%95%B0%E5%B0%8F%E6%95%B0%E8%BF%98%E6%98%AF%E5%AD%97%E7%AC%A6\"><\/span>\u6848\u4f8b20\uff1a \u4e66\u5199\u4e00\u4e2a\u811a\u672c\u901a\u8fc7read\u8bfb\u53d6\u8f93\u5165,\u5224\u65ad\n\u8f93\u5165\u662f\u6574\u6570,\u6d6e\u70b9\u6570(\u5c0f\u6570),\u8fd8\u662f\u5b57\u7b26.<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-309c065 elementor-widget elementor-widget-html\" data-id=\"309c065\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">20_check_type.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/20_check_type.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:20_check_type.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b20\uff1a \u4e66\u5199\u4e00\u4e2a\u811a\u672c\u901a\u8fc7read\u8bfb\u53d6\u8f93\u5165,\u5224\u65ad\u8f93\u5165\u6570\u636e\u7c7b\u578b\uff08\u6574\u6570\/\u6d6e\u70b9\/\u5b57\u7b26\u4e32\uff09\n###########################################\n\n#1. \u83b7\u53d6\u8f93\u5165\nread -p &quot;pls input: &quot; input\n\n#2. \u68c0\u67e5\u8f93\u5165\u975e\u7a7a\nif [ -z &quot;$input&quot; ]; then\n    echo &quot;error Help: sh $0 input&quot;\n    exit 1\nfi\n\n#3. \u5224\u65ad\u6570\u636e\u7c7b\u578b\nif [[ $input =~ ^[+-]?[0-9]+$ ]]; then           # \u6574\u6570\uff08\u542b\u6b63\u8d1f\uff09\n    echo &quot;zhengshu&quot;\nelif [[ $input =~ ^[+-]?[0-9]+\\.[0-9]+$ ]]; then  # \u6d6e\u70b9\u6570\uff08\u542b\u6b63\u8d1f\uff09\n    echo &quot;fudian&quot;\nelif [[ $input =~ ^[a-zA-Z0-9]+$ ]]; then        # \u7eaf\u5b57\u6bcd\u6570\u5b57\u7ec4\u5408\u5b57\u7b26\u4e32\n    echo &quot;str&quot;\nelse\n    echo &quot;unknown data&quot;\nfi\nexit 0\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd1e743 elementor-widget elementor-widget-heading\" data-id=\"dd1e743\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B21_%E4%B9%A6%E5%86%99%E6%9C%8D%E5%8A%A1%E6%A3%80%E6%9F%A5%E8%84%9A%E6%9C%AC%E6%89%A7%E8%A1%8C%E7%9A%84%E6%97%B6%E5%80%99%E8%BE%93%E5%85%A5%E6%9C%8D%E5%8A%A1%E5%90%8D%E5%AD%97%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E8%BF%90_%E8%A1%8C%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%BC%80%E5%90%AF%E8%87%AA%E5%90%AF%E5%8A%A8\"><\/span>\u6848\u4f8b21: \u4e66\u5199\u670d\u52a1\u68c0\u67e5\u811a\u672c,\u6267\u884c\u7684\u65f6\u5019\u8f93\u5165\u670d\u52a1\u540d\u5b57\u68c0\u67e5\u662f\u5426\u8fd0\n\u884c,\u68c0\u67e5\u662f\u5426\u5f00\u542f\u81ea\u542f\u52a8.<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9205530 elementor-widget elementor-widget-html\" data-id=\"9205530\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">21_check_service.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/21_check_service.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name: 21_check_service.sh\n# Version: V1.1\n# Author: zhangpeng\n# Organization: linuxjk.cn\n# Desc: \u670d\u52a1\u72b6\u6001\u68c0\u67e5\u811a\u672c\n##########################################\n\n# 1. \u83b7\u53d6\u670d\u52a1\u540d\u79f0read -r\u7981\u7528\u8f6c\u4e49\u7b26\nread -rp &quot;Please input a service name: &quot; service\n\n# 2. \u68c0\u67e5\u8f93\u5165\u662f\u5426\u4e3a\u7a7a\nif [ -z &quot;$service&quot; ]; then\n    echo &quot;Usage: sh $0 &lt;service_name&gt;&quot;\n    exit 1\nfi\n\n# 3. \u68c0\u67e5\u670d\u52a1\u662f\u5426\u5b58\u5728--type\u786e\u4fdd\u53ea\u68c0\u67e5\u670d\u52a1\u6587\u4ef6\n# \u76f4\u63a5\u901a\u8fc7 systemctl \u67e5\u8be2\uff08\u65e0\u9700\u7ba1\u9053\uff09\n#if ! systemctl list-unit-files --type=service &quot;$service.service&quot; &amp;&gt;\/dev\/null\nif ! systemctl list-unit-files --type=service | grep -qw &quot;^$service.service&quot;; then\n    echo &quot;Error: Service &#039;$service&#039; does not exist.&quot;\n    exit 2\nfi\n\n# 4. \u83b7\u53d6\u72b6\u6001\u4fe1\u606f\nrun=$(systemctl is-active &quot;$service&quot;)\nauto=$(systemctl is-enabled &quot;$service&quot;)\n\n# 5. \u5224\u65ad\u903b\u8f91\u4f18\u5316\n# \u4fee\u6b63\u540e\u7684\u4ee3\u7801\u7247\u6bb5\n#systemctl is-active &quot;$service&quot; &amp;&gt;\/dev\/null\n#if [ $? -eq 0 ];then\n#echo &quot;$service is running&quot;\n#else\n#echo &quot;$service is running&quot;\n#fi\n#\u548c\u4e0b\u9762\u7684\u683c\u5f0f\u4e0d\u540c\u6548\u679c\u4e00\u6837\uff1a\u547d\u4ee4\u8fd4\u56de\u503c\u4e3a0\u5219\u6b63\u786e\u8f93\u51fa\uff0c\u4e0d\u4e3a0\u8fdb\u5165else\uff0c\n#\u628a\u547d\u4ee4\u653e\u5728if\u540e\u7684\u5f0a\u7aef\uff1a\u7c7b\u4f3c\u4e8eexpr\u90a3\u79cd\u6210\u529f\u7684\u8fd4\u56de\u503c\u4e3a0\u62161 \u7684\u547d\u4ee4\u4e0d\u884c\nif systemctl is-active &quot;$service&quot; &amp;&gt;\/dev\/null\nthen\n\techo &quot;$service is running&quot;\nelse\n\techo &quot;$service is not runing&quot;\nfi\n\nif systemctl is-enabled &quot;$service&quot; &amp;&gt;\/dev\/null\nthen\n\techo &quot;$service is enabled&quot;\nelse\n\techo &quot;$service is disenabled&quot;\nfi\n\n\n\n\n\n\n\n\n\n\n\n\n\n#if [ &quot;$run&quot; = &quot;active&quot; ]; then\n#    status1=&quot;running&quot;\n#else\n#    status1=&quot;not running&quot;\n#fi\n\n#if [ &quot;$auto&quot; = &quot;enabled&quot; ]; then\n#    status2=&quot;enabled&quot;\n#else\n#    status2=&quot;disabled&quot;\n#fi\n\n#if [ &quot;$run&quot; = &quot;active&quot; ] &amp;&amp; [ &quot;$auto&quot; = &quot;enabled&quot; ]; then\n#    echo &quot;$service is $status1, and $status2&quot;\n#elif [ &quot;$run&quot; = &quot;active&quot; ] &amp;&amp; [ &quot;$auto&quot; != &quot;enabled&quot; ]; then\n#    echo &quot;$service is $status1&quot;\n#elif [ &quot;$auto&quot; = &quot;disabled&quot; ] &amp;&amp; [ &quot;$run&quot; = &quot;active&quot; ]; then\n#    echo &quot;$service is $status2&quot;\n#else\n#    echo &quot;$service is not running and disabled&quot;\n#    exit 3\n#fi\n#exit 0\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d52b6b elementor-widget elementor-widget-heading\" data-id=\"5d52b6b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B22%EF%BC%9A%E6%A3%80%E6%9F%A5%E7%A3%81%E7%9B%98%E5%88%86%E5%8C%BA%E7%9A%84%E6%83%85%E5%86%B5\"><\/span>\u6848\u4f8b22\uff1a\u68c0\u67e5\u78c1\u76d8\u5206\u533a\u7684\u60c5\u51b5<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ee1b7bd elementor-widget elementor-widget-html\" data-id=\"ee1b7bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">22_check_disk.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/22_check_disk.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:22_check_disk.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u68c0\u67e5\u78c1\u76d8\u5206\u533a\u60c5\u51b51.\u6709\u51e0\u4e2a\u5206\u533a2.\u6bcf\u4e2a\u5206\u533a\u4f7f\u7528\u7387\uff0c\u8d85\u8fc770%\u663e\u793a\u78c1\u76d8\u7a7a\u95f4\u4e0d\u8db3\uff0c\u6ca1\u8d85\u8fc7\u663e\u793a\u5f02\u5e38\n###########################################\n#1.vars\n#\u5206\u533a\u6570\u91cf\npart_cnt=`egrep -v &#039;^$|#|swap&#039; \/etc\/fstab | wc -l`\n#\u5206\u533a\u540d\u5b57\npart_names=`egrep -v &#039;^$|#|swap&#039; \/etc\/fstab | awk &#039;{print $2}&#039;`\n\n#2.for \u5faa\u73af\u4f9d\u6b21\u5904\u7406\nfor part  in $part_names\ndo\n\tsize=`df -h $part | awk &#039;NR==2{print $2}&#039;`\n\tuselv=`df -h $part | awk -F &#039;[ %]+&#039; &#039;NR==2{print $5}&#039;`\n\tif [ &quot;$uselv&quot; -le 70 ]  ;then\n\techo &quot;$part \u78c1\u76d8\u5927\u5c0f\uff1a$size,\u4f7f\u7528\u7387\uff1a $uselv%\uff0c\u7a7a\u95f4\u6b63\u5e38&quot;\nelse\n\techo &quot;$part \u78c1\u76d8\u5927\u5c0f\uff1a$size,\u4f7f\u7528\u7387\uff1a $uselv%\uff0c\u7a7a\u95f4\u4e0d\u8db3\uff01\uff01\uff01&quot;\n\tlet i++\n\tfi\ndone\necho &quot;\u78c1\u76d8\u5206\u533a\u6570\u91cf\uff1a$part_cnt&quot;\necho &quot;\u78c1\u76d8\u5206\u533a\u7a7a\u95f4\u4e0d\u8db3\u5206\u533a\u6570\u91cf\uff1a ${i:-0}&quot;\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cdeadf7 elementor-widget elementor-widget-heading\" data-id=\"cdeadf7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B23%EF%BC%9A%E4%B9%A6%E5%86%99%E5%A4%9A%E5%88%86%E6%94%AF%E6%A0%BC%E5%BC%8F%E6%AF%94%E8%BE%83%E5%A4%A7%E5%B0%8F%E8%84%9A%E6%9C%AC\"><\/span>\u6848\u4f8b23\uff1a\u4e66\u5199\u591a\u5206\u652f\u683c\u5f0f\u6bd4\u8f83\u5927\u5c0f\u811a\u672c<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-13622ad elementor-widget elementor-widget-html\" data-id=\"13622ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">23_num_compare.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/23_num_compare.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:23_num_compare.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u591a\u5206\u652f\u683c\u5f0f\u6bd4\u8f83\u4e24\u4e2a\u6570\u5b57\u5927\u5c0f\n###########################################\n#1.vars\nread -p &quot;\u8bf7\u8f93\u5165\u4e24\u4e2a\u6570\u5b57\u8fdb\u884c\u6bd4\u8f83\u5927\u5c0f: &quot; num1 num2\n#2.\u5224\u65ad\u8f93\u5165\u662f\u5426\u4e3a\u7a7a\nif [ -z $num1 ] || [ -z $num2 ]\nthen\n\techo &quot;Help: sh $0 num1 num2&quot;\n\texit 1\nfi\n#3.\u5224\u65ad\u8f93\u5165\u662f\u5426\u4e3a\u6570\u5b57\n# expr 1 + $num1 + num2 &amp;&gt;\/dev\/null\n#if [ $? -ge 2 ]\n#\techo &quot;\u8bf7\u8f93\u5165\u6570\u5b57 \u683c\u5f0f\uff1ash $0 num1 num2&quot;\n#\texit 2\n#fi\n#\u5b57\u7b26\u4e32\u6bd4\u8f83\u662f\u5426\u4e3a\u6570\u5b57\uff08\u7e41\u7410\uff09\nif [[ ! $num1 =~ ^[+-]?[0-9]+(\\.[0-9]+)?$ ]] || [[ ! $num2 =~ ^[+-]?[0-9]+(\\.[0-9]+)?$ ]]\nthen\n\techo &quot;\u8bf7\u8f93\u5165\u6570\u5b57 \u683c\u5f0f\uff1ash $0 num1 num2&quot;\n\texit 2\nfi\n\n#4.\u6bd4\u8f83\u5927\u5c0f\nif [ $num1 -gt $num2 ];then\n\techo &quot;$num1 &gt; $num2&quot;\nelif [ $num1 -lt $num2 ];then\n\techo &quot;$num1 &lt; $num2&quot;\nelse\n\techo &quot;$num1 == $num2&quot;\nfi\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-72a9cc4 elementor-widget elementor-widget-heading\" data-id=\"72a9cc4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B24%EF%BC%9A%E6%A0%B9%E6%8D%AE%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E4%B8%8D%E5%90%8C%E4%BD%BF%E7%94%A8%E7%8E%87%E8%AE%BE%E7%BD%AE%E4%B8%8D%E5%90%8C%E7%9A%84%E8%AD%A6%E5%91%8A%E6%8F%90%E7%A4%BA\"><\/span>\u6848\u4f8b24\uff1a\u6839\u636e\u78c1\u76d8\u7a7a\u95f4\u4e0d\u540c\u4f7f\u7528\u7387\u8bbe\u7f6e\u4e0d\u540c\u7684\u8b66\u544a\u63d0\u793a<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7ac7f73 elementor-widget elementor-widget-html\" data-id=\"7ac7f73\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">24_check_disk.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/24_check_disk.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:22_check_disk.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u68c0\u67e5\u78c1\u76d8\u5206\u533a\u60c5\u51b51.\u6709\u51e0\u4e2a\u5206\u533a2.\u6bcf\u4e2a\u5206\u533a\u4f7f\u7528\u7387\uff0c\u6839\u636e\u4e0d\u540c\u4f7f\u7528\u7387\u8bbe\u7f6e\u4e0d\u540c\u7684\u8b66\u544a\u63d0\u793a\n###########################################\n#1.vars\n#\u5206\u533a\u6570\u91cf\npart_cnt=`egrep -v &#039;^$|#|swap&#039; \/etc\/fstab | wc -l`\n#\u5206\u533a\u540d\u5b57\npart_names=`egrep -v &#039;^$|#|swap&#039; \/etc\/fstab | awk &#039;{print $2}&#039;`\n\n\n#2.for \u5faa\u73af\u4f9d\u6b21\u5904\u7406\nfor part  in $part_names\ndo\n\tsize=`df -h $part | awk &#039;NR==2{print $2}&#039;`\n\tuselv=`df -h $part | awk -F &#039;[ %]+&#039; &#039;NR==2{print $5}&#039;`\n#\u6839\u636e\u4e0d\u540c\u4f7f\u7528\u7387\u8bbe\u7f6e\u4e0d\u540c\u7684\u8b66\u544a\u63d0\u793a\nif [ $uselv -ge 60 ] &amp;&amp; [ $uselv -le 70 ]\nthen\n\tmsg=&quot;\u8b66\u544a&quot;\n\tlet i++\nelif [ $uselv -ge 70 ] &amp;&amp; [ $uselv -le 80 ];then\n\tmsg=&quot;\u4e25\u91cd&quot;\n\tlet i++\t\nelif [ $uselv -ge 80 ] &amp;&amp; [ $uselv -le 90 ];then\n\tmsg=&quot;\u6545\u969c&quot;\n\tlet i++\nelif [ $uselv -ge 90 ] &amp;&amp; [ $uselv -le 100 ];then\n\tmsg=&quot;\u707e\u96be&quot;\n\tlet i++\nelse\n\tmsg=&quot;\u78c1\u76d8\u7a7a\u95f4\u5145\u8db3\uff0c\u5229\u7528\u7387\u4e3a $uselv&quot;\nfi\necho &quot;$part \u5927\u5c0f\uff1a$size $msg%&quot;\n\ndone\necho &quot;\u78c1\u76d8\u5206\u533a\u6570\u91cf\uff1a$part_cnt&quot;\necho &quot;\u78c1\u76d8\u7a7a\u95f4\u4e0d\u8db3\u5206\u533a\u6570\u91cf\uff1a${i:-0}&quot;\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a07e1ba elementor-widget elementor-widget-heading\" data-id=\"a07e1ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B25%EF%BC%9A%E8%BE%93%E5%87%BA%E6%8C%87%E5%AE%9A%E7%94%A8%E6%88%B7%E4%BF%A1%E6%81%AF%EF%BC%88%E7%94%A8%E6%88%B7%E5%B7%A1%E6%A3%80%E8%84%9A%E6%9C%AC%EF%BC%89%EF%BC%8C%E6%9C%AA%E6%9D%A5%E5%8F%AF%E4%BB%A5%E5%81%9A%E5%AE%89%E5%85%A8%E6%A3%80%E6%9F%A5\"><\/span>\u6848\u4f8b25\uff1a\u8f93\u51fa\u6307\u5b9a\u7528\u6237\u4fe1\u606f\uff08\u7528\u6237\u5de1\u68c0\u811a\u672c\uff09\uff0c\u672a\u6765\u53ef\u4ee5\u505a\u5b89\u5168\u68c0\u67e5<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1d945ae elementor-widget elementor-widget-html\" data-id=\"1d945ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">25_check_user.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/25_check_user.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:25_check_user.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u7528\u6237\u5de1\u68c0\u811a\u672c\uff0c\u68c0\u67e5\u7528\u6237\u4fe1\u606f\n###########################################\n\n#\u4e00\u6b21\u68c0\u67e5\u4e00\u4e2a\u7528\u6237\n#1.vars\n#read -p &quot;\u8bf7\u8f93\u5165\u7528\u6237\u540d\uff1a&quot; user\n#2.check -z\n#[ -z $user ] &amp;&amp; echo &quot;Help\uff1a sh $0 username&quot; &amp;&amp; exit 1;\n#3.check \u8f93\u5165\u7684\u662f\u5426\u4e3a\u7528\u6237\u540d(\u7528\u6237\u662f\u5426\u5b58\u5728\uff09\n#id $user &amp;&gt;\/dev\/null\n#if [ $? -ne  0 ]\n#then\n#\techo &quot;\u7528\u6237\u4e0d\u5b58\u5728&quot;\n#\texit 2\n#fi\n#\n\n\n#\u4e00\u6b21\u68c0\u67e5\u591a\u4e2a\u7528\u6237\n# \u63d0\u793a\u7528\u6237\u8f93\u5165\u7528\u6237\u540d\uff08\u652f\u6301\u591a\u4e2a\uff0c\u7a7a\u683c\u5206\u9694\uff09\nread -p &quot;\u8bf7\u8f93\u5165\u8981\u68c0\u67e5\u7684\u7528\u6237\u540d\uff08\u591a\u4e2a\u7528\u6237\u540d\u7528\u7a7a\u683c\u5206\u9694\uff09\uff1a&quot; input_names\n\n# \u68c0\u67e5\u8f93\u5165\u662f\u5426\u4e3a\u7a7a\nif [[ -z &quot;$input_names&quot; ]]; then\n    echo &quot;\u9519\u8bef\uff1a\u672a\u63d0\u4f9b\u4efb\u4f55\u7528\u6237\u540d\u3002&quot; &gt;&amp;2\n    exit 1\nfi\n# \u5c06\u8f93\u5165\u8f6c\u6362\u4e3a\u6570\u7ec4\uff08\u517c\u5bb9\u591a\u4e2a\u7a7a\u683c\/\u5236\u8868\u7b26\u5206\u9694\uff09\nnames=($(echo &quot;$input_names&quot; | tr -s &#039; &#039;))  # tr -s &#039; &#039; \u538b\u7f29\u8fde\u7eed\u7a7a\u683c\n#1.vars\nnames=(&quot;$@&quot;)  # \u58f0\u660e\u4e3a\u6570\u7ec4\n# \u68c0\u67e5\u53c2\u6570\u6570\u91cf\nif [ $# -eq 0 ]; then\n    echo &quot;\u9519\u8bef\uff1a\u8bf7\u63d0\u4f9b\u81f3\u5c11\u4e00\u4e2a\u7528\u6237\u540d\u4f5c\u4e3a\u53c2\u6570\u3002&quot;\n    echo &quot;\u7528\u6cd5\uff1abash $0 \u7528\u6237\u540d1 \u7528\u6237\u540d2 ...&quot;\n    exit 1\nfi\n\nfor name in &quot;${names[@]}&quot;; do  # \u6b63\u786e\u904d\u5386\u6570\u7ec4\n    if id &quot;${name}&quot; &amp;&gt;\/dev\/null; then\n        echo &quot;\u7528\u6237 ${name} \u5b58\u5728\u3002&quot;\n        # \u83b7\u53d6\u7528\u6237\u4fe1\u606f\n        passwd_entry=$(getent passwd &quot;${name}&quot;)\n        perm=$(awk -F: &#039;{print $NF}&#039; &lt;&lt;&lt;&quot;$passwd_entry&quot;)\n        [[ &quot;$perm&quot; == &quot;\/bin\/bash&quot; || &quot;$perm&quot; == &quot;\/bin\/zsh&quot; ]] &amp;&amp; login=&quot;\u53ef\u4ee5\u767b\u5f55&quot; || login=&quot;\u4e0d\u53ef\u4ee5\u767b\u5f55&quot;\n        uid=$(id -u &quot;${name}&quot;)\n        gid=$(id -g &quot;${name}&quot;)\n        homedir=$(awk -F: &#039;{print $(NF-1)}&#039; &lt;&lt;&lt;&quot;$passwd_entry&quot;)\n        situation=$(lastlog -u &quot;${name}&quot;)\n\n        # \u8f93\u51fa\u7528\u6237\u4fe1\u606f\n\techo &quot;\u6b63\u5728\u68c0\u67e5\u7528\u6237\uff1a$name&quot;\necho &quot;----------------------------------------&quot;\n        cat &lt;&lt;EOF\n\u7528\u6237 ${name} \u7684\u8be6\u7ec6\u4fe1\u606f\uff1a\n- \u767b\u5f55\u6743\u9650\uff1a${login}\n- UID\uff1a${uid}\n- GID\uff1a${gid}\n- \u5bb6\u76ee\u5f55\uff1a${homedir}\n- \u6700\u8fd1\u767b\u5f55\u60c5\u51b5\uff1a\n${situation}\nEOF\necho &quot;========================================&quot;\n    else\n        echo &quot;\u9519\u8bef\uff1a\u7528\u6237 ${name} \u4e0d\u5b58\u5728\u3002&quot;\n    fi\ndone\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d50720a elementor-widget elementor-widget-heading\" data-id=\"d50720a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B26%EF%BC%9Acase%E8%AF%AD%E5%8F%A5%E6%A0%BC%E5%BC%8F%E2%80%93%E8%8F%9C%E5%8D%95%E9%80%89%E6%8B%A9%E5%8A%9F%E8%83%BD\"><\/span>\u6848\u4f8b26\uff1acase\u8bed\u53e5\u683c\u5f0f\u2013\u83dc\u5355\u9009\u62e9\u529f\u80fd<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a88e46d elementor-widget elementor-widget-html\" data-id=\"a88e46d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">26_taocan.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/26_taocan.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:26_taocan.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b26\uff1acase\u8bed\u53e5\u683c\u5f0f\u2013\u83dc\u5355\u9009\u62e9\u529f\u80fd\n###########################################\n#1.\u8f93\u51fa\u4fe1\u606f\u4f9b\u7528\u6237\u9009\u62e9\ncat &lt;&lt;EOF\n- 1 138\u5957\u9910) \u5403\u9971\u5957\u9910\n- 2 443\u5957\u9910) \u5403\u9971\u559d\u8db3\u5957\u9910\n- 3 888\u5957\u9910) \u5403\u559d\u62c9\u6492\u5957\u9910\n- 4 1688\u5957\u9910) \u4f60\u60f3\u5e72\u5565\u5c31\u5e72\u5565\u5957\u9910\nEOF\nread -p &quot;\u8bf7\u9009\u62e9\u5957\u9910: &quot; taocan\ncase &quot;$taocan&quot; in\n\t1)\n\t\techo &quot;in 1&quot;\n\t\t;;\n\t2)echo &quot;in 2&quot; ;;\n\t3)echo &quot;in 3&quot; ;;\n\t4)echo &quot;in 4&quot; ;;\n\t5)echo &quot;in 5&quot; ;;\n\t*)echo &quot;error pls run again&quot;\nesac\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5fe0246 elementor-widget elementor-widget-heading\" data-id=\"5fe0246\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B27%EF%BC%9A%E5%88%A4%E6%96%AD%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E7%9A%84%E6%98%AFyes%E8%BF%98%E6%98%AFno%EF%BC%88%E9%80%89%E9%A1%B9%E4%B8%AD_%E7%9A%84%E4%BD%BF%E7%94%A8%EF%BC%89\"><\/span>\u6848\u4f8b27\uff1a\u5224\u65ad\u7528\u6237\u8f93\u5165\u7684\u662fyes\u8fd8\u662fno\uff08\u9009\u9879\u4e2d| \u7684\u4f7f\u7528\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-847aa90 elementor-widget elementor-widget-html\" data-id=\"847aa90\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">27_yes_no.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/27_yes_no.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:27_yes_no.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b27\uff1a\u5224\u65ad\u7528\u6237\u8f93\u5165\u7684\u662fyes\u8fd8\u662fno\uff08case\u83dc\u5355\u9009\u9879\u4e2d| \u7684\u4f7f\u7528\uff09\n###########################################\nread -p &quot;please input yes or no: &quot; yesno\ncase &quot;$yesno&quot; in\n#\uff09\u524d\u53ef\u4ee5\u7528|\u5206\u5272\u591a\u4e2a\u540c\u4e49\u8bcd\uff0c\u7ed3\u679c\u90fd\u6307\u5411\uff09\u540e\u6267\u884c\u7684\u64cd\u4f5c\n\tyes|Yes|y|Y) echo yes;;\n\tno|n|N|No) echo no;;\n\t*) echo ???\nesac\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-132ac19 elementor-widget elementor-widget-heading\" data-id=\"132ac19\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B28%EF%BC%9A%E5%87%BD%E6%95%B0%E5%9F%BA%E6%9C%AC%E6%A0%BC%E5%BC%8F%E5%8F%8A%E4%BD%BF%E7%94%A8\"><\/span>\u6848\u4f8b28\uff1a\u51fd\u6570\u57fa\u672c\u683c\u5f0f\u53ca\u4f7f\u7528<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ed16a76 elementor-widget elementor-widget-html\" data-id=\"ed16a76\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">28_test_func.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/28_test_func.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:28_test_func.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b28\uff1a\u51fd\u6570\u57fa\u672c\u683c\u5f0f\u53ca\u4f7f\u7528\n###########################################\nfunction show() {\necho &quot;welcome to oldboy linux lidao996 class&quot;\necho &quot;\u4f60\u7684\u76ee\u6807\uff1a\u62ff\u4e0b15k offer&quot;\necho &quot;\u4f60\u7684\u76ee\u6807\uff1a\u62ff\u4e0b100+ shell\u811a\u672c&quot;\necho &quot;\u4f60\u7684\u76ee\u6807\uff1a\u4e66\u5199\u603b\u5171\u8d85\u8fc75000\u884c\u811a\u672c\u3002&quot;\nreturn 0\n}\nshow\n#\u8fd9\u884c\u8868\u793a\u8fd0\u884c\u4e0a\u9762\u521a\u5b9a\u4e49\u7684show\u51fd\u6570\uff0c\u4f5c\u7528\u540c\u4e0b\u9762\u8fd9\u79cd\n#function main(){\n#    show\n#}\n#main<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c4029cd elementor-widget elementor-widget-heading\" data-id=\"c4029cd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B29%EF%BC%9A%E5%87%BD%E6%95%B0%E4%BC%A0%E5%8F%82%E7%9A%84%E4%BD%BF%E7%94%A8\"><\/span>\u6848\u4f8b29\uff1a\u51fd\u6570\u4f20\u53c2\u7684\u4f7f\u7528<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b6bdf3c elementor-widget elementor-widget-html\" data-id=\"b6bdf3c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">29_show_test.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/29_show_test.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:29_show_test.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b29\uff1a\u51fd\u6570\u4f20\u53c2\u7684\u4f7f\u7528\n###########################################\nfunction show() {\ncat &lt;&lt;EOF\nshow\u51fd\u6570\u7684\u53c2\u6570\u4e2a\u6570:$#\nshow\u51fd\u6570\u7684\u6240\u6709\u53c2\u6570:$*\n$1.com\n$1.cn\n$1.org\n$1.\u4f01\u4e1a\n$1.icu\n$1.\u6211\u7231\u4f60\nEOF\n}\nshow $*\n#\u4f7f\u7528\u65b9\u6cd5\uff1a\u8fd0\u884c\u811a\u672c\u65f6 sh 29_show_test.sh a b c d e\n#\u547d\u4ee4\u884c\u4f20\u53c2\u5230\u51fd\u6570\u5916\u90e8show $* \u51fd\u6570\u5185\u90e8$n\u8c03\u7528\u6b64\u53c2\u6570\n#\u663e\u793a\u5982\u4e0b\uff1a\n#show\u51fd\u6570\u7684\u53c2\u6570\u4e2a\u6570:5\n#show\u51fd\u6570\u7684\u6240\u6709\u53c2\u6570:a b c d e\n#a.com\n#a.cn\n#a.org\n#a.\u4f01\u4e1a\n#a.icu\n#a.\u6211\u7231\u4f60\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2b055ea elementor-widget elementor-widget-heading\" data-id=\"2b055ea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B30%EF%BC%9A%E5%B7%B2%E6%9C%89%E8%84%9A%E6%9C%AC%E5%87%BD%E6%95%B0%E5%8C%96_%E6%A3%80%E6%9F%A5ip%E6%98%AF%E5%90%A6%E8%83%BD%E8%AE%BF%E9%97%AE%EF%BC%8C%E5%B0%86%E6%AF%8F%E4%B8%80%E6%AD%A5%E8%AE%BE%E7%BD%AE%E4%B8%BA%E4%B8%80%E4%B8%AA%E5%87%BD%E6%95%B0\"><\/span>\u6848\u4f8b30\uff1a\u5df2\u6709\u811a\u672c\u51fd\u6570\u5316:\u68c0\u67e5ip\u662f\u5426\u80fd\u8bbf\u95ee\uff0c\u5c06\u6bcf\u4e00\u6b65\u8bbe\u7f6e\u4e3a\u4e00\u4e2a\u51fd\u6570<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2e9427c elementor-widget elementor-widget-html\" data-id=\"2e9427c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">30_check_ip_func.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/30_check_ip_func.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:10_ping_url.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b30\uff1a\u5df2\u6709\u811a\u672c\u51fd\u6570\u5316\n###########################################\n\n\n#1.vars:\nfunction input_urls(){\nread  -p &quot;please input domains: &quot; urls\n}\n#2.\u68c0\u67e5\u53c2\u6570\u662f\u5426\u4e3a\u7a7a\nfunction check_urls(){\n\nif [ -z &quot;$urls&quot; ];then\n\techo &quot;Help: sh $0 ip\/domains&quot;\n\texit 1\nfi\n}\n#2.\u6267\u884cping\u547d\u4ee4\u5e76\u5224\u65ad\u8fd4\u56de\u503c\u68c0\u6d4b\u6b64\u57df\u540d\u662f\u5426\u80fdping\u901a\nfunction ping_if(){\n\tping -c1 ${url} &amp;&gt;\/dev\/null\n\tif [ $? -eq 0 ]\n\tthen\n\t\techo &quot;${url} is yes&quot;\n\telse\n\t\techo &quot;${url} is no&quot;\n\tfi\n}\n#3.for\nfunction for_urls(){\nfor url in ${urls}\ndo\n\tping_if\ndone\nreturn 0\n}\n\n#4.\u8fd0\u884c\u4e0a\u9762\u7684\u51fd\u6570\nfunction main(){\ninput_urls\ncheck_urls\nfor_urls\n}\nmain\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5c0eed7 elementor-widget elementor-widget-heading\" data-id=\"5c0eed7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B31%EF%BC%9A%E4%B8%AA%E4%BA%BA%E9%A2%9C%E8%89%B2%E5%87%BD%E6%95%B0%E5%BA%93%E6%90%AD%E5%BB%BA%EF%BC%8C%E4%B8%8D%E5%90%8C%E6%98%BE%E7%A4%BA%E6%95%88%E6%9E%9C%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E5%87%BD%E6%95%B0%E8%A1%A8%E7%A4%BA\"><\/span>\u6848\u4f8b31\uff1a\u4e2a\u4eba\u989c\u8272\u51fd\u6570\u5e93\u642d\u5efa\uff0c\u4e0d\u540c\u663e\u793a\u6548\u679c\u7528\u4e0d\u540c\u7684\u51fd\u6570\u8868\u793a<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-46c8d8c elementor-widget elementor-widget-html\" data-id=\"46c8d8c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">31_color_func.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/31_color_func.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:31_color_func.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b31\uff1a\u4e2a\u4eba\u989c\u8272\u51fd\u6570\u5e93\u642d\u5efa\uff0c\u4e0d\u540c\u663e\u793a\u6548\u679c\u7528\u4e0d\u540c\u7684\u51fd\u6570\u8868\u793a\n###########################################\nfunction redecho(){\n\tinput=&quot;$@&quot;\n\techo -e &quot;\\E[1;31m${input}\\E[0m&quot;\n}\nfunction greenecho(){\n\tinput=&quot;$@&quot;\n\techo -e &quot;\\E[1;32m${input}\\E[0m&quot;\n}\nfunction blueecho(){\n\tinput=&quot;$@&quot;\n\techo -e &quot;\\E[1;36m${input}\\E[0m&quot;\n}\nfunction yellowecho(){\n\tinput=&quot;$@&quot;\n\techo -e &quot;\\E[1;33m${input}\\E[0m&quot;\n}\n\nfunction redstrongecho(){\n\tinput=&quot;$@&quot;\n\techo -e &quot;\\E[1;41m${input}\\E[0m&quot;\n}\nfunction greenstrongecho(){\n\tinput=&quot;$@&quot;\n\techo -e &quot;\\E[1;42m${input}\\E[0m&quot;\n}\n\n#\u4ee5\u4e0b\u4e3a\u6d4b\u8bd5\uff0c\u4f7f\u7528\u65f6redecho &quot;\u5185\u5bb9&quot;\n\tredecho 1\n\tgreenecho 1\n\tyellowecho 1\n\tblueecho 1\n\tredstrongecho 1\n\tgreenstrongecho 1\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-627bdb0 elementor-widget elementor-widget-heading\" data-id=\"627bdb0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B32%EF%BC%9A%E7%BB%99%E4%B8%AA%E4%BA%BA%E9%A2%9C%E8%89%B2%E5%87%BD%E6%95%B0%E5%BA%93%E8%84%9A%E6%9C%AC%E4%B8%AD%E5%8A%A0%E5%85%A5%E6%97%A5%E5%BF%97%E6%96%B9%E4%BE%BF%E4%BB%A5%E5%90%8E%E8%B0%83%E7%94%A8\"><\/span>\u6848\u4f8b32\uff1a\u7ed9\u4e2a\u4eba\u989c\u8272\u51fd\u6570\u5e93\u811a\u672c\u4e2d\u52a0\u5165\u65e5\u5fd7\u65b9\u4fbf\u4ee5\u540e\u8c03\u7528<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4ccccfa elementor-widget elementor-widget-html\" data-id=\"4ccccfa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">32_func_diy.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/32_func_diy.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:\/funcs\/func_diy.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b32\uff1a\u7ed9\u4e2a\u4eba\u989c\u8272\u51fd\u6570\u5e93\u811a\u672c\u4e2d\u52a0\u5165\u65e5\u5fd7\u65b9\u4fbf\u4ee5\u540e\u8c03\u7528\uff1a\n###########################################\n#1.\u989c\u8272\u51fd\u6570\nfunction redecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;31m${input}\\E[0m&quot;\n}\nfunction greenecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;32m${input}\\E[0m&quot;\n}\nfunction blueecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;36m${input}\\E[0m&quot;\n}\nfunction yellowecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;33m${input}\\E[0m&quot;\n}\nfunction redstrongecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;41m${input}\\E[0m&quot;\n}\nfunction greenstrongecho(){\n        input=&quot;$@&quot;\n        echo -e &quot;\\E[1;42m${input}\\E[0m&quot;\n}\n#2.\u65e5\u5fd7\u51fd\u6570\nfunction log() {\n  log_file=$0.log\n  level=$1\n  msg=$2\n  time=$(date +%F_%T)\n  echo &quot;$time [${level}] ${msg}&quot; &gt;&gt; $log_file\n}\n\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d3866a7 elementor-widget elementor-widget-heading\" data-id=\"d3866a7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B33%EF%BC%9A%E6%A3%80%E6%9F%A5%E6%8C%87%E5%AE%9A%E5%9C%B0%E5%9D%80%E7%9A%84%E7%AB%AF%E5%8F%A3%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE\"><\/span>\u6848\u4f8b33\uff1a\u68c0\u67e5\u6307\u5b9a\u5730\u5740\u7684\u7aef\u53e3\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-079e567 elementor-widget elementor-widget-html\" data-id=\"079e567\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">33_check_port.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/33_check_port.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:check_port.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b33\uff1a\u68c0\u67e5\u6307\u5b9a\u5730\u5740\u7684\u7aef\u53e3\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee\n#use color funcs\nsource \/funcs\/func_diy.sh\n###########################################\n#1.vars\nip=$1\nport=$2\n#2.\u68c0\u67e5\u53c2\u6570\u6570\u91cf\u662f\u5426\u4e3a2\uff08ip\uff0b\u7aef\u53e3\uff09\n#\u8fd9\u4e00\u6b65\u6d89\u53ca\u5230\u4f20\u53c2\u6240\u4ee5\u9700\u8981\u5728\u4e3b\u51fd\u6570\u91cc\u52a0\u4e0a$@\nnum_part(){\nif [ $# -ne 2 ];then\nredecho &quot;Help: sh $0 IP PORT  &quot;\nexit 1\nfi\n}\n\n#\u68c0\u67e5nc\/telnet\u547d\u4ee4\u662f\u5426\u5b58\u5728\uff0c\u4e0d\u5b58\u5728\u5219\u5b89\u88c5\nuse_yum(){\nif ! which nc &amp;&gt;\/dev\/null ;then\nyum install -y nc &amp;&gt;\/dev\/null\nfi\n#yum install -y telnet &amp;&gt;\/dev\/null\n}\n\n#\u4f7f\u7528ping\u547d\u4ee4\u68c0\u67e5\u5230\u76ee\u6807ip\u4e4b\u95f4\u662f\u5426\u901a\u8def\nuse_ping(){\nif ! ping -c1 $ip &amp;&gt;\/dev\/null ;then\n\tredecho &quot;this ip connect failed!&quot;\n\texit 2\nfi\n}\n#\u68c0\u67e5\u7aef\u53e3\u683c\u5f0f\uff08\u5fc5\u987b\u4e3a\u6570\u5b57\uff09\ncheck_port(){\nif [[ ! $port =~ ^[0-9]+$ ]];then\n\tredecho &quot;port $port is not exist! pls input number(1-65535) &quot;\n\texit 3\nfi\n}\n#3.\u6267\u884cnc\u547d\u4ee4\u68c0\u67e5\u7aef\u53e3\u8fde\u63a5\nuse_nc(){\nif nc -z ${ip} ${port} ;then\n\tgreenecho &quot;success! $ip $port is open&quot;\nelse\n\tredecho &quot;failed! $ip $port is closed &quot;\nfi\n}\n\n\nfunction main(){\nnum_part &quot;$@&quot;\nuse_yum\nuse_ping\ncheck_port\nuse_nc\n}\nmain &quot;$@&quot;\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-924e40a elementor-widget elementor-widget-heading\" data-id=\"924e40a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B34%EF%BC%9A%E6%A3%80%E6%9F%A5%E6%8C%87%E5%AE%9Awebapi%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE\"><\/span>\u6848\u4f8b34\uff1a\u68c0\u67e5\u6307\u5b9aweb\/api\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4787718 elementor-widget elementor-widget-html\" data-id=\"4787718\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">34_check_url.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/34_check_url.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:34_check_url.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b34\uff1a\u68c0\u67e5\u6307\u5b9aweb\/api\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee\n#color func\nsource \/funcs\/func_diy.sh\n###########################################\n#1.vars\nurl=$1\n\n#2.\u68c0\u67e5\u53c2\u6570\u4e2a\u6570\u662f\u5426\u4e3a1\uff08\u7a7a\u4e5f\u9000\u51fa\uff09\ncheck_var(){\nif [ $# -ne 1 ]\nthen\n\tredecho &quot;help: sh $0 xxx.com &quot;\n\texit 1\nfi\n}\n#\u68c0\u67e5\u7cfb\u7edf\u4e2d\u662f\u5426\u6709curl\u547d\u4ee4\nyum_curl(){\nif  ! which curl &amp;&gt;\/dev\/null ;then\n\tyum install -y curl &amp;&gt;\/dev\/null\nfi\n}\n\n#\u68c0\u67e5\u5230\u76ee\u6807\u7f51\u7ad9\u4e4b\u95f4\u7ebf\u8def\u662f\u5426\u901a\u7545\ncheck_net(){\nif ! ping -c1 $url &amp;&gt;\/dev\/null ;then\n\techo &quot;net connection failed! or $url is not exist! &quot;\n\texit 2\nfi\n}\n#check [[ =~ ]] .com  \u53ef\u4ee5\u52a0\u4e00\u6b65\u7528\u6b63\u5219\u5339\u914d\u8f93\u5165\u7684\u662f\u5426\u4e3a\u7f51\u7ad9\uff08xxx.com\u7b49\u683c\u5f0f\uff09\n#\u4f7f\u7528curl\u547d\u4ee4\u68c0\u67e5\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee\ncheck_url(){\nif curl -s $url &amp;&gt;\/dev\/null ;then\n\tgreenecho &quot;$url  can see! &quot;\nelse\n\tredecho &quot;$url see failed! &quot;\nfi\n}\nmain(){\ncheck_var &quot;$@&quot;\nyum_curl\ncheck_net\ncheck_url\n}\nmain &quot;$@&quot;\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-58b0199 elementor-widget elementor-widget-heading\" data-id=\"58b0199\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B35%EF%BC%9A%E6%A3%80%E6%9F%A5%E5%9F%9F%E5%90%8D%E6%98%AF%E5%90%A6%E8%BF%87%E6%9C%9F\"><\/span>\u6848\u4f8b35\uff1a\u68c0\u67e5\u57df\u540d\u662f\u5426\u8fc7\u671f<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a2bfe8c elementor-widget elementor-widget-html\" data-id=\"a2bfe8c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">35_check_web_date.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/35_check_web_date.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:35_check_web_date.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b35\uff1a\u68c0\u67e5\u57df\u540d\u662f\u5426\u8fc7\u671f \n#func\nsource \/funcs\/func_diy.sh\n###########################################\n#1 vars\n#url=linuxjk.cn\n#\u7528\u4e0b\u9762\u7684whois\u547d\u4ee4\u53d6\u51fa\u57df\u540d\u8fc7\u671f\u65f6\u95f4\n# whois linuxjk.cn | egrep -i &quot;(expiry date)|(expiration time)&quot; | awk &#039;{print $(NF-1),$NF}&#039;\nexport LANG=en_US.UTF-8\nurl=&quot;$1&quot;\nif [ -z &quot;$url&quot; ]; then\n  read -p &quot;\u8bf7\u8f93\u5165\u57df\u540d\uff08\u5982 xxx.com\uff09: &quot; url\nfi\n#2.\u68c0\u67e5\u53c2\u6570\u662f\u5426\u4e3a\u7a7a\nif [ -z &quot;$url&quot; ];then\n\tredecho &quot;Help: sh $0 *.com\/cn...&quot;\n\texit 1\nfi\n#\u53d6\u51fa\u5f53\u524d\u7684\u65e5\u671f\u548c\u57df\u540d\u8fc7\u671f\u65e5\u671f\ndate_now=$(date &quot;+%F %T&quot;)\ndate_check=$(whois &quot;$url&quot; 2&gt;\/dev\/null | egrep -i &quot;(expiry date)|(expiration time)&quot; | awk -F&#039;e: &#039; &#039;{print $NF}&#039;)\nif [ -z &quot;$date_check&quot; ]; then\n  redecho &quot;\u65e0\u6cd5\u83b7\u53d6\u57df\u540d $url \u7684\u5230\u671f\u65f6\u95f4&quot;\n  exit 2\nfi\n#3.\u7528date +%s -d\u5c06\u4e24\u4e2a\u65e5\u671f\u90fd\u8f6c\u5316\u4e3a\u79d2\ndate_now_second=$(date +%s -d &quot;$date_now&quot;)\ndate_check_second=$(date +%s -d &quot;$date_check&quot;)\n\n#4.\u6d4b\u8bd5\u662f\u5426\u6210\u529f\u8f6c\u5316\u4e3a\u79d2\uff0c\u6b64\u5904\u5982\u679c\u6709\u8d1f\u6570\u6216\u7a7a\u503c\u8bf4\u660e\u8f6c\u5316\u5931\u8d25\n#echo $date_now_second\n#echo $date_check_second\n\n\n#5.\u7528 awk\/bc\u8ba1\u7b97\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5dee\u503c\uff08\u5355\u4f4d\u79d2\uff09\ndiff_second=$(awk -v a=$date_now_second -v b=$date_check_second &#039;BEGIN{print b-a}&#039;)\n#6.\u5dee\u503c\u8f6c\u5316\u4e3a\u5929\ndiff_day=$(awk -v a=$diff_second &#039;BEGIN{print a\/60\/60\/24}&#039;)\ndiff_month=$(awk -v a=$diff_second &#039;BEGIN{print a\/60\/60\/24\/30}&#039;)\ndiff_year=$(awk -v a=$diff_second &#039;BEGIN{print a\/60\/60\/24\/30\/12}&#039;)\n#7.\u8f93\u51fa\u4fe1\u606f\n#echo &quot;$url have $diff_day day, =$diff_month month, = $diff_year year&quot;\n#if [ $diff_day -ge 60 ];then\nif (( $(echo &quot;$diff_day &gt;= 60&quot; | bc -l) )); then\n\tgreenecho &quot;\u57df\u540d$url  \u8fd8\u6709$diff_day \u5929\u5230\u671f, \u8fd8\u6709 $diff_month\u6708\u5230\u671f, \u8fd8\u6709$diff_year\u5e74\u5230\u671f&quot;\nelse\n\tredecho &quot;\u8bf7\u53ca\u65f6\u7eed\u8d39;\uf003&quot;\n\tredecho &quot;\u57df\u540d$url  \u8fd8\u6709$diff_day \u5929\u5230\u671f, \u8fd8\u6709 $diff_month\u6708\u5230\u671f, \u8fd8\u6709$diff_year\u5e74\u5230\u671f&quot;\nfi\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-28ecd33 elementor-widget elementor-widget-heading\" data-id=\"28ecd33\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B36%EF%BC%9A%E4%BD%BF%E7%94%A8for%E5%BE%AA%E7%8E%AF%E5%9C%A8oldboy%E7%9B%AE%E5%BD%95%E4%B8%8B%E9%80%9A%E8%BF%87%E9%9A%8F%E6%9C%BA%E7%9A%8410%E4%B8%AA%E5%B0%8F%E5%86%99%E5%AD%97%E6%AF%8D%E5%8A%A0%E5%9B%BA%E5%AE%9A%E5%AD%97%E7%AC%A6oldboy%E6%89%B9%E9%87%8F%E5%88%9B%E5%BB%BA%E5%8D%81%E4%B8%AAhtml%E6%96%87%E4%BB%B6\"><\/span>\u6848\u4f8b36\uff1a\u4f7f\u7528for\u5faa\u73af\u5728\/oldboy\u76ee\u5f55\u4e0b\u901a\u8fc7\u968f\u673a\u768410\u4e2a\u5c0f\u5199\u5b57\u6bcd\u52a0\u56fa\u5b9a\u5b57\u7b26oldboy\u6279\u91cf\u521b\u5efa\u5341\u4e2ahtml\u6587\u4ef6<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1710449 elementor-widget elementor-widget-html\" data-id=\"1710449\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">36_random_file.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/36_random_file.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:36_random_file.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b36\uff1a\u4f7f\u7528for\u5faa\u73af\u5728\/oldboy\u76ee\u5f55\u4e0b\u901a\u8fc7\u968f\u768410\u4e2a\u5c0f\u5199\u5b57\u6bcd\u52a0\u56fa\u5b9a\u5b57\u7b26oldboy\u6279\u91cf\u521b\u5efa\u5341\u4e2ahtml\u6587\u4ef6\n###########################################\n#1.vars\nfixed=linux\ndir=\/oldboy\/\n#\u68c0\u67e5\u76ee\u5f55\u662f\u5426\u4e3a\u7a7a\uff0c\u4e3a\u7a7a\u5219\u521b\u5efa\nif [ ! -d ${dir} ];then\n\tmkdir -p $dir\nfi\n#2.run for\nfor i in {1..10}\ndo\n#\u5229\u7528\u4e24\u79cd\u65b9\u6cd5\u53d6\u51fa10\u4e2a\u968f\u673a\u5c0f\u5199\u5b57\u6bcd\nfile=$(mkpasswd-expect -l 10 -d 0 -s 0 -C 0 )\n  #file=$(tr -cd &#039;a-zA-Z0-9&#039; &lt;\/dev\/urandom | head -c10)\n  touch ${dir}${file}_${fixed}.html\ndone\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7343548 elementor-widget elementor-widget-text-editor\" data-id=\"7343548\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3><span class=\"ez-toc-section\" id=\"%E7%94%A8for%E5%BE%AA%E7%8E%AF%E6%89%93%E5%8D%B099%E4%B9%98%E6%B3%95%E8%A1%A8\"><\/span>\u7528for\u5faa\u73af\u6253\u537099\u4e58\u6cd5\u8868<span class=\"ez-toc-section-end\"><\/span><\/h3>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a06296 elementor-widget elementor-widget-html\" data-id=\"6a06296\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">99.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/99.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:99.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u5229\u7528\u7b80\u5355\u7684for\u5faa\u73af\u6253\u5370\u4e5d\u4e5d\u4e58\u6cd5\u8868\n###########################################\n#vars\ni=1\nj=1\n\nfor i in {1..9}\ndo\n\tfor j in {1..9}\n\tdo\n\t\t#printf &quot;%d*%d=%-2d &quot; $i $j $((i*j))\n\t\tresult=`echo -n &quot;$i*$j&quot;|xargs |bc`\n\t\techo -n &quot;$i*$j=$result &quot;\n\tdone\n\techo \ndone\n\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-96a966b elementor-widget elementor-widget-heading\" data-id=\"96a966b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B37%EF%BC%9A%E8%BE%93%E5%87%BA1%E5%88%B010%E5%B9%B6%E8%AE%A1%E7%AE%97%E6%80%BB%E5%92%8C%EF%BC%88%E6%9D%A1%E4%BB%B6%EF%BC%9A%E5%BE%AA%E7%8E%AF%E6%AC%A1%E6%95%B0%E7%AD%89%E4%BA%8E10%EF%BC%89\"><\/span>\u6848\u4f8b37\uff1a\u8f93\u51fa1\u523010\u5e76\u8ba1\u7b97\u603b\u548c\uff08\u6761\u4ef6\uff1a\u5faa\u73af\u6b21\u6570\u7b49\u4e8e10\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b80efb elementor-widget elementor-widget-html\" data-id=\"1b80efb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">37_while_for.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/37_while_for.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:37_while_for.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b37\uff1a\u8f93\u51fa1\u523010\u5e76\u8ba1\u7b97\u603b\u548c\uff08\u6761\u4ef6\uff1a\u5faa\u73af\u6b21\u6570\u7b49\u4e8e10\uff09\n###########################################\n#vars\ni=1\nsum=0\n#\u5faa\u73af\u6267\u884c\u6761\u4ef6\uff1ai&lt;=10\uff0c\u4e0d\u6ee1\u8db3\u5219\u7ed3\u675f\u5faa\u73af\nwhile [ $i -le 10 ]\ndo\n\techo $i\n\tlet sum=sum+i\n\tlet i++  #\u63a7\u5236\u5faa\u73af\u6b21\u6570\ndone\n\necho &quot;\u603b\u548c: $sum&quot;\n\n#for i in {1..10}\n#do\n#echo $i\n#done\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-48b25f1 elementor-widget elementor-widget-heading\" data-id=\"48b25f1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B39%EF%BC%9A%E7%94%9F%E6%88%90%E9%9A%8F%E6%9C%BA%E6%95%B0%E5%AD%97%EF%BC%881-100%EF%BC%89%EF%BC%8C%E5%88%A4%E6%96%AD%E6%95%B0%E5%AD%97%E6%98%AF%E4%BB%80%E4%B9%88\"><\/span>\u6848\u4f8b39\uff1a\u751f\u6210\u968f\u673a\u6570\u5b57\uff081-100\uff09\uff0c\u5224\u65ad\u6570\u5b57\u662f\u4ec0\u4e48<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3d9287f elementor-widget elementor-widget-html\" data-id=\"3d9287f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">39_guess_number.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/39_guess_number.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:39_guess_number.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b39\uff1a\u751f\u6210\u968f\u673a\u6570\u5b57\uff081-100\uff09\uff0c\u5224\u65ad\u6570\u5b57\u662f\u4ec0\u4e48\n###########################################\n#vars\ncorrect_answer=$(echo &quot;$RANDOM%100+1&quot; | bc)\nguess=0\n#\u53ef\u4ee5\u7528while\u540e\u9762\u7684\u6761\u4ef6\u63a7\u5236\u5faa\u73af\uff0c\u5f53\u6ee1\u8db3\u731c\u7684\u6570\u4e0d\u7b49\u4e8e\u6b63\u786e\u7b54\u6848\u65f6\u8fdb\u884c\u5faa\u73af\n#while [ $guess -ne $correct_answer ];\n#\u6216\u8005\u7528\u4e0b\u9762\u7684\u6b7b\u5faa\u73af\u8868\u793a\uff0cwhile true\uff0c\u4f46\u662f\u5f53\u731c\u7684\u6570\u7b49\u4e8e\u6b63\u786e\u7b54\u6848\u65f6\u8f93\u51fa\u4fe1\u606f\u5e76\u9000\u51fa\u811a\u672c\nwhile true\ndo\n\t#read\n\tread -p &quot;pls input a number: &quot; guess\n\t#check input ? number\n\tif  [[ ! $guess =~ [0-9]+ ]];then\n\t\techo &quot;please input number! &quot;\n\t\t#continue\u53ea\u8df3\u8fc7\u8fd9\u4e00\u6b21\u8f93\u5165\u9519\u8bef\u7684\u60c5\u51b5\uff0c\u91cd\u65b0\u8f93\u5165\uff0cbreak\u9000\u51fa\u5faa\u73af\uff0cexit\u9000\u51fa\u811a\u672c\n\t\tcontinue\n\tfi\n\tlet i++\n\tif [ $guess -lt $correct_answer ];then\n\t\techo &quot;your number is small &quot;\n\telif [ $guess -gt $correct_answer ];then\n\t\techo &quot;your number is big &quot;\n\telse\n\t\techo &quot;correct !!! answer is $correct_answer&quot;\n\t\techo &quot;total guess $i times&quot;\n\t\t#\u4e0b\u9762\u7684exit\u9000\u51fa\u811a\u672c\u53ef\u4ee5\u6539\u4e3a\u5728\u8fd9\u91cc\u7528break\u9000\u51fa\u5faa\u73af\uff0c\u4e0b\u9762\u7684\u5224\u65ad\u548c\u8f93\u51fa\u653e\u5728\u5faa\u73af\u5916\u6267\u884c\n\tif [ $i -ge 1 ] &amp;&amp; [ $i -le 3 ] ;then\t\n\t\techo &quot;better than 99.99% person &quot;\n\telif [ $i -ge 4 ] &amp;&amp; [ $i -le 6 ];then\n\t\techo &quot;better than 80% person &quot;\n\telse \n\t\techo &quot;better than 70% person &quot;\n\tfi\n\texit\n\tfi\t\ndone\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-515c26d elementor-widget elementor-widget-heading\" data-id=\"515c26d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B40%EF%BC%9A%E9%80%9A%E8%BF%87while_read%E6%96%B9%E5%BC%8F%E7%BB%9F%E8%AE%A1iptxt%E6%96%87%E4%BB%B6%EF%BC%8C%E5%B9%B6ping%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84ip%EF%BC%88%E4%BB%A5%E5%90%8Eping%E6%94%B9%E6%88%90firewalld%E5%B1%8F%E8%94%BD%EF%BC%89\"><\/span>\u6848\u4f8b40\uff1a\u901a\u8fc7while read\u65b9\u5f0f\u7edf\u8ba1ip.txt\u6587\u4ef6\uff0c\u5e76ping\u6587\u4ef6\u4e2d\u7684ip\uff08\u4ee5\u540eping\u6539\u6210firewalld\u5c4f\u853d\uff09<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ee8ce77 elementor-widget elementor-widget-html\" data-id=\"ee8ce77\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">40_while_ip_ping.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/40_while_ip_ping.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:40_while_ip_ping.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b40\uff1a\u901a\u8fc7while read\u65b9\u5f0f\u7edf\u8ba1ip.txt\u6587\u4ef6\uff0c\u5e76ping\u6587\u4ef6\u4e2d\u7684ip\uff08\u4ee5\u540eping\u6539\u6210firewalld\u5c4f\u853d\uff09\n#funcs\nsource \/funcs\/func_diy.sh\n###########################################\n#vars\nsrc_file=\/oldboy\/files\/ip.txt\n#while\nwhile read line\ndo\n\tip=`echo $line | awk -F&#039; &#039; &#039;{print $1}&#039;`\n\tnum=`echo $line | awk -F&#039; &#039; &#039;{print $2}&#039;`\n       if [ $num -ge 5 ];then\n\t       ping -c1 $ip &amp;&gt;\/dev\/null\n\t       if [ $? -eq 0 ];then\n\t\t       greenecho &quot;ping $ip successed&quot;\n\t       else\n\t\t       redecho &quot;ping $ip failed&quot;\n\t       fi\n       fi \n\ndone &lt;$src_file\n#while read ip num  \u53ea\u6709\u7a7a\u683c\u5206\u9694\u7684\u4e24\u5217\u53ef\u4ee5\u8fd9\u6837\u53ea\u5b9a\u4e49\u4e24\u4e2a\u53d8\u91cf\uff0c\u5982\u672c\u6848\u4f8b\u4e2d\u7684ip \u6b21\u6570\n#do\n#       #echo &quot;ip address: $ip&quot;\n#       if [ $num -ge 8 ];then\n#\t       ping -c1 $ip &amp;&gt;\/dev\/null\n#       fi \n#done &lt;$src_file\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aeccac6 elementor-widget elementor-widget-heading\" data-id=\"aeccac6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B41%EF%BC%9A%E4%BA%86%E8%A7%A3%E6%96%B9%E6%B3%952%E5%92%8C%E6%96%B9%E6%B3%953%E5%8C%BA%E5%88%AB%EF%BC%9A%E5%9C%A8while%E5%89%8D%E8%AF%BB%E5%8F%96%E5%91%BD%E4%BB%A4%E5%92%8C%E5%9C%A8done%E5%90%8E%E7%94%A8%E9%87%8D%E5%AE%9A%E5%90%91%E7%AC%A6\"><\/span>\u6848\u4f8b41\uff1a\u4e86\u89e3\u65b9\u6cd52\u548c\u65b9\u6cd53\u533a\u522b\uff1a\u5728while\u524d\u8bfb\u53d6\u547d\u4ee4\u548c\u5728done\u540e\u7528\u91cd\u5b9a\u5411\u7b26&lt;\u8bfb\u53d6\u6587\u4ef6<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6734ba0 elementor-widget elementor-widget-html\" data-id=\"6734ba0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">41_test_while_read.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/41_test_while_read.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:41_test_while_read.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u4e86\u89e3\u65b9\u6cd52\u548c\u65b9\u6cd53\u533a\u522b\uff1a\u5728while\u524d\u8bfb\u53d6\u547d\u4ee4\u548c\u5728done\u540e\u7528\u91cd\u5b9a\u5411\u7b26&lt;\u8bfb\u53d6\u6587\u4ef6\n###########################################\n#vars\nfile=\/oldboy\/files\/ip.txt\n\ni=0\nj=0\n#\u65b9\u6cd52\uff0c\u5229\u7528\u7ba1\u9053\u4f20\u9012\uff0cwhile\u5904\u7406\u7ba1\u9053\u5185\u5bb9\uff0c\u5faa\u73af\u6b21\u6570\u4e3a0\necho &quot;method 2: while + cat&quot;\ncat $file | while read ip \ndo\n\techo $ip\n\tlet i++\ndone\necho &quot;times: $i&quot;\n\n\n#\u65b9\u6cd53\uff0c\u7528\u8f93\u5165\u91cd\u5b9a\u5411&lt;\u8f93\u5165\u81f3while\u4e2d\uff0c\u5faa\u73af\u6b21\u6570\u4e3a\u6587\u4ef6\u884c\u6570\necho &quot;method 3: while + &lt;&quot;\nwhile read ipaddr\ndo\n       echo $ipaddr\n       let j++\ndone &lt;$file\necho &quot;times: $j&quot;\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b8b2400 elementor-widget elementor-widget-heading\" data-id=\"b8b2400\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B41%EF%BC%9Aforwhile_until%E4%B8%89%E7%A7%8D%E5%BE%AA%E7%8E%AF%E6%A0%BC%E5%BC%8F%E5%8C%BA%E5%88%AB%E5%8F%8A%E5%BE%AA%E7%8E%AF%E6%9D%A1%E4%BB%B6%E5%88%86%E6%9E%90\"><\/span>\u6848\u4f8b41\uff1afor\/while\/ until\u4e09\u79cd\u5faa\u73af\u683c\u5f0f\u533a\u522b\u53ca\u5faa\u73af\u6761\u4ef6\u5206\u6790<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ffed10d elementor-widget elementor-widget-html\" data-id=\"ffed10d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">41_do_until.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/41_do_until.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:do_until.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b41\uff1afor\/while\/ until\u4e09\u79cd\u5faa\u73af\u683c\u5f0f\u533a\u522b\u53ca\u5faa\u73af\u6761\u4ef6\u5206\u6790\n###########################################\n#vars\n\necho &quot;until&quot;\n#\u76f4\u5230\u53d8\u91cfi\u5927\u4e8e10\u65f6\u505c\u6b62\uff0c\u8f93\u51fa1-10\ni=1\nuntil [ $i -gt 10 ]\ndo\n\techo $i\n\tlet i++\ndone\necho &quot;while&quot;\n#\u6ee1\u8db3\u53d8\u91cfj\u5c0f\u4e8e\u7b49\u4e8e10\u7684\u6761\u4ef6\u65f6\u5faa\u73af\uff0c\u8f93\u51fa1-10\nj=1\nwhile [ $j -le 10 ]\ndo\n\techo $j\n\tlet j++\ndone\necho &quot;for&quot;\n#\u53d8\u91cfm\u57281-10\u7684\u8303\u56f4\u5185\u8fdb\u884c\u5faa\u73af\uff0c\u8f93\u51fa1-10\nfor m in {1..10}\ndo\n\techo $m\ndone\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-04d1ffe elementor-widget elementor-widget-heading\" data-id=\"04d1ffe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B42%EF%BC%9A%E6%B5%8B%E8%AF%95read%E5%91%BD%E4%BB%A4%E8%B5%8B%E5%80%BC%E6%95%B0%E7%BB%84%E5%B9%B6%E8%BE%93%E5%87%BA%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%86%85%E5%AE%B9\"><\/span>\u6848\u4f8b42\uff1a\u6d4b\u8bd5read\u547d\u4ee4\u8d4b\u503c\u6570\u7ec4\u5e76\u8f93\u51fa\u6570\u7ec4\u4e2d\u7684\u5185\u5bb9<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ed116b7 elementor-widget elementor-widget-html\" data-id=\"ed116b7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">42_read_create_array.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/42_read_create_array.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:42_read_create_array.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b42\uff1a\u6d4b\u8bd5read\u8d4b\u503c\u6570\u7ec4\u5e76\u8f93\u51fa\u6570\u7ec4\u4e2d\u7684\u5185\u5bb9\n###########################################\n#\u5b9a\u4e49\u6570\u7ec4\u53d8\u91cf\nread -p &quot;\u8bf7\u8f93\u5165\u6570\u7ec4\uff0c\u7a7a\u683c\u5206\u9694\uff1a &quot; -a array\n#\u6d4b\u8bd5\u521a\u624d\u8f93\u5165\u7684\u6570\u7ec4\u662f\u5426\u53ef\u4ee5\u6b63\u5e38\u8f93\u51fa\necho ${array[@]}\n#\u6d4b\u8bd5\u5206\u5272\u60c5\u51b5\uff08\u662f\u5426\u4e00\u6b21\u8f93\u51fa\u4e00\u4e2a\uff09\nfor i in  ${array[@]}\ndo\n\techo $i\ndone\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8d2ba51 elementor-widget elementor-widget-heading\" data-id=\"8d2ba51\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B43%EF%BC%9A%E8%AF%95%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AAshell%E8%AE%A1%E7%AE%97%E5%99%A8%EF%BC%8C%E6%B1%82%E5%87%BA%E7%94%A8%E6%88%B7%E8%BE%93%E5%85%A5%E6%89%80%E6%9C%89%E6%95%B0%E5%AD%97%E7%9A%84%E4%BB%A5%E4%B8%8B%E8%AE%A1%E7%AE%97%E7%BB%93%E6%9E%9C%EF%BC%9A%E6%80%BB%E5%92%8C%EF%BC%8C%E5%B9%B3%E5%9D%87%E5%80%BC%EF%BC%8C%E6%9C%80%E5%A4%A7%E5%80%BC%EF%BC%8C%E6%9C%80%E5%B0%8F%E5%80%BC\"><\/span>\u6848\u4f8b43\uff1a\u8bd5\u7f16\u5199\u4e00\u4e2ashell\u8ba1\u7b97\u5668\uff0c\u6c42\u51fa\u7528\u6237\u8f93\u5165\u6240\u6709\u6570\u5b57\u7684\u4ee5\u4e0b\u8ba1\u7b97\u7ed3\u679c\uff1a\u603b\u548c\uff0c\u5e73\u5747\u503c\uff0c\u6700\u5927\u503c\uff0c\u6700\u5c0f\u503c<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-26175d4 elementor-widget elementor-widget-html\" data-id=\"26175d4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">43_array_calculate.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/43_array_calculate.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:43_array_calculate.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b43\uff1a\u6c42\u51fa\u6570\u7ec4\u4e2d\u7684\u503c\u7684\u603b\u548c\uff0c\u5e73\u5747\u503c\uff0c\u6700\u5927\u503c\uff0c\u6700\u5c0f\u503c\nsource \/funcs\/func_diy.sh\n###########################################\n\n#1.vars\nfunction input(){\nread -p &quot;\u8bf7\u8f93\u5165\u9700\u8981\u8ba1\u7b97\u7684\u6570\u5b57\uff0c\u4ee5\u7a7a\u683c\u5206\u5272\uff0c\u4e0d\u9650\u5236\u4e2a\u6570\uff1a  &quot; -a array\n}\n\n#2.\u68c0\u67e5\u6570\u7ec4\u662f\u5426\u4e3a\u7a7a\nfunction check_z(){\nif [ -z $array ];then\n\tredecho &quot;\u672a\u83b7\u53d6\u5230\u5185\u5bb9\uff0c\u8bf7\u91cd\u65b0\u8f93\u5165\uff01 &quot;\n\texit 1\nfi\n}\n\n#\u6613\u9519\u63d0\u793a\uff1a\u68c0\u67e5\u8f93\u5165\u7684\u6570\u7ec4\u662f\u5426\u4e3a\u6570\u5b57\n#(\u9519\u8bef\uff0c\u8fd9\u91cc\u7684\u6b63\u5219\u5339\u914d\u4f1a\u5c06\u6574\u4e2a\u6570\u7ec4\u5408\u6210\u4e00\u4e2a\u6574\u4f53\u7684\u5b57\u7b26\u4e32\u8fdb\u884c\u6b63\u5219\u5339\u914d\uff0c\n#\u65e0\u6cd5\u9010\u4e2a\u68c0\u6d4b\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\u662f\u5426\u4e3a\u6570\u5b57\uff09\n#if [[ ! ${array[@]} =~ ^[+-]?[0-9]+\\.?[0-9]+$ ]];then\n#\techo &quot;\u683c\u5f0f\u9519\u8bef\uff0c\u8bf7\u8f93\u5165\u6570\u5b57\uff01 &quot;\n#\texit 2\n#fi\n\n#\u4e0b\u9762\u7684\u9519\u8bef\u4e3a\u5982\u679c\u78b0\u5230\u5f02\u5e38\u6570\u636e\u4f1a\u76f4\u63a5\u9000\u51fa\u811a\u672c\uff0c\u4e0d\u4f1a\u7ee7\u7eed\u8fd0\u7b97\n#function check_isnumber(){\n#for num in &quot;${array[@]}&quot;\n#do\n#    # \u5141\u8bb8\u6574\u6570\u3001\u5c0f\u6570\u3001\u8d1f\u6570\uff0c\u6392\u9664\u7a7a\u503c\n#    if [[ ! $num =~ ^[+-]?[0-9]+([.][0-9]+)?$ ]] || [[ $num == &#039;.&#039;* ]] || [[ $num == *&#039;.&#039; ]]; then\n#        redecho &quot;\u9519\u8bef\uff1a&#039;$num&#039; \u4e0d\u662f\u6709\u6548\u7684\u6570\u5b57\uff01&quot;\n#        exit 2\n#\n#    fi\n#done\n#}\n\n#3.\u68c0\u67e5\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e2a\u503c\u662f\u5426\u4e3a\u6570\u5b57\uff0c\u5982\u679c\u6709\u4e0d\u662f\u6570\u5b57\u7684\u8fdb\u884c\u63d0\u793a\u5e76\u8df3\u8fc7\u8fd9\u4e00\u9879\uff0c\u7ee7\u7eed\u8fdb\u884c\u4e0b\u9762\u7684\u503c\u7684\u8ba1\u7b97\uff0c\n#\u5f97\u5230\u4e00\u4e2a\u8fc7\u6ee4\u5f02\u5e38\u6570\u636e\u4e4b\u540e\u7684\u65b0\u6570\u7ec4\ni=0\n#\u4ece\u4e0b\u68070\u5f00\u59cb\u4f20\u5165\u6570\u636e\nfunction check_isnumber(){\nfor num in &quot;${array[@]}&quot;\ndo\n\tif [[ ! $num =~ ^[+-]?[0-9]+([.][0-9]+)?$ ]] || [[ $num == &#039;.&#039;* ]] || [[ $num == *&#039;.&#039; ]]; then\n\t\tredecho &quot;\u9519\u8bef\uff01$num \u4e0d\u662f\u6709\u6548\u7684\u6570\u5b57,\u6b64\u9879\u65e0\u6cd5\u53c2\u4e0e\u8fd0\u7b97&quot;\n\t\tcontinue\n\telse\n\t\tnewarray[i]=$num\n\t\tlet i++\n\tfi\ndone\n}\necho ${newarray[@]}\n#4.\u5f00\u59cb\u8ba1\u7b97\nfunction  calculate(){\ntotal=$(echo ${newarray[@]} | tr -s &#039; &#039; &#039;+&#039; |bc -l)\naveravg=$(awk -v a=${total} -v b=${#newarray[@]} &#039;BEGIN{print a\/b}&#039;)\nmax=$(echo ${newarray[@]} | sed &#039;s# #\\n#g&#039; | sort -rn | head -n1)\nmin=$(echo ${newarray[@]} | sed &#039;s# #\\n#g&#039; | sort -n | head -n1)\n}\n\n#5.\u8f93\u51fa\u7ed3\u679c\nfunction output(){\ncat&lt;&lt;EOF\n\u6570\u7ec4\u4e2d\u7684\u503c\u7684\u8ba1\u7b97\u7ed3\u679c\u5982\u4e0b\uff1a\n\u603b\u548c\uff1a$total\n\u5e73\u5747\u503c\uff1a$averavg\n\u6700\u5927\u503c\uff1a$max\n\u6700\u5c0f\u503c\uff1a$min\nEOF\n}\n\n\nfunction main(){\n\tinput &quot;$@&quot;\n\tcheck_z\n\tcheck_isnumber\n\tcalculate\n\toutput\n}\nmain\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-75e2e26 elementor-widget elementor-widget-heading\" data-id=\"75e2e26\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B44%EF%BC%9A%E6%8A%8A%E6%A1%88%E4%BE%8B30%E6%94%B9%E4%B8%BA%E6%95%B0%E7%BB%84%E5%BD%A2%E5%BC%8F%EF%BC%8C%E4%BB%8Eserverfilesurlstxt%E8%AF%BB%E5%8F%96%E5%86%85%E5%AE%B9\"><\/span>\u6848\u4f8b44\uff1a\u628a\u6848\u4f8b30\u6539\u4e3a\u6570\u7ec4\u5f62\u5f0f\uff0c\u4eceserver\/files\/urls.txt\u8bfb\u53d6\u5185\u5bb9<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6ebfd60 elementor-widget elementor-widget-html\" data-id=\"6ebfd60\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">44_check_ip_func.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/44_check_ip_func.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name:42_check_ip_func.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u6848\u4f8b42\uff1a\u5c06\u6848\u4f8b30\u6539\u4e3a\u6570\u7ec4\u5f62\u5f0f\uff0c\u4ece\u6307\u5b9a\u6587\u4ef6\/server\/files\/urls.txt\u8bfb\u53d6\u5185\u5bb9\n#cat \/server\/files\/urls.txt\n#10.0.0.200\n#jd.com\n#baidu.com\n#taobao.com\n#linuxjk.cn\n#12306.cn\nsource \/funcs\/func_diy.sh\n###########################################\n\n\n#1.vars:\nfunction input_urls(){\nurls=(`cat \/server\/files\/urls.txt`)\n}\n#2.\u68c0\u67e5\u53c2\u6570\u4e2a\u6570\u662f\u5426\u4e3a0\uff08\u662f\u5426\u4e3a\u7a7a\uff09\uff0c\u6570\u7ec4\u7528\u4e8e\u68c0\u67e5\u662f\u5426\u4e3a\u7a7a\u65f6\u53ef\u4ee5\u548c\u53d8\u91cf\u7528\u6cd5\u76f8\u540c\n\nfunction check_urls(){\n\nif [ -z $urls ];then\n\techo &quot;error&quot;\n\texit 1\nfi\n\n#if [ ${#urls[@]} -eq 0 ];then\n#\techo &quot;Help: \u672a\u53d6\u51fa\u6b63\u786e\u7684url\u4f9b\u672c\u811a\u672c\u68c0\u6d4b\uff0c\u8bf7\u68c0\u67e5\u811a\u672c\uff01 &quot;\n#\texit 1\n#fi\n}\n#2.\u6267\u884cping\u547d\u4ee4\u5e76\u5224\u65ad\u8fd4\u56de\u503c\u68c0\u6d4b\u6b64\u57df\u540d\u662f\u5426\u80fdping\u901a\nfunction ping_if(){\n\tping -c1 ${url} &amp;&gt;\/dev\/null\n\tif [ $? -eq 0 ]\n\tthen\n\t\tgreenecho &quot;$url \u53ef\u4ee5\u8bbf\u95ee&quot;\n\telse\n\t\tredecho &quot;$url \u4e0d\u53ef\u4ee5\u8bbf\u95ee&quot;\n\tfi\n}\n#3.for\nfunction for_urls(){\nfor url in ${urls[@]}\ndo\n\tping_if\ndone\nreturn 0\n}\n\n#4.\u8fd0\u884c\u4e0a\u9762\u7684\u51fd\u6570\nfunction main(){\ninput_urls\ncheck_urls\nfor_urls\n}\nmain\n\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a416379 elementor-widget elementor-widget-heading\" data-id=\"a416379\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"%E6%A1%88%E4%BE%8B53%EF%BC%9A%E7%94%A8awk%E7%BB%9F%E8%AE%A1ip%E5%92%8C%E6%AF%8F%E4%B8%AAip%E5%AF%B9%E5%BA%94%E7%9A%84%E6%B5%81%E9%87%8F%EF%BC%8C%E5%8F%96%E6%B5%81%E9%87%8F%E6%8E%92%E8%A1%8C%E5%89%8D50%E5%90%8D%E8%BF%9B%E8%A1%8C%E5%9C%B0%E5%9D%80%E6%9F%A5%E8%AF%A2%E5%92%8C%E5%8D%95%E4%BD%8D%E6%8D%A2%E7%AE%97\"><\/span>\u6848\u4f8b53\uff1a\u7528awk\u7edf\u8ba1ip\u548c\u6bcf\u4e2aip\u5bf9\u5e94\u7684\u6d41\u91cf\uff0c\u53d6\u6d41\u91cf\u6392\u884c\u524d50\u540d\u8fdb\u884c\u5730\u5740\u67e5\u8be2\u548c\u5355\u4f4d\u6362\u7b97<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d8a3f65 elementor-widget elementor-widget-html\" data-id=\"d8a3f65\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n    <div class=\"wp-code-block\">\n        <div class=\"code-header\">\n            <div class=\"code-title\">53_uniq_ip_times.sh<\/div>\n            <div class=\"code-buttons\">\n                <a href=\"https:\/\/linuxjk.oss-cn-shanghai.aliyuncs.com\/wp-content\/uploads\/shell_scripts\/53_uniq_ip_times.sh\" class=\"download-btn\" download>\n                    \u4e0b\u8f7d\n                <\/a>\n                <div class=\"right-buttons\">\n                    <button type=\"button\" class=\"copy-btn\">\u590d\u5236<\/button>\n                    <button type=\"button\" class=\"fold-btn\">\u25bc<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n        <pre><code class=\"language-bash\">#!\/bin\/bash\n##########################################\n# File Name: 53_uniq_ip_times.sh\n# Version:V1.0\n# Author:zhangpeng\n# 0rganization:linuxjk.cn\n# Desc:\u7528awk\u7edf\u8ba1ip\u548c\u6bcf\u4e2aip\u5bf9\u5e94\u7684\u6d41\u91cf\uff0c\u53d6\u6d41\u91cf\u6392\u884c\u524d50\u540d\u8fdb\u884c\u5730\u5740\u67e5\u8be2\u548c\u5355\u4f4d\u6362\u7b97\n###########################################\n\n#1.vars\nfile=\/server\/files\/access.log\nawk_deal=(`awk &#039;{url[$1]=url[$1]+$10}END{for(n in url)print n,url[n]}&#039; $file | sort -rnk2 | head -50`)\ncount=0\nfor i in ${awk_deal[@]}\ndo\n        if (( count % 2 == 0 ));then\n                echo -n &quot;ipaddress: $i   &quot;\n                echo `curl -s cip.cc\/${i} | sed -n &#039;2p&#039;`\n                sleep 1.5\n        else\n                echo -n `awk -v a=$i &#039;BEGIN{print a\/1000\/1000}&#039;`\n                echo &quot; MB&quot;\n        fi\n        let count++\ndone\n<\/code><\/pre>\n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>shell\u7f16\u7a0b\u5b66\u4e60\u7b14\u8bb0 \u8fd0\u884c\u6279\u91cf\u5b89\u88c5zabbix_agent\u7684\u5267\u672c debian\u7cfb\u5bb9\u5668\u5185\u914d\u7f6elsyncd \u4e00\u952e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","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":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","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-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":"","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-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":"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":""},"mobile":{"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":""}},"footnotes":""},"class_list":["post-847","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/linuxjk.cn\/index.php?rest_route=\/wp\/v2\/pages\/847","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxjk.cn\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/linuxjk.cn\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/linuxjk.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxjk.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=847"}],"version-history":[{"count":188,"href":"https:\/\/linuxjk.cn\/index.php?rest_route=\/wp\/v2\/pages\/847\/revisions"}],"predecessor-version":[{"id":3086,"href":"https:\/\/linuxjk.cn\/index.php?rest_route=\/wp\/v2\/pages\/847\/revisions\/3086"}],"wp:attachment":[{"href":"https:\/\/linuxjk.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=847"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}