-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
306 lines (286 loc) · 15.8 KB
/
atom.xml
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
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<id>https://ihidchaos.github.io</id>
<title>郭玉超</title>
<updated>2020-04-27T02:00:01.313Z</updated>
<generator>https://github.com/jpmonette/feed</generator>
<link rel="alternate" href="https://ihidchaos.github.io"/>
<link rel="self" href="https://ihidchaos.github.io/atom.xml"/>
<subtitle>温故而知新</subtitle>
<logo>https://ihidchaos.github.io/images/avatar.png</logo>
<icon>https://ihidchaos.github.io/favicon.ico</icon>
<rights>All rights reserved 2020, 郭玉超</rights>
<entry>
<title type="html"><![CDATA[修改Ubuntu软件源并自启动SSH]]></title>
<id>https://ihidchaos.github.io/post/AUOtTt2Nl/</id>
<link href="https://ihidchaos.github.io/post/AUOtTt2Nl/">
</link>
<updated>2019-11-22T08:00:39.000Z</updated>
<content type="html"><![CDATA[<p>shell脚本如下:</p>
<pre><code>#/bin/sh
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt-get update
SSHD_FILE=/etc/ssh/sshd_config
SUDOERS_FILE=/etc/sudoers
sudo apt remove -y --purge openssh-server
sudo apt install -y openssh-server
echo "UsePrivilegeSeparation no" | sudo tee -a $SSHD_FILE
echo "PasswordAuthentication yes" | sudo tee -a $SSHD_FILE
sudo service ssh --full-restart
sed -i '/^sudo service ssh --full-restart/ d' ~/.bashrc
echo "%sudo ALL=(ALL) NOPASSWD: /usr/sbin/service ssh --full-restart" | sudo tee -a $SUDOERS_FILE
cat << 'EOF' >> ~/.bashrc
sshd_status=$(service ssh status)
if [[ $sshd_status = *"is not running"* ]]; then
sudo service ssh --full-restart
fi
EOF
</code></pre>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[修改Ubuntu软件源并自启动SSH]]></title>
<id>https://ihidchaos.github.io/post/apt&ssh/</id>
<link href="https://ihidchaos.github.io/post/apt&ssh/">
</link>
<updated>2019-11-22T08:00:39.000Z</updated>
<content type="html"><![CDATA[<p>shell脚本如下:</p>
<pre><code>#/bin/sh
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt-get update
SSHD_FILE=/etc/ssh/sshd_config
SUDOERS_FILE=/etc/sudoers
sudo apt remove -y --purge openssh-server
sudo apt install -y openssh-server
echo "UsePrivilegeSeparation no" | sudo tee -a $SSHD_FILE
echo "PasswordAuthentication yes" | sudo tee -a $SSHD_FILE
sudo service ssh --full-restart
sed -i '/^sudo service ssh --full-restart/ d' ~/.bashrc
echo "%sudo ALL=(ALL) NOPASSWD: /usr/sbin/service ssh --full-restart" | sudo tee -a $SUDOERS_FILE
cat << 'EOF' >> ~/.bashrc
sshd_status=$(service ssh status)
if [[ $sshd_status = *"is not running"* ]]; then
sudo service ssh --full-restart
fi
EOF
</code></pre>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[打包Python工程为PYC]]></title>
<id>https://ihidchaos.github.io/post/py2pyc/</id>
<link href="https://ihidchaos.github.io/post/py2pyc/">
</link>
<updated>2019-11-22T07:53:06.000Z</updated>
<content type="html"><![CDATA[<p>代码如下:</p>
<pre><code>import os
import sys
import tarfile
import shutil
import compileall
from pathlib import Path
#drag file into this
keyword = '.cpython-37'
app = sys.argv[1]
temp = 'publish_'+Path(app).name
def rm_files(_dir, suffix):
for prefix, dirs, files in os.walk(_dir):
for f in files:
if f.endswith(suffix):
filename = os.path.join(prefix, f)
os.remove(filename)
for d in dirs:
if d == '__pycache__':
shutil.rmtree(os.path.join(prefix, d))
def move(_dir, k):
os.chdir(_dir)
lt = os.listdir(_dir)
for f in lt:
if not os.path.isdir(f):
if k in f:
tmp = f.replace(k, '')
os.renames(f, tmp)
shutil.move(os.path.join(os.path.abspath('.'), tmp), os.path.join(os.path.abspath('..'), tmp))
else:
move(_dir + '\\' + f, k)
os.chdir('..')
def pack(output_filename, source_dir):
os.chdir(source_dir)
with tarfile.open(output_filename, "w:gz") as tar:
for name in os.listdir('.'):
tar.add(name)
tar.close()
f = Path(output_filename).resolve()
upper = Path.cwd().parent.joinpath(output_filename)
f.replace(upper)
if __name__ == '__main__':
rm_files(os.getcwd(), '.pyc')
if os.path.isdir(temp):
shutil.rmtree(temp)
shutil.copytree(app, temp, ignore=shutil.ignore_patterns('test', '.idea', 'log'))
compileall.compile_dir(temp)
move(os.getcwd(), keyword)
rm_files(temp, '.py')
pack(temp+'.tar.gz', temp)
print("done!")
</code></pre>
<p>保存为py2pyc.py,将要打包的文件夹拖拽至此脚本,即可打包。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[设定OpenWrt网络优先级]]></title>
<id>https://ihidchaos.github.io/post/op-net-first/</id>
<link href="https://ihidchaos.github.io/post/op-net-first/">
</link>
<updated>2019-11-22T07:48:48.000Z</updated>
<content type="html"><![CDATA[<p>1.添加WAN和WLAN接口<br>
2.修改WAN接口跃点数为1<br>
3.修改WLAN接口跃点数为2<br>
这样可以实现WAN口优先上网。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Shell处理Json]]></title>
<id>https://ihidchaos.github.io/post/shell_json/</id>
<link href="https://ihidchaos.github.io/post/shell_json/">
</link>
<updated>2019-07-02T08:09:44.000Z</updated>
<summary type="html"><![CDATA[<p>OpenWrt的jshn.sh处理数字会自动加0,jsonfilter和自写函数parse_json都可以解决此问题。</p>
]]></summary>
<content type="html"><![CDATA[<p>OpenWrt的jshn.sh处理数字会自动加0,jsonfilter和自写函数parse_json都可以解决此问题。</p>
<!-- more -->
<pre><code>#!/bin/sh
. /usr/share/libubox/jshn.sh
json_init
function parse_json()
{
echo $1 | \
sed -e 's/[{}]/''/g' | \
sed -e 's/", "/'\",\"'/g' | \
sed -e 's/" ,"/'\",\"'/g' | \
sed -e 's/" , "/'\",\"'/g' | \
sed -e 's/","/'\"---SEPERATOR---\"'/g' | \
awk -F=':' -v RS='---SEPERATOR---' "\$1~/\"$2\"/ {print}" | \
sed -e "s/\"$2\"://" | \
tr -d "\n\t" | \
sed -e 's/\\"/"/g' | \
sed -e 's/\\\\/\\/g' | \
sed -e 's/^[ \t]*//g' | \
sed -e 's/^"//' -e 's/"$//'
}
jd='{"mcid":1,"pid":"","errorcode":"0","status":0,"info":{"filename":"b11.2.tar.gz","version":1.20}}'
aaa=`jsonfilter -s $jd -e @.info.version`
echo 'aaa:'$aaa
echo 'ver1:'` parse_json $jd version`
json_load "$jd"
json_select info
json_get_var version version
echo 'version:'$version
</code></pre>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[N2N异地组网实战]]></title>
<id>https://ihidchaos.github.io/post/n2n-network/</id>
<link href="https://ihidchaos.github.io/post/n2n-network/">
</link>
<updated>2019-06-06T04:48:10.000Z</updated>
<summary type="html"><![CDATA[<h2 id="用户需求">用户需求</h2>
<p>技术人员在公司本地即可实现像访问本地网络(例如192.168.1.1)一样来访问异地网络,从而能够对远端路由网关下面的PLC等设备进行维护与调试。</p>
]]></summary>
<content type="html"><![CDATA[<h2 id="用户需求">用户需求</h2>
<p>技术人员在公司本地即可实现像访问本地网络(例如192.168.1.1)一样来访问异地网络,从而能够对远端路由网关下面的PLC等设备进行维护与调试。</p>
<!-- more -->
<h2 id="拓扑结构">拓扑结构</h2>
<figure data-type="image" tabindex="1"><a href="https://imgchr.com/i/EbdVFH"><img src="https://s2.ax1x.com/2019/05/16/EbdVFH.png" alt="EbdVFH.png" loading="lazy"></a></figure>
<h2 id="工作原理">工作原理</h2>
<p>在这里简单介绍一下N2N的原理。如下图所示,</p>
<figure data-type="image" tabindex="2"><img src="https://i.loli.net/2019/05/16/5cdd2ba339f7e20954.png" alt="n2n_yuanli.png" loading="lazy"></figure>
<p>n2n是一个二层架构的VPN网络,服务器端中心节点(<code>SuperNode</code>) 用于交流,相当于一个”路由器”, 而边界节点(<code>EdgeNode</code>)就是每一台在网络中(可以是内网中)的主机。EdgeNode通过和SuperNode沟通后,进入某个组的“局域网”,当有同“局域网”(同组)的主机进行连接时,两台主机就直接连接起来,就像局域网内的两台主机一样。在两台主机连接后, SuperNode任务完成,EdgeNode断开中心节点,实现P2P的加密通信。因此SuperNode并不参与两台主机间直接通信,。只是起到媒人的作用。</p>
<h2 id="解决过程">解决过程</h2>
<h3 id="本地pc">本地PC</h3>
<p>首先我们需要在本地PC安装N2N组网软件。您既可以选择源码编译方式安装,也可以选择下载编译后的程序直接使用,在这里我们用已经编译好的客户端软件做示范。下载程序,以管理员权限安装TAP适配器驱动,然后打开客户端并填写必要参数,如下图所示:</p>
<figure data-type="image" tabindex="3"><img src="https://i.loli.net/2019/05/16/5cdd2ba3a75ef79552.png" alt="n2n_win.png" loading="lazy"></figure>
<p>对于服务器地址和端口,可以采用网络的免费的服务器,也可以选择自建服务器。本地IP是您所想要使用的虚拟IP,组名和密码决定了您与其他设备能否处于同一网络内。服务器版本需要和客户端版本一致,否则无法连接。附加参数我们需要勾选<code>-r</code>参数以开启流量转发功能。填写完毕后,启动软件便可以连接了。</p>
<h3 id="远程网关">远程网关</h3>
<p>其次我们还需要在远端路由网关安装N2N客户端。</p>
<h4 id="openwrt硬路由型网关">OpenWrt硬路由型网关</h4>
<p>如何安装N2N我们不再赘述,安装完成后,编辑配置文件如下:<code>cat /etc/config/n2n_v2</code></p>
<pre><code>config edge
option enabled '1'
option tunname 'n2n'
option mode 'static'
option ipaddr '10.10.10.100'
option netmask '255.255.255.0'
option supernode '你的服务器IP'
option port '7654'
option community '组名'
option key '密码'
option route '1'
</code></pre>
<p>然后我们需要编辑OpenWrt的防火墙规则,执行如下脚本以开启防火墙通道和IP伪装(SNAT)功能。</p>
<pre><code>#!/bin/sh
n2n_v2=$(ifconfig | grep n2n | awk '{print $1}')
iptables -D FORWARD -i $n2n_v2 -j ACCEPT 2>/dev/null
iptables -D FORWARD -o $n2n_v2 -j ACCEPT 2>/dev/null
iptables -t nat -D POSTROUTING -o $n2n_v2 -j MASQUERADE 2>/dev/null
iptables -I FORWARD -i $n2n_v2 -j ACCEPT
iptables -I FORWARD -o $n2n_v2 -j ACCEPT
iptables -t nat -I POSTROUTING -o $n2n_v2 -j MASQUERADE
ip_segment=$(ip route | grep "dev $n2n_v2 proto" | awk '{print $1}')
iptables -t nat -I POSTROUTING -s $ip_segment -j MASQUERADE
</code></pre>
<p>然后运行程序<code>/etc/init.d/n2n_v2 start</code>即可连接到服务器。此时本地PC已经可以访问到网关的虚拟IP<code>10.10.10.100</code>,如下图所示:</p>
<figure data-type="image" tabindex="4"><img src="https://i.loli.net/2019/05/16/5cdd45d2692f610460.png" alt="100.png" loading="lazy"></figure>
<p>但是不能ping通网关的真实IP<code>192.168.1.254</code>,如下图所示:</p>
<figure data-type="image" tabindex="5"><img src="https://i.loli.net/2019/05/16/5cdd46c3ef01956073.png" alt="254timeout.png" loading="lazy"></figure>
<p>这是因为本地PC还没有指向192.168.1.0网段的路由,因此我们需要手动添加路由表。</p>
<pre><code>route add 192.168.1.0 mask 255.255.255.0 远程网关虚拟IP
</code></pre>
<p>例如<code>route add 192.168.1.0 mask 255.255.255.0 10.10.10.100</code>,注意添加路由表需要管理员权限。这时我们再访问网关以及网关的下属设备,就可以畅通无阻,如下图所示:</p>
<figure data-type="image" tabindex="6"><img src="https://i.loli.net/2019/05/16/5cdd2ba38610561126.png" alt="jieguo.png" loading="lazy"></figure>
<h4 id="windows软路由型网关">Windows软路由型网关</h4>
<p>有的工业设备是使用Windows作为路由使用的,这种情况下,需要开启Windows的路由和远程访问(Routing and Remote Access)服务,以管理员权限运行如下命令即可:</p>
<pre><code>sc config remoteaccess start=auto
sc start remoteaccess
</code></pre>
<p>然后将软路由的两个网口一个设置为固定IP地址作为LAN,而另一个则为WAN口接入互联网,接着按照在本地PC配置N2N的方式进行配置即可。当然了,要想访问到软路由及其下属设备,也需要同样的在本地PC添加路由表。</p>
<h2 id="总结">总结</h2>
<p>N2N的使用只需要简单的填写几个参数即可快速实现异地网络互连,使用简单方便。相对于传统的OpenVPN方案而言,不仅节省了服务器的开支,而且搭建方便,支持平台广泛,灵活性高,大大提高了企业运维人员的工作效率。</p>
]]></content>
</entry>
<entry>
<title type="html"><![CDATA[Hello Gridea]]></title>
<id>https://ihidchaos.github.io/post/hello-gridea/</id>
<link href="https://ihidchaos.github.io/post/hello-gridea/">
</link>
<updated>2018-12-11T16:00:00.000Z</updated>
<summary type="html"><![CDATA[<p>👏 欢迎使用 <strong>Gridea</strong> !<br>
✍️ <strong>Gridea</strong> 一个静态博客写作客户端。你可以用它来记录你的生活、心情、知识、笔记、创意... ...</p>
]]></summary>
<content type="html"><![CDATA[<p>👏 欢迎使用 <strong>Gridea</strong> !<br>
✍️ <strong>Gridea</strong> 一个静态博客写作客户端。你可以用它来记录你的生活、心情、知识、笔记、创意... ...</p>
<!-- more -->
<p><a href="https://github.com/getgridea/gridea">Github</a><br>
<a href="http://hvenotes.fehey.com/">Gridea 主页</a><br>
<a href="http://fehey.com/">示例网站</a></p>
<h2 id="特性">特性👇</h2>
<p>📝 你可以使用最酷的 <strong>Markdown</strong> 语法,进行快速创作</p>
<p>🌉 你可以给文章配上精美的封面图和在文章任意位置插入图片</p>
<p>🏷️ 你可以对文章进行标签分组</p>
<p>📋 你可以自定义菜单,甚至可以创建外部链接菜单</p>
<p>💻 你可以在 <strong>𝖶𝗂𝗇𝖽𝗈𝗐𝗌</strong> 或 <strong>𝖬𝖺𝖼𝖮𝖲</strong> 设备上使用此客户端</p>
<p>🌎 你可以使用 <strong>𝖦𝗂𝗍𝗁𝗎𝖻 𝖯𝖺𝗀𝖾𝗌</strong> 或 <strong>Coding Pages</strong> 向世界展示,未来将支持更多平台</p>
<p>💬 你可以进行简单的配置,接入 <a href="https://github.com/gitalk/gitalk">Gitalk</a> 或 <a href="https://github.com/SukkaW/DisqusJS">DisqusJS</a> 评论系统</p>
<p>🇬🇧 你可以使用<strong>中文简体</strong>或<strong>英语</strong></p>
<p>🌁 你可以任意使用应用内默认主题或任意第三方主题,强大的主题自定义能力</p>
<p>🖥 你可以自定义源文件夹,利用 OneDrive、百度网盘、iCloud、Dropbox 等进行多设备同步</p>
<p>🌱 当然 <strong>Gridea</strong> 还很年轻,有很多不足,但请相信,它会不停向前🏃</p>
<p>未来,它一定会成为你离不开的伙伴</p>
<p>尽情发挥你的才华吧!</p>
<p>😘 Enjoy~</p>
]]></content>
</entry>
</feed>