{"id":132,"date":"2026-08-15T17:54:22","date_gmt":"2026-08-15T09:54:22","guid":{"rendered":"https:\/\/www.juup.top\/?p=132"},"modified":"2026-08-15T18:00:59","modified_gmt":"2026-08-15T10:00:59","slug":"%e5%9c%a8%e9%a3%9e%e7%89%9bnas%e4%b8%ad%e4%bf%9d%e5%ad%98bing%e6%af%8f%e6%97%a5%e5%a3%81%e7%ba%b8","status":"publish","type":"post","link":"https:\/\/www.juup.top\/index.php\/2026\/08\/15\/%e5%9c%a8%e9%a3%9e%e7%89%9bnas%e4%b8%ad%e4%bf%9d%e5%ad%98bing%e6%af%8f%e6%97%a5%e5%a3%81%e7%ba%b8\/","title":{"rendered":"\u5728\u98de\u725bNAS\u4e2d\u4fdd\u5b58Bing\u6bcf\u65e5\u58c1\u7eb8"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u901a\u8fc7\u98de\u725b NAS \u5b9a\u65f6\u4efb\u52a1 + Shell \u811a\u672c \u6bcf\u5929\u4e0b\u8f7d\u4fdd\u5b58Bing\u6700\u65b0\u58c1\u7eb8<\/p>\n\n\n<p>\u8fd0\u884c\u5173\u7cfb\uff1a<\/p>\n<p>\u98de\u725b NAS<br \/>\n   \u2502<br \/>\n   \u2514\u2500\u2500 \u7528\u6237 crontab<br \/>\n          \u2502<br \/>\n          \u2514\u2500\u2500 \u6bcf\u5929 00:05<br \/>\n                 \u2502<br \/>\n                 \u25bc<br \/>\n\/bin\/bash \/vol2\/1000\/Download\/BingWallpaper\/bing_wallpaper.sh<br \/>\n                 \u2502<br \/>\n                 \u251c\u2500\u2500 \u83b7\u53d6 Bing \u5f53\u65e5\u56fe\u7247<br \/>\n                 \u251c\u2500\u2500 \u5c1d\u8bd5 UHD<br \/>\n                 \u251c\u2500\u2500 UHD \u5931\u8d25 \u2192 1920\u00d71080<br \/>\n                 \u251c\u2500\u2500 \u4fdd\u5b58\u5230 UHD\/<br \/>\n                 \u2514\u2500\u2500 \u65e5\u5fd7\u4fdd\u5b58\u5230 bing_wallpaper.log<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4e00\u3001\u5148\u786e\u8ba4\u76ee\u5f55<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148 SSH \u767b\u5f55\u98de\u725b NAS\uff0c\u6267\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/vol2\/1000\/Download\/BingWallpaper\/UHD<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u68c0\u67e5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls -ld \/vol2\/1000\/Download\/BingWallpaper\nls -ld \/vol2\/1000\/Download\/BingWallpaper\/UHD<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4e8c\u3001\u521b\u5efa\u81ea\u52a8\u4e0b\u8f7d\u811a\u672c<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u521b\u5efa\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/vol2\/1000\/Download\/BingWallpaper\/bing_wallpaper.sh<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n\n# ==============================\n# Bing \u6bcf\u65e5 UHD \u58c1\u7eb8\u81ea\u52a8\u4e0b\u8f7d\n# \u98de\u725b NAS\n# ==============================\n\n# \u58c1\u7eb8\u4fdd\u5b58\u76ee\u5f55\nSAVE_PATH=\"\/vol2\/1000\/Download\/BingWallpaper\/UHD\"\n\n# \u65e5\u5fd7\u6587\u4ef6\nLOG_FILE=\"\/vol2\/1000\/Download\/BingWallpaper\/bing_wallpaper.log\"\n\n# \u65e5\u5fd7\u4fdd\u7559\u5929\u6570\nLOG_DAYS=30\n\n# \u521b\u5efa\u76ee\u5f55\nmkdir -p \"$SAVE_PATH\"\n\n# ==============================\n# \u65e5\u5fd7\u51fd\u6570\n# ==============================\n\nlog() {\n    echo \"&#91;$(TZ='Asia\/Shanghai' date '+%Y-%m-%d %H:%M:%S')] $*\" | tee -a \"$LOG_FILE\"\n}\n\n# ==============================\n# \u6e05\u7406\u65e7\u65e5\u5fd7\n# \u4fdd\u7559\u6700\u8fd1 30 \u5929\uff08\u6309\u6587\u4ef6\u4fee\u6539\u65f6\u95f4\uff09\n# ==============================\n\nclean_old_logs() {\n    if &#91; -f \"$LOG_FILE\" ]; then\n        # \u83b7\u53d6\u6587\u4ef6\u4fee\u6539\u65f6\u95f4\uff08Unix\u65f6\u95f4\u6233\uff09\n        if command -v stat &gt;\/dev\/null 2&gt;&amp;1; then\n            FILE_MTIME=$(stat -c %Y \"$LOG_FILE\" 2&gt;\/dev\/null)\n        else\n            # \u5982\u679cstat\u4e0d\u53ef\u7528\uff0c\u4f7f\u7528find\n            find \"$LOG_FILE\" -mtime +\"$LOG_DAYS\" -delete 2&gt;\/dev\/null\n            return\n        fi\n        \n        if &#91; -n \"$FILE_MTIME\" ]; then\n            CURRENT_TIME=$(date +%s)\n            FILE_AGE_DAYS=$(( (CURRENT_TIME - FILE_MTIME) \/ 86400 ))\n            \n            if &#91; \"$FILE_AGE_DAYS\" -gt \"$LOG_DAYS\" ]; then\n                rm -f \"$LOG_FILE\"\n                touch \"$LOG_FILE\"\n            fi\n        fi\n    fi\n}\n\nclean_old_logs\n\n# ==============================\n# \u68c0\u67e5\u4f9d\u8d56\n# ==============================\n\nif ! command -v curl &gt;\/dev\/null 2&gt;&amp;1; then\n    log \"\u274c \u9519\u8bef\uff1a\u672a\u627e\u5230 curl\"\n    exit 1\nfi\n\nif ! command -v jq &gt;\/dev\/null 2&gt;&amp;1; then\n    log \"\u274c \u9519\u8bef\uff1a\u672a\u627e\u5230 jq\"\n    exit 1\nfi\n\n# ==============================\n# \u83b7\u53d6 Bing \u58c1\u7eb8\u4fe1\u606f\n# ==============================\n\nAPI=\"https:\/\/cn.bing.com\/HPImageArchive.aspx?format=js&amp;idx=0&amp;n=1&amp;mkt=zh-CN\"\n\nlog \"========================================\"\nlog \"\u5f00\u59cb\u6267\u884c Bing \u6bcf\u65e5\u58c1\u7eb8\u4efb\u52a1\"\n\nPIC=$(curl -fL \\\n    --retry 5 \\\n    --retry-all-errors \\\n    --connect-timeout 15 \\\n    --max-time 60 \\\n    -A \"Mozilla\/5.0\" \\\n    -s \\\n    \"$API\") || {\n    log \"\u274c \u83b7\u53d6 Bing \u58c1\u7eb8\u4fe1\u606f\u5931\u8d25\"\n    exit 1\n}\n\n# ==============================\n# \u89e3\u6790 JSON\n# ==============================\n\nDATE=$(echo \"$PIC\" | jq -er '.images&#91;0].startdate') || {\n    log \"\u274c \u83b7\u53d6\u58c1\u7eb8\u65e5\u671f\u5931\u8d25\"\n    exit 1\n}\n\nURLBASE=$(echo \"$PIC\" | jq -er '.images&#91;0].urlbase') || {\n    log \"\u274c \u83b7\u53d6\u58c1\u7eb8 URL \u5931\u8d25\"\n    exit 1\n}\n\nTITLE=$(echo \"$PIC\" | jq -r '.images&#91;0].title \/\/ \"Bing\"')\n\n# ==============================\n# \u6e05\u7406\u6587\u4ef6\u540d\n# ==============================\n\nSAFE_TITLE=$(echo \"$TITLE\" | sed 's#&#91;\/:*?\"&lt;&gt;|\\\\]#_#g')\n\n&#91; -n \"$SAFE_TITLE\" ] || SAFE_TITLE=\"Bing\"\n\nFILE=\"$SAVE_PATH\/${DATE}@${SAFE_TITLE}.jpg\"\nTMP_FILE=\"$FILE.tmp\"\n\n# ==============================\n# \u68c0\u67e5\u5f53\u5929\u662f\u5426\u5df2\u7ecf\u4e0b\u8f7d\n# ==============================\n\nif &#91; -s \"$FILE\" ]; then\n    SIZE=$(du -h \"$FILE\" | cut -f1)\n\n    log \"\u4eca\u65e5\u58c1\u7eb8\u5df2\u7ecf\u5b58\u5728\uff0c\u8df3\u8fc7\u4e0b\u8f7d\"\n    log \"\u6587\u4ef6\uff1a$FILE\"\n    log \"\u5927\u5c0f\uff1a$SIZE\"\n    log \"========================================\"\n\n    exit 0\nfi\n\nlog \"\u65e5\u671f\uff1a$DATE\"\nlog \"\u6807\u9898\uff1a$TITLE\"\n\n# ==============================\n# \u6784\u9020\u56fe\u7247\u5730\u5740\n# ==============================\n\nUHD_URL=\"https:\/\/cn.bing.com${URLBASE}_UHD.jpg\"\nHD_URL=\"https:\/\/cn.bing.com${URLBASE}_1920x1080.jpg\"\n\n# ==============================\n# \u6e05\u7406\u4e34\u65f6\u6587\u4ef6\n# ==============================\n\ntrap 'rm -f \"$TMP_FILE\"' EXIT\n\n# ==============================\n# \u4f18\u5148\u4e0b\u8f7d UHD\n# ==============================\n\nlog \"\u5c1d\u8bd5\u4e0b\u8f7d UHD...\"\n\nif curl -fL \\\n    --retry 5 \\\n    --retry-all-errors \\\n    --connect-timeout 15 \\\n    --max-time 300 \\\n    -A \"Mozilla\/5.0\" \\\n    -s \\\n    -o \"$TMP_FILE\" \\\n    \"$UHD_URL\" \\\n    &amp;&amp; &#91; -s \"$TMP_FILE\" ]; then\n\n    mv -f \"$TMP_FILE\" \"$FILE\"\n\n    SIZE=$(du -h \"$FILE\" | cut -f1)\n\n    log \"\u2705 UHD \u4e0b\u8f7d\u6210\u529f\"\n    log \"\u6587\u4ef6\u5927\u5c0f\uff1a$SIZE\"\n    log \"\u4fdd\u5b58\u4f4d\u7f6e\uff1a$FILE\"\n\n# ==============================\n# UHD \u5931\u8d25\uff0c\u964d\u7ea7\u5230 1920x1080\n# ==============================\n\nelse\n\n    log \"\u26a0\ufe0f UHD \u4e0b\u8f7d\u5931\u8d25\uff0c\u5c1d\u8bd5 1920x1080...\"\n\n    rm -f \"$TMP_FILE\"\n\n    if curl -fL \\\n        --retry 5 \\\n        --retry-all-errors \\\n        --connect-timeout 15 \\\n        --max-time 300 \\\n        -A \"Mozilla\/5.0\" \\\n        -s \\\n        -o \"$TMP_FILE\" \\\n        \"$HD_URL\" \\\n        &amp;&amp; &#91; -s \"$TMP_FILE\" ]; then\n\n        mv -f \"$TMP_FILE\" \"$FILE\"\n\n        SIZE=$(du -h \"$FILE\" | cut -f1)\n\n        log \"\u26a0\ufe0f 1920x1080 \u4e0b\u8f7d\u6210\u529f\"\n        log \"\u6587\u4ef6\u5927\u5c0f\uff1a$SIZE\"\n        log \"\u4fdd\u5b58\u4f4d\u7f6e\uff1a$FILE\"\n\n    else\n\n        log \"\u274c UHD \u548c 1920x1080 \u5747\u4e0b\u8f7d\u5931\u8d25\"\n\n        rm -f \"$TMP_FILE\"\n\n        exit 1\n    fi\nfi\n\n# \u7edf\u8ba1\u5df2\u4e0b\u8f7d\u603b\u6570\nTOTAL=$(find \"$SAVE_PATH\" -name \"*.jpg\" 2&gt;\/dev\/null | wc -l)\nlog \"\u5df2\u7d2f\u8ba1\u4e0b\u8f7d\uff1a$TOTAL \u5f20\u58c1\u7eb8\"\nlog \"========================================\"\nlog \"\u4e0b\u8f7d\u4efb\u52a1\u5b8c\u6210\"\n\nexit 0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u4e09\u3001\u7ed9\u811a\u672c\u6267\u884c\u6743\u9650<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6267\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x \/vol2\/1000\/Download\/BingWallpaper\/bing_wallpaper.sh\nchmod 755 \/vol2\/1000\/Download\/BingWallpaper\/bing_wallpaper.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u624b\u52a8\u8fd0\u884c\u4e00\u6b21\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/vol2\/1000\/Download\/BingWallpaper\/bing_wallpaper.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u6210\u529f\uff0c\u5e94\u8be5\u80fd\u770b\u5230\u7c7b\u4f3c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>========================================\n\u5f00\u59cb\u6267\u884c Bing \u6bcf\u65e5\u58c1\u7eb8\u4efb\u52a1\n\u65e5\u671f\uff1a......\n\u6807\u9898\uff1a......\n\u5c1d\u8bd5\u4e0b\u8f7d UHD...\n\u2705 UHD \u4e0b\u8f7d\u6210\u529f\n\u6587\u4ef6\u5927\u5c0f\uff1a......\n\u4fdd\u5b58\u4f4d\u7f6e\uff1a\/vol2\/1000\/Download\/BingWallpaper\/UHD\/20260xxx@xxxx.jpg\n\u5df2\u7d2f\u8ba1\u4e0b\u8f7d\uff1axxx \u5f20\u58c1\u7eb8\n========================================\n\u4e0b\u8f7d\u4efb\u52a1\u5b8c\u6210<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u68c0\u67e5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls -lh \/vol2\/1000\/Download\/BingWallpaper\/\nls -lh \/vol2\/1000\/Download\/BingWallpaper\/UHD\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u56db\u3001\u98de\u725b\u8bbe\u7f6e\u6bcf\u5929\u81ea\u52a8\u6267\u884c<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7f16\u8f91\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>crontab -e<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u6700\u540e\u589e\u52a0\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u6bcf\u5929\u5317\u4eac\u65f6\u95f4 00:05 \u6267\u884c\n5 0 * * * \/bin\/bash \/vol2\/1000\/Download\/BingWallpaper\/bing_wallpaper.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u5b58\u9000\u51fa\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7136\u540e\u68c0\u67e5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>crontab -l<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5e94\u8be5\u770b\u5230\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>5 0 * * * \/bin\/bash \/vol2\/1000\/Download\/BingWallpaper\/bing_wallpaper.sh<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u901a\u8fc7\u98de\u725b NAS \u5b9a\u65f6\u4efb\u52a1 + Shell \u811a\u672c \u6bcf\u5929\u4e0b\u8f7d\u4fdd\u5b58Bing\u6700\u65b0\u58c1\u7eb8 \u4e00\u3001\u5148\u786e\u8ba4\u76ee\u5f55 \u5148 SSH \u767b\u5f55\u98de\u725b NAS\uff0c\u6267\u884c &#8230;<\/p>\n","protected":false},"author":1,"featured_media":133,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[5],"tags":[],"class_list":["post-132","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nas"],"_links":{"self":[{"href":"https:\/\/www.juup.top\/index.php\/wp-json\/wp\/v2\/posts\/132","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.juup.top\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.juup.top\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.juup.top\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.juup.top\/index.php\/wp-json\/wp\/v2\/comments?post=132"}],"version-history":[{"count":5,"href":"https:\/\/www.juup.top\/index.php\/wp-json\/wp\/v2\/posts\/132\/revisions"}],"predecessor-version":[{"id":139,"href":"https:\/\/www.juup.top\/index.php\/wp-json\/wp\/v2\/posts\/132\/revisions\/139"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.juup.top\/index.php\/wp-json\/wp\/v2\/media\/133"}],"wp:attachment":[{"href":"https:\/\/www.juup.top\/index.php\/wp-json\/wp\/v2\/media?parent=132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.juup.top\/index.php\/wp-json\/wp\/v2\/categories?post=132"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.juup.top\/index.php\/wp-json\/wp\/v2\/tags?post=132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}