首页
壁纸
留言板
友链
更多
统计归档
Search
1
TensorBoard:训练日志及网络结构可视化工具
12,588 阅读
2
主板开机跳线接线图【F_PANEL接线图】
7,060 阅读
3
Linux使用V2Ray 原生客户端
6,165 阅读
4
移动光猫获取超级密码&开启公网ipv6
4,726 阅读
5
NVIDIA 显卡限制功率
3,135 阅读
好物分享
实用教程
linux使用
wincmd
学习笔记
mysql
java学习
nginx
综合面试题
大数据
网络知识
linux
放码过来
python
javascript
java
opencv
蓝桥杯
leetcode
深度学习
开源模型
相关知识
数据集和工具
模型轻量化
语音识别
计算机视觉
杂七杂八
硬件科普
主机安全
嵌入式设备
其它
bug处理
登录
/
注册
Search
标签搜索
好物分享
学习笔记
linux
MySQL
nvidia
typero
内网穿透
webdav
vps
java
cudann
gcc
cuda
树莓派
CNN
图像去雾
ssh安全
nps
暗通道先验
阿里云
jupiter
累计撰写
354
篇文章
累计收到
71
条评论
首页
栏目
好物分享
实用教程
linux使用
wincmd
学习笔记
mysql
java学习
nginx
综合面试题
大数据
网络知识
linux
放码过来
python
javascript
java
opencv
蓝桥杯
leetcode
深度学习
开源模型
相关知识
数据集和工具
模型轻量化
语音识别
计算机视觉
杂七杂八
硬件科普
主机安全
嵌入式设备
其它
bug处理
页面
壁纸
留言板
友链
统计归档
搜索到
62
篇与
的结果
2022-01-16
TensorBoard:训练日志及网络结构可视化工具
1.安装pip install tensorboard2.可视化标量数据(loss和accuracy)from torch.utils.tensorboard import SummaryWriter import random # 实例化TensorBoard logs_writer = SummaryWriter('./logs') # 可视化标量数据 for epoch_id in range(100): logs_writer.add_scalar("train/loss",random.random(),epoch_id) logs_writer.add_scalar("train/accuracy",random.random(),epoch_id) logs_writer.add_scalar("test/loss",random.random(),epoch_id) logs_writer.add_scalar("test/accuracy",random.random(),epoch_id)tensorboard --logdir=logs --bind_all3.可视化网络结构""" 可视化网络结构 """ import torch import torch.nn as nn from torch.utils.tensorboard import SummaryWriter # 实例化TensorBoard writer = SummaryWriter('./model_vis') # 构建网络模型 - 使用自定义类 class Digit_Rec(nn.Module): def __init__(self): super(Digit_Rec,self).__init__() self.conv1 = nn.Conv2d(1,10,5) #1:灰度图片的通道,10:输出通道,5:kernel self.relu1 = nn.ReLU() self.max_pool = nn.MaxPool2d(2,2) self.conv2 = nn.Conv2d(10,20,3) #10:输入通道,20:输出通道,3:Kernel self.relu2 = nn.ReLU() self.fc1 = nn.Linear(20*10*10,500) # 20*10*10:输入通道,500:输出通道 self.relu3 = nn.ReLU() self.fc2 = nn.Linear(500,10) # 500:输入通道,10:输出通道 self.relu4 = nn.ReLU() self.softmax = nn.Softmax(dim=1) def forward(self,x): batch_size = x.size(0) # x的格式:batch_size x 1 x 28 x 28 拿到了batch_size x = self.conv1(x) # 输入:batch*1*28*28 输出:batch*10*24*24 x = self.relu1(x) x = self.max_pool(x) # 输入:batch*10*24*24输出:batch*10*12*12 x = self.conv2(x) x = self.relu2(x) x = x.view(batch_size,-1) #fatten 展平 -1自动计算维度,20*10*10=2000 x = self.fc1(x) # 输入:batch*2000 输出:batch*500 x = self.relu3(x) x = self.fc2(x) # 输入:batch*500 输出:batch*10 x = self.relu4(x) output = self.softmax(x) # 计算分类后,每个数字的概率值 return output model = Digit_Rec() model = Digit_Rec() images = torch.randn(1, 1, 28, 28) writer.add_graph(model, images) writer.close()tensorboard --logdir=model_vis --bind_all参考资料Pytorch中使用tensorboard学习笔记(2)记录损失loss和准确率accuracypytorch中使用tensorboard绘制Accuracy/Loss曲线(train和test显示在同一幅图中)pytorch中使用TensorBoard进行可视化Loss及特征图
2022年01月16日
12,588 阅读
4 评论
0 点赞
2022-01-15
MyGraphPaper:免费在线方格笔记本制作工具
官方网站:https://www.mygraphpaper.com/index.php?lang=zh-hans如果你的笔记本纸用完了,买,是一种解决方案。自己做,也可以。而且更快更省钱。你还能想做什么样式,就做什么样式,用 MyGraphPaper 这样的在线工具就可以。在方格纸生成界面上,有包括笔记纸、方格纸、网格纸、画稿纸、乐谱纸等 17 种类型的笔记纸可供选择。在上方选择好类型后,下面还能对笔记纸进行自定义调整。在纸张设定里,提供了纸张类别、自定义大小、方向等多项自定义选项,你还可以自行选择插入小标题。下方还提供了更为细致的自定义选项。你可以在这里自定义间隔线、网点、线条、文字等多种格式。不同的纸张类型提供了不同的自定义选项。想要制作一张康奈尔笔记纸?点击模板,即可得到一张这样的页面。如果我们想要得到只有横向间隔线的页面,将直间隔线取消勾选即可;如果我们想要获得纯白页面,只需要将间隔线取消勾选,同时取消文字和水印。想镜像整个页面,调整方块位置即可。版式设计完成后,点击 PDF 输出下载,即可预览笔记纸。官方为我们提供了 PDF 格式的下载以及快速打印功能。一张自己独有的笔记纸,就这样轻松做出来了。参考资料https://topbook.cc/search/article?keywords=%E4%BD%9C%E4%B8%9A%E7%BA%B8&selectedArticle=1820
2022年01月15日
657 阅读
0 评论
0 点赞
2022-01-13
tqdm:简单好用的python进度条
1.介绍Tqdm是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator)。安装方式如下:pip install tqdm2.简单使用2.1 用法一from tqdm import tqdm import time for i in tqdm(range(1000)): time.sleep(0.01) #do something100%|██████████| 1000/1000 [00:10<00:00, 95.17it/s]2.2 用法二from tqdm import trange import time for i in trange(100): time.sleep(0.01) #do something100%|██████████| 100/100 [00:01<00:00, 94.86it/s]2.3 用法三from tqdm import tqdm import timepython pbar = tqdm(total=100) for i in range(100): time.sleep(0.05) #do something pbar.update(1) pbar.close()100%|██████████| 100/100 [00:05<00:00, 19.35it/s2.4 用法四(具有前后缀描述功能)(推荐)from tqdm import tqdm import time import random pbar = tqdm(total=100) for i in range(100): time.sleep(0.05) #do something pbar.update(1) pbar.set_description("Epoch: %d" % 1) # 设置前缀 pbar.set_postfix({'loss':random.random()}) # 设置后缀 pbar.close()Epoch: 1: 100%|██████████| 100/100 [00:07<00:00, 14.28it/s, loss=0.709] 参考资料tqdm介绍及常用方法在tqdm中加入前缀和后缀详细介绍Python进度条tqdm的使用
2022年01月13日
679 阅读
0 评论
0 点赞
2022-01-11
Leanote(蚂蚁笔记):开源个人云笔记搭建
1.介绍Leanote是一款开源云笔记软件,具备 markdown 输入,代码高亮,多人协作,笔记历史记录,笔记内导航,直接发布为博客等等能力。特性高效笔记:Leanote 有易操作的界面, 包含一款富文本编辑器和Markdown编辑器,让您的笔记记录更轻松和高效。对高阶用户,我们还提供Vim 和Emacs 编辑模式,助推你的写作速度更上层楼。知识管理: Leanote 灵活而强大的“笔记本-笔记-标签”系统,让它成为你个人知识管理的利器。分享: 你可以通过Leanote同好友分享知识、想法和经历, 邀请好友加入你的笔记簿,通过云端交流信息。协作: Leanote协助你与同事之间相互协作,激荡新思路,随时随地头脑风暴。博客: Leanote也可以作为你的个人博客, 把你的知识传播的更远!其它特性支持Markdown编辑写作模式Vim 及 Emacs 编辑模式支持PDF导出支持批量操作博客自定义主题, 实现高度定制化2.搭建教程2.1 安装 MongodbcenterOS1、进入到yum仓库中,配置MongoDB的yum源。vim /etc/yum.repos.d/mongodb-org.repo2、通过点击 i 进入编辑模式,并在mongodb-org.repo中添加如下代码。[mongodb-org] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc注意:name #名称baseurl #获得下载的路径gpkcheck=1 #表示对从这个源下载的rpm包进行校验;enable=1 #表示启用这个源。gpgkey #gpg验证3、配置完yum源之后,通过ESC键退出并输入:wq保存退出,然后重新加载下yum源。yum list4、下载Mongodb。yum install mongodb-org -y5、配置MongoDB配置文件。vim /etc/mongod.conf 通过点击 i 进入编辑模式,修改其中的bindIp,配置完后,通过ESC键退出并输入:wq保存退出。net: port: 27017 bindIp: 0.0.0.0 6、执行以下命令,启动MongoDB服务。systemctl start mongod.service7、执行以下命令,查看MongoDB运行状态。systemctl status mongodubuntu1、首先在Mongodb官网下载最新版本。MongoDB 源码下载地址:https://www.mongodb.com/download-center#communitywget https://fastdl.mongodb.org/linux/mongodb-shell-linux-x86_64-ubuntu1804-5.0.5.tgz2、接着解压文件tar -xzvf mongodb-linux-x86_64-3.0.1.tgz/3、修改/etc/profile文件,配置环境变量,添加下面的命令在/etc/profile文件的最后面即可。export PATH=$PATH:/home/userone/mongodb-linux-x86_64-3.0.1/bin4、执行下面的命令使更改生效source /etc/profile5、新建配置文件mongod.confsystemLog: destination: file path: "/home/no4/mongodata/log/mongod.log" logAppend: true storage: dbPath: "/home/no4/mongodata/db" journal: enabled: true processManagement: fork: true net: bindIp: localhost port: 270175、在配置文件所指定的位置建立对应的文件夹mkdir /home/userone/data6、mongod -f /home/no4/mongodb/mongod.conf命令启动mongodb服务器,正常输出如下:root@no4-Default-string:/home/no4# mongod -f ./mongodb/mongod.conf about to fork child process, waiting until server is ready for connections. forked process: 11330 child process started successfully, parent exiting输入下面的命令启动它mongo如果没有提示错误,这说明Mongodb安装成功。2.2 安装Leanote1. 下载Leanote二进制安装包。wget --no-check-certificate https://nchc.dl.sourceforge.net/project/leanote-bin/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz2. 解压安装包。tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz3. 编辑文件leanote/conf/app.conf,在文件中找到app.secret项,将该项的值改为任意字符串。(如不修改将会有安全风险)。说明:根据Leanote官方文档,如不修改app.secret项的值,将会有安全隐患。a. 使用vim编辑器打开文件leanote/conf/app.conf。vim leanote/conf/app.confb. 进入vim编辑器后,输入:/app.secret=并按下回车查找app.secret位置。c. 找到该项位置后按下i键进入编辑模式,修改该项的值为任意字符串。d. 修改完成后,按下esc键退出编辑模式,输入:wq保存并退出vim编辑器。修改后如图所示。4. 初始化数据库。mongorestore -h localhost -d leanote --dir /root/leanote/mongodb_backup/leanote_install_data/5. 启动服务。nohup bash /root/leanote/bin/run.sh > /root/leanote/run.log 2>&1 &6. 访问云笔记。在浏览器中访问http://<IP>:9000,管理用户为admin,密码为abc123。登录成功后如下图所示。参考资料https://developer.aliyun.com/adc/scenario/b1ac9deecdb143469de985471b440aa7?spm=a2c6h.13858375.0.0.511279a9x0qQG8https://github.com/leanote/leanote云服务器搭建开源个人云笔记Leanote(蚂蚁笔记)Ubuntu下mongodb的安装与使用
2022年01月11日
1,731 阅读
0 评论
0 点赞
2022-01-05
Subsonic:使用VPS自建私有云音乐服务
1.简介Subsonic是一个免费且基于Web的媒体流媒体,用Java编写,适用于Linux、MacOS和Windows平台。使用Subsonic,你可以从家用计算机或任何面向公众的计算机流式传输音乐,并通过网络浏览器随时随地聆听音乐,因此你无需将音乐与弹性同步或Syncthing等文件同步应用程序同步。Subsonic功能:支持MP3、OGG、AAC以及通过HTTP流式传输的任何其他音频或视频格式适用于任何支持网络的媒体播放器,如Winamp、iTunes、XMMS、VLC、MusicMatch和Windows Media Player。专辑艺术展示,即时播放列表,即时转码。适用于Mac、Windows、Android、iPhone、Windows Phone和桌面应用的移动应用,Android应用支持离线播放。收听播客,分配评级,添加评论和创建播放列表。与朋友和家人分享音乐。流视频(高级功能)。2.在Ubuntu 上安装Subsonic2.1 安装java环境sudo apt update sudo apt install openjdk-8-jre当前Subsonic版本与Java 11不兼容,如果之前在Ubuntu 18.04上安装了Java 11,那么需要运行以下命令来选择默认的Java版本sudo update-alternatives --config java2.2 安装Subsonic接下来,使用以下命令下载Subsonic deb软件包,该命令将下载6.1.6版,可以在Subsonic网站的下载页面上查看最新版本,如果有新版本,只需将6.1.6替换为新版本号即可:wget https://s3-eu-west-1.amazonaws.com/subsonic-public/download/subsonic-6.1.6.deb用dpkg安装它:sudo dpkg -i subsonic-6.1.5.deb安装后,Subsonic守护程序将自动启动2.3 管理Subsonic# 可以通过以下命令检查其状态: systemctl status subsonic # 如果它没有运行,那么你可以手动启动它: sudo systemctl start subsonic # 并在系统启动时启用自动启动: sudo systemctl enable subsonic2.4 访问测试并进行相关设置登录默认情况下,subsonic侦听0.0.0.0:4040,这意味着它接受来自本地网络和Internet的请求。如果在本地Ubuntu计算机上安装了Subsonic,请在浏览器中输入http://localhost:4040访问Subsonic Web界面:如果在面向Internet的Ubuntu服务器上安装了Subsonic,请在浏览器中输入http://your-server-ip:4040访问Subsonic Web界面:默认用户名和密码是admin修改语言修改媒体文件夹请注意,用户必须可以访问该文件夹添加文件夹后,单击“立即扫描媒体文件夹”按钮,将可以在“Index”页面中收听音乐:2.5 更改启动用户默认情况下,Subsonic进程以root用户身份运行,出于安全原因,应该将其更改为普通用户,这可以通过编辑/etc/default/subsonic文件来完成:sudo vim /etc/default/subsonic找到以下行:SUBSONIC_USER=root将root更改为自己的用户帐户,如jupiter:SUBSONIC_USER=jupiter保存并关闭文件,然后重新启动subsonic守护程序以使更改生效:sudo systemctl restart subsonic2.在Centos 上安装Subsonic参考:https://zhuanlan.zhihu.com/p/46767211参考资料使用VPS自建私有云音乐服务–Subsonic在Ubuntu 18.04系统上安装Subsonic的方法
2022年01月05日
1,678 阅读
0 评论
0 点赞
2021-12-23
Code-server:一款基于VScode的在线编辑器
1.介绍code-server是一款基于VScode的在线编辑器,主要用于在Linux服务器环境下,实现任何设备通过浏览器即可访问VScode, 进而实现在远程编程.GIthub官方文档:https://github.com/cdr/code-server2.安装使用一键脚本安装curl -fsSL https://code-server.dev/install.sh | sh修改配置文件vim ~/.config/code-server/config.yaml# 对以下内容自行进行修改 bind-addr: 0.0.0.0:8080 auth: password password: jupiter cert: false使用screen后台运行screen -S code-server code-server打开IP:8080输入密码测试参考资料https://github.com/coder/code-server
2021年12月23日
1,139 阅读
1 评论
0 点赞
2021-12-23
SSHFS:通过ssh实现挂载远程目录到本地
1.简介SSHFS(SSH Filesystem)是一个基于FUSE的文件系统客户端,用于通过SSH连接远程目录。SSHFS使用的是SFTP协议,它是SSH的一个子系统,在大多数SSH服务器上默认启用与其他网络文件系统(如NFS和Samba)相比,SSHFS的优势在于它不需要在服务器端进行任何额外的配置。要使用SSHFS,您只需要SSH访问远程服务器。2.安装ubuntusudo apt install sshfscenteOSsudo yum -y install sshfs3.使用3.1 命令格式挂载sshfs [user@]host:[dir] mountpoint [options] # 常用option -p PORT #指定端口取消挂载umount mountpoint3.2 示例sshfs root@192.168.0.105:/Shares /mnt # 挂载 umount /mnt # 取消挂载如果需要开机自动挂载,可以在/etc/fstab文件中添加挂载项(前提是需要设置无密码登录,不然开机不能挂载):echo 'root@192.168.0.105:/Shares /mnt fuse.sshfs defaults 0 0'>> /etc/fstab参考资料使用SSHFS文件系统远程挂载目录Ubuntu下使用sshfs挂载远程目录到本地
2021年12月23日
860 阅读
0 评论
0 点赞
2021-12-22
Next Terminal:在浏览器中管理你的服务器
1.介绍Next Terminal是使用Golang和React开发的一款HTML5的远程桌面网关,具有小巧、易安装、易使用、资源占用小的特点,支持RDP、SSH、VNC和Telnet协议的连接和管理。Next Terminal基于 Apache Guacamoleopen in new window 开发,使用到了guacd服务。目前支持的功能有:授权凭证管理资产管理(支持RDP、SSH、VNC、TELNET协议)指令管理批量执行命令在线会话管理(监控、强制断开)离线会话管理(查看录屏)双因素认证资产标签资产授权多用户&用户分组计划任务2.docker安装#docker安装Next Terminal docker run -d \ -p 8088:8088 \ --name next-terminal \ --restart always dushixiang/next-terminal:latest安装完毕后访问IP:8088,用户名为admin,密码为admin,登录后可在后台进行修改。参考资料使用Next Terminal在浏览器中管理你的服务器https://next-terminal.typesafe.cn/
2021年12月22日
1,036 阅读
0 评论
0 点赞
2021-12-22
h5ai:一款功能强大 php 文件目录列表程序
1.介绍h5ai是一款功能强大 php 文件目录列表程序,不需要数据库,支持在线预览文本、图片、音频、视频等。h5ai功能包括:文件排序,不同视图模式,本地化,面包屑,树视图,自定义页眉和页脚,文件过滤器和搜索,文件夹大小,自动刷新,打包下载,QR码,缩略图,文件预览。官网:https://larsjung.de/h5ai/github:https://github.com/lrsjng/h5ai2.宝塔安装2.1 php扩展安装与函数解禁在安装之前,我们需要在php中安装ImageMagick、fileinfo、exif扩展和解禁putenv函数。2.2 创建网站2.3 源码下载从官网或者github下载程序包,解压然后将_h5ai 上传到网站根目录: h5ai.inat.top/_h5ai.额,宝塔面板用户,直接就可以远程下载了。打开 http://h5ai.inat.top/_h5ai/public/index.php, 检查一下h5ai 是否可以访问. 同时,如果你的服务器有不兼容的话这里会显示。不过打开的时候,会要求你设置一个密码,当然留空也可以直接访问,登录之后,会有web环境检查的结果,如图:2.4 修改默认首页添加 /_h5ai/public/index.php 到默认的首页列表中添加好之后,我们就可以打开浏览器访问了,界面如下:3.给h5ai开启二维码、搜索、选择功能以下均在配置文件/www.xx.com/_h5ai/private/conf/options.json修改3.1 开启选择功能"select": { "enabled": false, "clickndrag": true, "checkboxes": true },将false修改为true,即:"select": { "enabled": true, "clickndrag": true, "checkboxes": true },该功能可方便我们进行批量下载。3.2开启搜索功能"search": { "enabled": false, "advanced": true, "debounceTime": 300, "ignorecase": true },将false修改为true,即:"search": { "enabled": true, "advanced": true, "debounceTime": 300, "ignorecase": true },开启后我们可以更快的找到文件了。3.3 开启二维码功能"info": { "enabled": false, "show": false, "qrcode": true, "qrFill": "#999", "qrBack": "#fff" },将false修改为true,即:"info": { "enabled": true, "show": true, "qrcode": true, "qrFill": "#999", "qrBack": "#fff" },开启二维码后,我们可以直接手机扫描二维码下载,很方便。参考资料h5ai-轻便又美观目录列表程序支持在线预览文本、图片、音频、视频等给h5ai开启二维码、搜索、选择功能
2021年12月22日
792 阅读
0 评论
0 点赞
2021-12-22
instantbox :几秒内启动一个干净的 Linux 系统
1.介绍instantbox一款非常实用的项目,它能够让你在几秒内启动一个主流的 Linux 系统,随起随用,支持 Ubuntu, CentOS, Arch Linux, Debian, Fedora 和 Alpine,通过 WebShell 访问,简单快捷,适合于演示、测试、体验等场合。喜欢尝试新玩意的青小蛙常常需要一台新的 Linux 系统进行测试,一则不能不影响现有系统,弄坏无压力,二则为了避免原环境对测试的影响。虽然有虚拟机、VPS,但新的 Linux系统还是需要一段时间才能创建完成,尤其如果 VPS 的话,你可能还需要支付几个小时的使用费用,而碰到 IP 不可用那种问题,纯属浪费时间。instantbox 提供了一个非常便捷的解决方案,它能够帮你在几秒钟内就启动一个干净的 Linux 发行版本,并且拥有多个版本,包括:Ubuntu:14.04、16.04、18.04、20.04 版本CentOS:6.10、7、8 版本Arch Linux:最新Debian:jessie、stretch、busterFedora:30、31Alpine:最新可以将 instantbox 理解为虚拟机中的临时虚拟机。2.如何安装 instantboxinstantbox 推荐使用 Docker 部署,直接使用官方提供的脚本即可:mkdir instantbox && cd $_ bash <(curl -sSL https://raw.githubusercontent.com/instantbox/instantbox/master/init.sh)或者下载 docker-compose.yml 文件,直接 docker-compose up -d 即可。3.如何使用 instantbox记得修改里面的端口,默认 8888。然后用浏览器打开 IP:8888,选择系统:选择配置,可选 CPU 核心数、内存、有效期然后,就会启动一个 WebShell 了,请尽情折腾,反正一天后就没了…注意由于其系统十分纯净,很多基础工具也可能需要安装才能使用,以 Ubuntu 为例,比如你要使用 ping,要先安装 apt install iputils-ping 才行。最后,关于权限,任何人知道你的 IP:端口 就能访问并使用,虽然不会对母机造成伤害,但可能会导致资源滥用,请注意保护。参考资料instantbox – 几秒内启动一个干净的 Linux 系统
2021年12月22日
707 阅读
0 评论
0 点赞
2021-12-21
nfs:Linux下挂载远程硬盘工具
本问以ubuntu为例,其他类似1.介绍NFS是Network File System的缩写,即网络文件系统。一种使用于分散式文件协定,功能是通过网络让不同的机器、不同的操作系统能够分享个人数据,让应用程序通过网络可以访问位于服务器磁盘中的数据。NFS在文件传送或信息传送的过过程中,依赖于RPC协议。RPC,远程过程调用(Remote Procedure Call),是使客户端能够执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,就是因为NFS使用了RPC提供的传输协议,可以说NFS就是使用PRC的一个程序。NFS 存储 服务器主要用于用户上传的数据 ,图片 音频 、等信息 NFS服务端、RPC协议、客户端三者可以理解为房源、中介、租客之间的关系:2.应用场景现有两台Linux Server,需要把Linux01 下的硬盘/文件夹挂在到 Linux02 下;3.配置步骤-服务器端3.1 安装nfs-serversudo apt install nfs-server3.2 修改/etc/exports发布可供硬盘/文件夹sudo vim /etc/exports 然后输入: /datadrive02 *(insecure,rw,sync,no_root_squash,no_subtree_check) # /datadrive02 为需要挂载出去的硬盘 /datadrive02 :共享的目录 * :指定哪些用户可以访问 * 所有可以ping同该主机的用户 192.168.1.* 指定网段,在该网段中的用户可以挂载 192.168.1.12 只有该用户能挂载 (ro,sync,no_root_squash): 权限 ro : 只读 rw : 读写 sync : 同步 no_root_squash: 不降低root用户的权限3.3 重启 nfs-serversudo service nfs-server restart3.4 验证发布showmount -e + 主机IP(base) jupiter@dell:~$ showmount -e 127.0.0.1 Export list for 127.0.0.1: /data/project/音频剪辑/audio *4.挂载步骤-客户端4.1 安装 nfs-commonsudo apt install nfs-common4.2 挂载# sudo mount -t nfs 远程硬盘 挂载到本地后的名字(路径) sudo mount -t nfs 10.1.9.24:/data/project/音频剪辑/audio /audio4.3 验证(base) v100@v100:~$ df -h 文件系统 容量 已用 可用 已用% 挂载点 udev 16G 0 16G 0% /dev tmpfs 3.2G 124M 3.1G 4% /run /dev/sdb3 909G 166G 698G 20% / tmpfs 16G 59M 16G 1% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 16G 0 16G 0% /sys/fs/cgroup /dev/sdb1 975M 3.7M 971M 1% /boot/efi tmpfs 3.2G 28K 3.2G 1% /run/user/108 tmpfs 3.2G 96K 3.2G 1% /run/user/1000 /dev/sda1 3.7T 568G 3.1T 16% /data /dev/sdd2 3.7T 3.1T 630G 84% /4t /dev/sds1 466G 365G 102G 79% /drive /dev/sdu4 115G 39G 76G 34% /drive2 10.1.9.24:/data/project/音频剪辑/audio 458G 263G 172G 61% /audio参考资料Linux(Ubuntu)通过nfs挂载远程硬盘Ubuntu配置NFS的方法Linux下部署NFS服务 (* ̄︶ ̄)
2021年12月21日
963 阅读
0 评论
0 点赞
2021-12-21
Matomo:–免费开源的网站流量统计系统
1.简介Matomo(前身为Piwik)是一款很受欢迎的Google Analytics的开源替代工具。与Google Analytics不同,Matom是在你自己的服务器上托管的,你可以拥有你所有的数据。2.配置步骤2.1下载下载地址:https://builds.matomo.org/matomo.zip官网:https://matomo.org/安装文档:https://matomo.org/docs/installation/2.2 安装(宝塔环境,原生环境需要自行配置)解压然后在宝塔的控制台添加网站配置域名并将解压后的目录设置为网站根目录。然后我们用访问域名开始安装,不过首先可以把默认语言改成中文:下一步,web 环境检查,一般遇到的问题是 shell_exec 函数禁用,我们需要启用这个函数。在 php 管设置→禁用函数→删除 shell_exec 函数禁用:这时候重新检测 web 环境,我们看到已经全部通过。如图:接着下一步,需要填写数据库信息等等大家根据自己的数据库信息来填写吧:填写好之后,下一步,我们看到成功填写的信息,如图:继续下一步,这里需要设置管理员了,如图:下一步,需要设置需要被统计的网站,如图:接着下一步,设置被统计网站,如图:接着下一步,就设置完成了所有的需要设置的东东。三:基本设置我们登入到已安装好的 matomo 后台,后台和 wordpress 很像,已经极尽完善了,默认内置了 46 种插件,基本不需要安装什么插件了就可以使用了:如果我们需要安装插件,比如说安装 ip 地址位置插件,我们这样在插件管理中安装新插件:插件商城插件种类丰富,因为内置的是 GeoIP 如果你需要更换一个可以安装 IP2,如图:我们点击安装即可。当然你也可以直接在功能面板的左侧找到商城然后点击之后进去安装即可。参考资料Matomo前端埋点 matomo 详细安装配置 (一)Matomo – 免费开源的网站流量统计系统
2021年12月21日
855 阅读
0 评论
0 点赞
2021-12-20
ZeroTier:快速实现虚拟局域网VLAN/内网穿透
1.简介zerotier是一个软交换机,使用zerotier可以让多台内网机器组成一个局域网。官网: https://my.zerotier.comZeroTier 支持 Windows、macOS、Linux 三大主流平台,iOS、Android 两大移动平台,以及 QNAP(威连通)、Synology(群晖)、Western Digital MyCloud NAS(西部数据)三个 NAS 平台,还支持 LEDE 开源路由器项目。2.使用步骤2.1 注册 ZeroTier注册地址:https://my.zerotier.com/2.2创建私有局域网,获得 Network ID,然后修改Access Control进入https://my.zerotier.com/network点击Create创建网络点击进入已创建的网络,修改Access Control,默认是Certificate (Private Network),选择此模式表示每次在添加新的主机时,需要手动勾选是否允许连接,如果选择None (Public Network)模式,表示加入网络后自动分配IP并允许连接,从安全性来说建议使用默认选项Certificate (Private Network),方便性来看None (Public Network)更方便,不用每次加入网络后手动勾选。2.3客户端安装方式Linuxcurl -s https://install.zerotier.com | sudo bash如果要让他开机自启动,运行:sudo systemctl start zerotier-one.service sudo systemctl enable zerotier-one.serviceWindows或者macOS、Android、iOS等那么可以在 https://www.zerotier.com/download/ 下载zerotierr然后安装2.4连接,加入 Network IDsudo zerotier-cli join 83048a0632246d2c #填写自己的 Network ID2.5 验证ip a这个时候执行一下 ip a 你会发现多了一个叫做 ztuzethlza 或者类似名字的设备,还有IP地址,这就是zerotier组建的局域网的IP 地址zt3jnq5mka: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc fq_codel state UNKNOWN group default qlen 1000 link/ether f6:4e:f8:49:0d:52 brd ff:ff:ff:ff:ff:ff inet 172.30.204.211/16 brd 172.30.255.255 scope global zt3jnq5mka valid_lft forever preferred_lft forever inet6 fe80::8e0:6ff:fe0e:1737/64 scope link valid_lft forever preferred_lft forever参考资料ZeroTier – 无配置,零基础「内网穿透」随时随地连回家/学校/办公室 -跨平台https://www.zerotier.com/download/zerotier简明教程无公网IP通过ZeroTier方便实现内网穿透(详细)
2021年12月20日
1,200 阅读
0 评论
0 点赞
2021-12-08
Firefox Send:临时文件分享系统快速搭建
1.介绍Firefox Send是Firefox推出的一個全新的临时文件分享系统2. 使用Docker快速完成搭建2.1 安装Docker自行百度完成2.2 拉取镜像docker run --name send -d -p 1443:1443 moerats/send然后使用ip:1443访问即可,如果你想用其它端口,就更改前面的1443参数,比如8888:1443。3.修改文件上传大小上限找到目标容器ID# 找到目标容器ID docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 930ef8b92222 moerats/send "/start.sh" 12 minutes ago Up 12 minutes 0.0.0.0:1443->1443/tcp send ···进入容器# 进入容器 docker attach 930ef8b92222修改/send/server/config.js的内容apt install vim··· anon_max_file_size: { format: Number, default: 1024 * 1024 * 1024 * 5, # 修改文件大小上限这里 env: 'ANON_MAX_FILE_SIZE' }, ···重启容器参考资料使用Firefox Send搭建一个临时文件分享系统
2021年12月08日
1,823 阅读
0 评论
0 点赞
2021-12-08
AliyunDNSHelper:阿里云dns解析助手-python实现
1.准备工作首先得有一个阿里云的域名https://www.aliyun.com/minisite/goods安装阿里云SDK和其他第三方库pip install aliyun-python-sdk-core-v3 pip install aliyun-python-sdk-domain pip install aliyun-python-sdk-alidns pip install requests获取accessKeyId和accessSecret可以在阿里云控制台个人中心直接获取,但是一般建议使用RAM角色来进行权限控制,这样这个accessKey和accessSecret就只能操作域名,不能操作其他的资源,相对会比较安全。关于RAM快速入门:https://help.aliyun.com/document_detail/28637.html2.代码实现2.1 ali-dns-helper.py`from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkalidns.request.v20150109.DescribeSubDomainRecordsRequest import DescribeSubDomainRecordsRequest from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest import requests from urllib.request import urlopen import json class AliyunDNSHelper: def __init__(self,accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top"): """ 阿里云DNS助手初始化 需要传入自己的accessKeyId、accessSecret、domain """ self.client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou') self.domain = domain def update(self,RecordId, RR, Type, Value): """ 修改域名解析记录方法 参数列表: + RecordId:调用查询方法时候查到对应的记录会返回 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(RecordId) request.set_RR(RR) request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def add(self,DomainName, RR, Type, Value): """ 添加新的域名解析记录方法 参数列表: + DomainName:待修改的主域名 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest request = AddDomainRecordRequest() request.set_accept_format('json') request.set_DomainName(DomainName) request.set_RR(RR) # https://blog.zeruns.tech request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def select(self,subDomian): """ 查询子域域名解析记录 参数列表: + subDomian:子域名 """ request = DescribeSubDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(self.domain) request.set_SubDomain(subDomian + '.' + self.domain) response = self.client.do_action_with_exception(request) # 获取域名解析记录列表 domain_list = json.loads(response) # 将返回的JSON数据转化为Python能识别的 if domain_list["TotalCount"]==0: return None return domain_list["DomainRecords"]["Record"][0] def action(self,subDomian,Value,Type="A"): """ 执行用户关于DNS操作的的行为 参数列表: + action_type操作类型,包括add,update + subDomian:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ print("待处理的记录为 %s:%s-->Domain:%s" % (Type,Value,subDomian + '.' + self.domain)) subDomian_record = self.select(subDomian) if subDomian_record: RecordId,RecordValue = subDomian_record["RecordId"],subDomian_record["Value"] if Value==RecordValue: print("该域名解析记录已存在,跳过") else: self.update(RecordId, subDomian, Type, Value) print("修改域名解析成功") else: self.add(self.domain, subDomian, Type, Value) print("新建域名解析成功") dnsHelper = AliyunDNSHelper(accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top") sub_domain = input("SubDomian:") value = input("value:") sub_domain_type = input("Type:") dnsHelper.action(sub_domain,value,sub_domain_type)2.2 ali-ddns-ipv6.py:实现ipv6 DDNS功能(ipv4同理)2.2.1 获取本机公网ipv6地址方法1:通过http接口获取(推荐)def getIPv6Address(): text = requests.get('https://v6.ident.me').text return text getIPv6Address()'2001:da8:a012:2da:2f0:d2ff:fed0:d0d2'方法2:python执行shell命令--其中的shell命令需要根据实际情况进行修改def get_local_ipv6(): """ 获取本机ipv6地址,其中的shell命令需要根据实际情况进行修改 """ import os; cmd_get_ipv6 = "ifconfig enp1s0 | awk '{if(NR==3){print $3}}'" # 获取本机ipv6的shell命令,需要根据实际情况进行修改 ipv6 = os.popen(cmd_get_ipv6).readlines()[0] if "/" in ipv6: ipv6 = ipv6.split("/")[0] return ipv6 get_local_ipv6()'2001:da8:a012:2da:2f0:d2ff:fed0:d0d2'2.2.2 配合time.sleep完成DDNS功能from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkalidns.request.v20150109.DescribeSubDomainRecordsRequest import DescribeSubDomainRecordsRequest from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest import requests from urllib.request import urlopen import json import time class AliyunDNSHelper: def __init__(self,accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top"): """ 阿里云DNS助手初始化 需要传入自己的accessKeyId、accessSecret、domain """ self.client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou') self.domain = domain def update(self,RecordId, RR, Type, Value): """ 修改域名解析记录方法 参数列表: + RecordId:调用查询方法时候查到对应的记录会返回 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_RecordId(RecordId) request.set_RR(RR) request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def add(self,DomainName, RR, Type, Value): """ 添加新的域名解析记录方法 参数列表: + DomainName:待修改的主域名 + RR:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest request = AddDomainRecordRequest() request.set_accept_format('json') request.set_DomainName(DomainName) request.set_RR(RR) # https://blog.zeruns.tech request.set_Type(Type) request.set_Value(Value) response = self.client.do_action_with_exception(request) def select(self,subDomian): """ 查询子域域名解析记录 参数列表: + subDomian:子域名 """ request = DescribeSubDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(self.domain) request.set_SubDomain(subDomian + '.' + self.domain) response = self.client.do_action_with_exception(request) # 获取域名解析记录列表 domain_list = json.loads(response) # 将返回的JSON数据转化为Python能识别的 if domain_list["TotalCount"]==0: return None return domain_list["DomainRecords"]["Record"][0] def action(self,subDomian,Value,Type="A"): """ 执行用户关于DNS操作的的行为 参数列表: + action_type操作类型,包括add,update + subDomian:记录名即子域名 + Type:记录类型包括CNAME、A、AAAA等 + Value:记录值 """ print("待处理的记录为 %s:%s-->Domain:%s" % (Type,Value,subDomian + '.' + self.domain)) subDomian_record = self.select(subDomian) if subDomian_record: RecordId,RecordValue = subDomian_record["RecordId"],subDomian_record["Value"] if Value==RecordValue: print("该域名解析记录已存在,跳过") else: self.update(RecordId, subDomian, Type, Value) print("修改域名解析成功") else: self.add(self.domain, subDomian, Type, Value) print("新建域名解析成功") def getIPv6Address(): text = requests.get('https://v6.ident.me').text # 接口失效后需要及时进行修改 return text dnsHelper = AliyunDNSHelper(accessKeyId = "LTAI4GHqgJgbzPfNnkwyGqks",accessSecret = "CzXkUS8BWcjJ7qEbKrqg6qxUOdnW6M",domain = "4v7p.top") sub_domain = "d2550-ipv6" sub_domain_type = "AAAA" while True: print("当前时间:",time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) value = getIPv6Address() dnsHelper.action(sub_domain,value,sub_domain_type) time.sleep(2*3600) # 每隔2个小时执行1次然后配合screen命令或者去掉无限循环使用定时任务进行执行即可完成ipv6的DDNS的功能参考资料Python实现阿里云域名DDNS支持ipv4和ipv6python 3.7.3 shell_python3执行shell命令的几种方式Python 获取本机公网IPv6地址Python 日期和时间
2021年12月08日
748 阅读
0 评论
0 点赞
1
2
3
4
5