-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
307 lines (198 loc) · 33.5 KB
/
index.html
File metadata and controls
307 lines (198 loc) · 33.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="theme-color" content="#222"><meta name="generator" content="Hexo 7.3.0">
<link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
<link rel="mask-icon" href="/images/logo.svg" color="#222">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css" integrity="sha256-dABdfBfUoC8vJUBOwGVdm8L9qlMWaHTIfXt+7GnZCIo=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous">
<script class="next-config" data-name="main" type="application/json">{"hostname":"xmanweb.github.io","root":"/","images":"/images","scheme":"Pisces","darkmode":false,"version":"8.22.0","exturl":false,"sidebar":{"position":"left","width_expanded":320,"width_dual_column":240,"display":"post","padding":18,"offset":12},"hljswrap":true,"copycode":{"enable":false,"style":null},"fold":{"enable":false,"height":500},"bookmark":{"enable":true,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"duration":200,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"}}</script><script src="/js/config.js"></script>
<meta name="description" content="迪奥的猫的Hexo博客">
<meta property="og:type" content="website">
<meta property="og:title" content="迪奥的猫之家">
<meta property="og:url" content="https://xmanweb.github.io/index.html">
<meta property="og:site_name" content="迪奥的猫之家">
<meta property="og:description" content="迪奥的猫的Hexo博客">
<meta property="og:locale" content="zh_CN">
<meta property="article:author" content="xmanweb">
<meta name="twitter:card" content="summary">
<link rel="canonical" href="https://xmanweb.github.io/">
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":true,"isPost":false,"lang":"zh-CN","comments":"","permalink":"","path":"index.html","title":""}</script>
<script class="next-config" data-name="calendar" type="application/json">""</script>
<title>迪奥的猫之家</title>
<noscript>
<link rel="stylesheet" href="/css/noscript.css">
</noscript>
<!-- hexo injector head_end start -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/hexo-math@4.0.0/dist/style.css">
<!-- hexo injector head_end end --></head>
<body itemscope itemtype="http://schema.org/WebPage" class="use-motion">
<div class="headband"></div>
<main class="main">
<div class="column">
<header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container">
<div class="site-nav-toggle">
<div class="toggle" aria-label="切换导航栏" role="button">
</div>
</div>
<div class="site-meta">
<a href="/" class="brand" rel="start">
<i class="logo-line"></i>
<h1 class="site-title">迪奥的猫之家</h1>
<i class="logo-line"></i>
</a>
</div>
<div class="site-nav-right">
<div class="toggle popup-trigger" aria-label="搜索" role="button">
</div>
</div>
</div>
</header>
<aside class="sidebar">
<div class="sidebar-inner sidebar-overview-active">
<ul class="sidebar-nav">
<li class="sidebar-nav-toc">
文章目录
</li>
<li class="sidebar-nav-overview">
站点概览
</li>
</ul>
<div class="sidebar-panel-container">
<!--noindex-->
<div class="post-toc-wrap sidebar-panel">
</div>
<!--/noindex-->
<div class="site-overview-wrap sidebar-panel">
<div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
<p class="site-author-name" itemprop="name">xmanweb</p>
<div class="site-description" itemprop="description">迪奥的猫的Hexo博客</div>
</div>
<div class="site-state-wrap animated">
<nav class="site-state">
<div class="site-state-item site-state-posts">
<a href="/archives/">
<span class="site-state-item-count">1</span>
<span class="site-state-item-name">日志</span>
</a>
</div>
<div class="site-state-item site-state-tags">
<span class="site-state-item-count">1</span>
<span class="site-state-item-name">标签</span>
</div>
</nav>
</div>
</div>
</div>
</div>
</aside>
</div>
<div class="main-inner index posts-expand">
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="">
<link itemprop="mainEntityOfPage" href="https://xmanweb.github.io/2025/02/28/padavan%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC%E6%9B%B4%E6%96%B0dynv6%E5%8A%A8%E6%80%81%E8%A7%A3%E6%9E%90%E5%B9%B6%E5%B0%86%E6%9C%80%E6%96%B0IP%E5%9C%B0%E5%9D%80%E5%8F%91%E9%80%81%E5%88%B0%E9%82%AE%E7%AE%B1/">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="/images/avatar.gif">
<meta itemprop="name" content="xmanweb">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="迪奥的猫之家">
<meta itemprop="description" content="迪奥的猫的Hexo博客">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="undefined | 迪奥的猫之家">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h2 class="post-title" itemprop="name headline">
<a href="/2025/02/28/padavan%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC%E6%9B%B4%E6%96%B0dynv6%E5%8A%A8%E6%80%81%E8%A7%A3%E6%9E%90%E5%B9%B6%E5%B0%86%E6%9C%80%E6%96%B0IP%E5%9C%B0%E5%9D%80%E5%8F%91%E9%80%81%E5%88%B0%E9%82%AE%E7%AE%B1/" class="post-title-link" itemprop="url">padavan使用脚本更新dynv6动态解析并将最新IP地址发送到邮箱</a>
</h2>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2025-02-28 16:08:22 / 修改时间:16:17:49" itemprop="dateCreated datePublished" datetime="2025-02-28T16:08:22+08:00">2025-02-28</time>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>最近一直在用dynv6.com提供的<a target="_blank" rel="noopener" href="https://gist.github.com/corny/7a07f5ac901844bd20c9">dynv6.sh</a>来结合crontab定时更新dynv6的DDNS动态解析。但是突然有一天路由器重启后脚本不见了,之前的设置资料没有保留。没办法需要重新弄,就继续网上搜索,突然看见这位博主的文章<a target="_blank" rel="noopener" href="https://whatgui.github.io/2020/01/08/%E3%80%8C%E6%8D%AF%E9%A5%AC%E8%AE%B0%E5%BD%95%E3%80%8D%E9%85%8D%E7%BD%AE%E4%B8%80%E4%B8%8BPadavan%E7%9A%84IPV6%E5%8A%A8%E6%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90/">「捯饬记录」配置一下Padavan的IPV6动态域名解析</a>,发现原来padavan自带发邮件的sendmail程序,就比葫芦画瓢自己也弄一个。</p>
<h2 id="效果图"><a href="#效果图" class="headerlink" title="效果图"></a>效果图</h2><img src="/2025/02/28/padavan%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC%E6%9B%B4%E6%96%B0dynv6%E5%8A%A8%E6%80%81%E8%A7%A3%E6%9E%90%E5%B9%B6%E5%B0%86%E6%9C%80%E6%96%B0IP%E5%9C%B0%E5%9D%80%E5%8F%91%E9%80%81%E5%88%B0%E9%82%AE%E7%AE%B1/lbrowser_screenshot.png" class="" title="效果图">
<h2 id="脚本代码"><a href="#脚本代码" class="headerlink" title="脚本代码"></a>脚本代码</h2><p>这里直接借鉴了这位大佬(<a target="_blank" rel="noopener" href="https://whatgui.github.io/">whatGUI</a>)的代码。将电子邮件美化了一下。最终结果如下:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash -e</span></span><br><span class="line"><span class="comment">#./dynv6.sh [mode] [hostname] [name] [mac] # mode: router or neigh</span></span><br><span class="line"></span><br><span class="line">token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span><br><span class="line">mode=<span class="variable">$1</span></span><br><span class="line">hostname=<span class="variable">$2</span></span><br><span class="line">name=<span class="variable">${3:-'router'}</span></span><br><span class="line">mac=<span class="variable">$4</span></span><br><span class="line">device=ppp0</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> [ <span class="string">"<span class="variable">$mode</span>"</span> != <span class="string">"router"</span> -a <span class="string">"<span class="variable">$mode</span>"</span> != <span class="string">"neigh"</span> ]; <span class="keyword">then</span></span><br><span class="line"> <span class="built_in">echo</span> <span class="string">"please select router or neigh"</span></span><br><span class="line"> <span class="built_in">exit</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> [ <span class="string">"<span class="variable">$mode</span>"</span> = <span class="string">"neigh"</span> ]; <span class="keyword">then</span></span><br><span class="line"> <span class="keyword">if</span> [ -z <span class="variable">$mac</span> ]; <span class="keyword">then</span></span><br><span class="line"> <span class="built_in">echo</span> <span class="string">"mac is empty"</span></span><br><span class="line"> <span class="built_in">exit</span></span><br><span class="line"> <span class="keyword">fi</span></span><br><span class="line"> mac=$( <span class="built_in">echo</span> <span class="variable">$mac</span> | <span class="built_in">tr</span> <span class="string">'[A-Z]'</span> <span class="string">'[a-z]'</span> )</span><br><span class="line"> file=<span class="variable">$HOME</span>/.dynv6.neigh.<span class="variable">$name</span></span><br><span class="line"> [ -e <span class="variable">$file</span> ] && old=`<span class="built_in">cat</span> <span class="variable">$file</span>`</span><br><span class="line"> macinf=$(<span class="built_in">echo</span> <span class="variable">$mac</span> | awk -F <span class="string">':'</span> <span class="string">'{print $5$6}'</span> )</span><br><span class="line"> ipaddress=$(ip -6 neighbor | grep <span class="variable">$mac</span> | grep -v <span class="variable">$macinf</span> | grep -v <span class="string">'fe80'</span> | sed -n 1,1p | awk <span class="string">'{print $1}'</span>)</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line"> file=<span class="variable">$HOME</span>/.dynv6.router</span><br><span class="line"> [ -e <span class="variable">$file</span> ] && old=`<span class="built_in">cat</span> <span class="variable">$file</span>`</span><br><span class="line"> ipaddress=$(ip -6 addr list scope global <span class="variable">$device</span> | grep <span class="string">"global"</span> | sed -n <span class="string">'s/.*inet6 \([0-9a-f:]\+\).*/\1/p'</span>)</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">echo</span> old ip is : <span class="variable">$old</span></span><br><span class="line"><span class="built_in">echo</span> new ip is : <span class="variable">$ipaddress</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> [ -z <span class="string">"<span class="variable">$ipaddress</span>"</span> ]; <span class="keyword">then</span></span><br><span class="line"> <span class="built_in">echo</span> <span class="string">"no IPv6 address found"</span></span><br><span class="line"> <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> [ <span class="string">"<span class="variable">$old</span>"</span> = <span class="string">"<span class="variable">$ipaddress</span>"</span> ]; <span class="keyword">then</span></span><br><span class="line"> <span class="built_in">echo</span> <span class="string">"IPv6 address unchanged"</span></span><br><span class="line"> <span class="built_in">exit</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">echo</span> <span class="variable">$ipaddress</span> > <span class="variable">$file</span></span><br><span class="line"></span><br><span class="line">curl -s -S -f -k <span class="string">"https://dynv6.com/api/update?hostname=<span class="variable">$hostname</span>&ipv6=<span class="variable">$ipaddress</span>&token=<span class="variable">$token</span>"</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> [ <span class="string">"<span class="variable">$mode</span>"</span> = <span class="string">"router"</span> ]; <span class="keyword">then</span></span><br><span class="line"> curl -s -S -f -k <span class="string">"https://ipv4.dynv6.com/api/update?hostname=<span class="variable">$hostname</span>&ipv4=auto&token=<span class="variable">$token</span>"</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line">logger 监测到设备 <span class="variable">$name</span> 的IPv6变更,地址为<span class="variable">$ipaddress</span>, dynv6 DDNS已完成同步</span><br><span class="line"></span><br><span class="line">smtpserver=smtp.qq.com</span><br><span class="line">fromaddress=xxxxxxx@qq.com</span><br><span class="line">fromaddresspwd=xxxxxxxxxxxxxxxx</span><br><span class="line">toaddress=xxxxxx@qq.com</span><br><span class="line"></span><br><span class="line">mailtxt=<span class="variable">$HOME</span>/.mail.<span class="variable">$name</span></span><br><span class="line">sdate=`<span class="built_in">date</span> +%Y年%m月%d日%H:%M:%S`</span><br><span class="line"></span><br><span class="line"><span class="built_in">cat</span> > <span class="variable">$mailtxt</span> <<<span class="string">EOF</span></span><br><span class="line"><span class="string">To: ${toaddress}</span></span><br><span class="line"><span class="string">From: =?UTF-8?B?`echo -n 家中的路由| base64`?= <${fromaddress}></span></span><br><span class="line"><span class="string">Subject: =?UTF-8?B?`echo -n 您的设备 ${name} 检测到新的IP啦!| base64`?=</span></span><br><span class="line"><span class="string">MIME-VERSION: 1.0</span></span><br><span class="line"><span class="string">Content-type: text/html;charset=UTF-8</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"><style></span></span><br><span class="line"><span class="string">.wrap span{display: inline-block;}</span></span><br><span class="line"><span class="string">.w260{width: 260px;}</span></span><br><span class="line"><span class="string"></style></span></span><br><span class="line"><span class="string"><table style="width: 99.8%;height:99.8% vertical-align: top;"><tbody><tr><td></span></span><br><span class="line"><span class="string"> <div style="border-radius: 10px 10px 10px 10px;font-size:13px;color: #555555;width: 666px;font-family:'Century Gothic','Trebuchet MS','Hiragino Sans GB',微软雅黑,'Microsoft Yahei',Tahoma,Helvetica,Arial,'SimSun',sans-serif;margin:50px auto;border:1px solid #eee;max-width:100%;background: #ffffff repeating-linear-gradient(-45deg,#fff,#fff 1.125rem,transparent 1.125rem,transparent 2.25rem);box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);"></span></span><br><span class="line"><span class="string"> <div style="width:100%;background:#49BDAD;color:#ffffff;border-radius: 10px 10px 0 0;background-image: -moz-linear-gradient(0deg, rgb(67, 198, 184), rgb(255, 209, 244));background-image: -webkit-linear-gradient(0deg, rgb(67, 198, 184), rgb(255, 209, 244));height: 66px;"></span></span><br><span class="line"><span class="string"> <p style="font-size:15px;word-break:break-all;padding: 23px 32px;margin:0;background-color: hsla(0,0%,100%,.4);border-radius: 10px 10px 0 0;">您的家用路由器上的设备 ${name} 检测到新的IP啦!</span></span><br><span class="line"><span class="string"> </p></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"> <div style="margin:40px auto;width:90%"></span></span><br><span class="line"><span class="string"> <p>系统在您的${name}设备上检测到新的IPv6地址:</p></span></span><br><span class="line"><span class="string"> <p style="background: #fafafa repeating-linear-gradient(-45deg,#fff,#fff 1.125rem,transparent 1.125rem,transparent 2.25rem);box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);margin:20px 0px;padding:15px;border-radius:5px;font-size:14px;color:#555555;">${ipaddress}</p></span></span><br><span class="line"><span class="string"> <p class="wrap" style="text-decoration:none"><span class="w260">更新时间:${sdate}</span></p></span></span><br><span class="line"><span class="string"> <p class="wrap" style="text-decoration:none"><span class="w260">DDNS域名:${hostname}</span></p></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"> </div></span></span><br><span class="line"><span class="string"></td></tr></tbody></table></span></span><br><span class="line"><span class="string">EOF</span></span><br><span class="line"></span><br><span class="line">sendmail -v -w 30 -f <span class="variable">$fromaddress</span> -t <span class="variable">$toaddress</span> -H <span class="string">"openssl s_client -quiet -connect <span class="variable">$smtpserver</span>:465"</span> -au<span class="variable">$fromaddress</span> -ap<span class="variable">$fromaddresspwd</span> < <span class="variable">$mailtxt</span></span><br><span class="line"></span><br></pre></td></tr></table></figure>
<h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>使用方法和大佬提供的一样,不过我这个既更新DDNS,也发送邮件。</p>
<blockquote>
<p>参数格式说明:./dynv6.sh [模式] [域名] [设备名] [MAC地址]</p>
</blockquote>
<p>1.将上述代码保存为一个文件名为dynv6.sh的文本文件,务必填写dynv6的token信息和SMTP的配置信息。<br>2.使用scp命令拷贝到路由器中的/etc/storage目录下。<br>3.用ssh连接到路由器,对脚本文件添加可执行权限。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> /etc/storage</span><br><span class="line"><span class="built_in">chmod</span> +x dynv6.sh</span><br></pre></td></tr></table></figure>
<p>4.使用<code>crontab -e</code>命令,编辑定时表,定时执行。</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">#添加需要进行 DDNS 的设备,每 10 分钟自动执行一次检查。注意!把命令中的域名改为你的域名,比如 xxxx.dynv6.net,设备名自定但必须是英文否则会出错,MAC 地址要求按照带有冒号分隔符的格式,例如11:22:33:aa:bb:cc</span><br><span class="line">#可以更新路由器的IPv6和IPv4地址DDNS解析,并发送邮件。</span><br><span class="line">*/10 * * * * /etc/storage/dynv6.sh router 域名</span><br><span class="line">#可根据mac地址更新路由器下级设备的IPv6地址的DDNS解析,并发送邮件。</span><br><span class="line">*/10 * * * * /etc/storage/dynv6.sh neigh 域名 设备名 MAC地址</span><br><span class="line"></span><br><span class="line">#可以添加多个设备,每一行对应一个设备</span><br><span class="line">#举例如下</span><br><span class="line">#*/10 * * * * /etc/storage/dynv6.sh router xxxx.dynv6.net</span><br><span class="line">#*/10 * * * * /etc/storage/dynv6.sh neigh yyyy.dynv6.net phone 11:22:33:aa:bb:cc</span><br></pre></td></tr></table></figure>
<h2 id="遇到的坑"><a href="#遇到的坑" class="headerlink" title="遇到的坑"></a>遇到的坑</h2><h3 id="1-notepad–的行尾换行符bug"><a href="#1-notepad–的行尾换行符bug" class="headerlink" title="1.notepad–的行尾换行符bug"></a>1.notepad–的行尾换行符bug</h3><p>我使用的是debian提供的notepad–/now 2.0.0 mips64el,复制完大佬的代码后,粘贴完成后,选择行尾代码为LF。结果上传到路由器上后,就报错<code>syntax error: unexpected "then" (expecting "fi")</code>。又是换bash,又是换sh,找了半天也没有找到问题。后来换Kate编辑器后重新保存一遍,好了。</p>
<h3 id="2-空格字符问题"><a href="#2-空格字符问题" class="headerlink" title="2.空格字符问题"></a>2.空格字符问题</h3><p>复制大佬的代码后,运行提示找不到awk,我根据kate编辑器的显示,发现有奇怪的空格字符,如下图,删了,好了。</p>
<img src="/2025/02/28/padavan%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC%E6%9B%B4%E6%96%B0dynv6%E5%8A%A8%E6%80%81%E8%A7%A3%E6%9E%90%E5%B9%B6%E5%B0%86%E6%9C%80%E6%96%B0IP%E5%9C%B0%E5%9D%80%E5%8F%91%E9%80%81%E5%88%B0%E9%82%AE%E7%AE%B1/111.png" class="" title="awk">
<h3 id="3-多个IPv6地址的问题"><a href="#3-多个IPv6地址的问题" class="headerlink" title="3.多个IPv6地址的问题"></a>3.多个IPv6地址的问题</h3><p>用大佬的代码更新DDNS时,报错,说URL错误,跟踪了下,发现$ipaddress变量里存了两个地址。原来的代码看来下逻辑,是默认去除掉fe80开头的和mac地址5、6位拼接的这俩IPv6地址。结果我的PC没有mac地址5、6位拼接的这个地址,具体原因未知。没办法,只能取第一行的了,代码由下图改为这样</p>
<img src="/2025/02/28/padavan%E4%BD%BF%E7%94%A8%E8%84%9A%E6%9C%AC%E6%9B%B4%E6%96%B0dynv6%E5%8A%A8%E6%80%81%E8%A7%A3%E6%9E%90%E5%B9%B6%E5%B0%86%E6%9C%80%E6%96%B0IP%E5%9C%B0%E5%9D%80%E5%8F%91%E9%80%81%E5%88%B0%E9%82%AE%E7%AE%B1/222.png" class="" title="sed">
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ipaddress=$(ip -6 neighbor | grep <span class="variable">$mac</span> | grep -v <span class="variable">$macinf</span> | grep -v <span class="string">'fe80'</span> | sed -n 1,1p | awk <span class="string">'{print $1}'</span>)</span><br></pre></td></tr></table></figure>
<h3 id="4-sendmail发送465端口报错或卡住的问题"><a href="#4-sendmail发送465端口报错或卡住的问题" class="headerlink" title="4.sendmail发送465端口报错或卡住的问题"></a>4.sendmail发送465端口报错或卡住的问题</h3><p>我使用的是qq邮箱,发现大佬给的代码报错,加了465端口会卡住,最后改为如下代码。其中<code>-quiet</code>必须加,不加就报错。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sendmail -v -w 30 -f <span class="variable">$fromaddress</span> -t <span class="variable">$toaddress</span> -H <span class="string">"openssl s_client -quiet -connect <span class="variable">$smtpserver</span>:465"</span> -au<span class="variable">$fromaddress</span> -ap<span class="variable">$fromaddresspwd</span> < <span class="variable">$mailtxt</span></span><br></pre></td></tr></table></figure>
<h3 id="5-邮件正文格式的问题"><a href="#5-邮件正文格式的问题" class="headerlink" title="5.邮件正文格式的问题"></a>5.邮件正文格式的问题</h3><p>用大佬给的代码,发现发送过去,确实有标题,有内容,但是手机的邮件客户端接收后,看不到正文。经过研究发现在<code>Subject: 您的设备 ${name} 检测到新的IP啦!</code>标题和下方邮件正文部分,必须间隔一个空行。没有这个空行就会出现这个问题。</p>
<h3 id="6-邮件标题乱码和发件人名称"><a href="#6-邮件标题乱码和发件人名称" class="headerlink" title="6.邮件标题乱码和发件人名称"></a>6.邮件标题乱码和发件人名称</h3><p>测试yandex提供的域名邮箱时,发现无法正常显示邮件标题,经搜索查看<a target="_blank" rel="noopener" href="https://www.cnblogs.com/thsrite/p/11595995.html">这篇文章</a>介绍的方法,采用base64编码的方式解决,但是实际使用</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">在中文的左边加 =?UTF-8?B?`echo ,右边加 | base64`?=</span><br></pre></td></tr></table></figure>
<p>后,发现邮件标题正常显示,但发件人结尾会带个n。经过分析,发现是echo会带个回车符,改用<code>echo -n</code>就好了。</p>
</div>
<footer class="post-footer">
<div class="post-eof"></div>
</footer>
</article>
</div>
</div>
</main>
<footer class="footer">
<div class="footer-inner">
<div class="copyright">
©
<span itemprop="copyrightYear">2025</span>
<span class="with-love">
<i class="fa fa-heart"></i>
</span>
<span class="author" itemprop="copyrightHolder">xmanweb</span>
</div>
<div class="powered-by">由 <a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/pisces/" rel="noopener" target="_blank">NexT.Pisces</a> 强力驱动
</div>
</div>
</footer>
<div class="toggle sidebar-toggle" role="button">
<span class="toggle-line"></span>
<span class="toggle-line"></span>
<span class="toggle-line"></span>
</div>
<div class="sidebar-dimmer"></div>
<div class="back-to-top" role="button" aria-label="返回顶部">
<i class="fa fa-arrow-up fa-lg"></i>
<span>0%</span>
</div>
<div class="reading-progress-bar"></div>
<a role="button" class="book-mark-link book-mark-link-fixed"></a>
<a href="https://github.com/xmanweb" class="github-corner" title="在 GitHub 上关注我" aria-label="在 GitHub 上关注我" rel="noopener" target="_blank"><svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>
<noscript>
<div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
</noscript>
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous"></script>
<script src="/js/comments.js"></script><script src="/js/utils.js"></script><script src="/js/motion.js"></script><script src="/js/sidebar.js"></script><script src="/js/next-boot.js"></script><script src="/js/bookmark.js"></script>
<script class="next-config" data-name="mermaid" type="application/json">{"enable":true,"theme":{"light":"default","dark":"dark"},"js":{"url":"https://cdnjs.cloudflare.com/ajax/libs/mermaid/11.4.0/mermaid.min.js","integrity":"sha256-G8ouPAnw4zzMbnAenHnVz6h9XpKbNdOkrqTh7AadyHs="}}</script>
<script src="/js/third-party/tags/mermaid.js"></script>
<script class="next-config" data-name="enableMath" type="application/json">false</script><script class="next-config" data-name="mathjax" type="application/json">{"enable":true,"tags":"none","js":{"url":"https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.2/es5/tex-mml-chtml.js","integrity":"sha256-MASABpB4tYktI2Oitl4t+78w/lyA+D7b/s9GEP0JOGI="}}</script>
<script src="/js/third-party/math/mathjax.js"></script>
</body>
</html>