作者归档:Henry

使用DNSPOD API完成DDNS

原理是调用DNSPOD API接口,从本地发送Post请求更新DNSPOD上的域名解析记录,将记录值修改为本地当前IP。这样就可以通过DNSPOD的域名记录访问到路由,即完成动态域名解析。由于请求限制为每小时5个,建议创建cron job每15分钟运行一次即可。以下是官方文档:

接口地址:
HTTP请求方式:
  • POST
请求参数:
  • 公共参数
  • domain_id 或 domain, 分别对应域名ID和域名, 提交其中一个即可
  • record_id 记录ID,必选
  • sub_domain 主机记录,如 www
  • record_line 记录线路,通过API记录线路获得,中文,比如:默认,必选
  • record_line_id 线路的ID,通过API记录线路获得,英文字符串,比如:‘10=1’ 【record_line 和 record_line_id 二者传其一即可,系统优先取 record_line_id】
  • value IP地址,例如:6.6.6.6,可选
响应代码:
  • 共通返回
  • -15 域名已被封禁
  • -7 企业账号的域名需要升级才能设置
  • -8 代理名下用户的域名需要升级才能设置
  • 6 域名ID错误
  • 7 不是域名所有者或没有权限
  • 8 记录ID错误
  • 21 域名被锁定
  • 22 子域名不合法
  • 23 子域名级数超出限制,比如免费套餐域名不支持三级域名
  • 24 泛解析子域名错误,比如免费套餐载名不支持 a*
  • 25 轮循记录数量超出限制,比如免费套餐域名只能存在两条轮循记录
  • 26 记录线路错误,比如免费套餐域名不支持移动、国外
注意事项:
  • 如果1小时之内,提交了超过5次没有任何变动的记录修改请求,该记录会被系统锁定1小时,不允许再次修改,所以在开发和测试的过程中,请自行处理IP变动,仅在本地IP发生变动的情况下才调用本接口。
  • 如何理解没有任何变动的记录修改请求?比如原记录值已经是 1.1.1.1,新的请求还要求修改为 1.1.1.1。

示例:

curl -X POST https://dnsapi.cn/Record.Ddns -d 'login_token=LOGIN_TOKEN&format=json&domain_id=2317346&record_id=16894439&record_line_id=10%3D0&sub_domain=www'

返回参考:

  • JSON:

    {
        "status": {
            "code":"1",
            "message":"Action completed successful",
            "created_at":"2015-01-18 17:23:58"
        },
        "record": {
            "id":16909160,
            "name":"@",
            "value":"111.111.111.111"
        }
    }
    
  • 字段说明:
    • id: 记录ID, 即为 record_id
    • name: 子域名
    • value”: 记录值
注意:
record_line_id 形如 “10=3”,其中可能会包含等号,即 “=”,如果是通过类似 URL 传递参数,需要将 ‘=’ 转义成 ‘%3D’

参考:DNSPOD API文档

Windows后台运行Minecraft服务器

官网提供的服务器启动命令是

java -Xmx1024M -Xms1024M -jar server.jar nogui

在Linux下,我们后台启动服务器非常简单,只需要在命令后加上&即可

nohup java -Xmx1024M -Xms1024M -jar server.jar nogui &

但是,在Windows下,直接在命令行中启动的话,将会关联到cmd这个父进程。也就是说,cmd窗口一关,java服务也会停止。这显然是我们不喜欢的,所以需要后台运行。于是我们用javaw完成:

@echo off 
start javaw -Xmx1024M -Xms1024M -jar server.jar nogui

将上面内容保存为bat文件执行即可。

删除Windows 10与Ubuntu 18.04双系统中的Ubuntu启动项(UEFI)

删除需要用到DiskGenius软件,请准备好。免费版本即可,无需使用高级功能。

请严格按照以下顺序执行,否则可能出现删除失败的情况。

删除UEFI启动项:

启动CMD(管理员)
bcdedit /export savebcd
bcdedit /enum firmware
找到Ubuntu的对应identifier(标识符),复制(控制台下复制用右键标记-回车)
bcdedit /store savebcd /delete {xxx} ({}里面就是上一步的identifier)
bcdedit /import savebcd /clean

删除UEFI引导文件:

使用DiskGenius删除EFI分区中与Ubuntu启动的相关文件一般为

/EFI/ubuntu
/EFI/BOOT 可能有这个文件夹,通过创建时间判断

删除Ubuntu操作系统目录:

可以直接使用Windows“磁盘管理”工具删除分区。如果遇到“删除分区”为灰色的情况,请用在CMD中使用diskpart工具删除。

备注:

1、上面提到的savebcd文件默认存储在c:\windows\system32文件夹中

2、在PowerShell中执行以上命令是会出错,请使用CMD或启动PowerShell后键入cmd并回车。

Windows 10与Ubuntu 18.04双系统安装(UEFI)

制作启动盘

首先下载Ubuntu 18.04的iso镜像文件。这里给出中科大源的下载地址:点击下载 。完成后,用软件写入到U盘中待用。这里推荐使用UltraISO(我用的就是这个),或者Rufus(选择UEFI+MBR模式)。这部分比较简单,这里不详述。

准备磁盘空间

在Windows的“磁盘管理”工具中,准备好足够的空间备用(未分区,未格式化)。

UEFI安装准备

  • 插入U盘,开机
  • 进入BIOS,关闭安全启动(Secure-Boot)、快速启动(Fast-Boot)。
  • 选择使用U盘启动或者在启动顺序中将U盘提高到第一位。

安装Ubuntu

完成准备工作后,重启。接下来是正常安装Ubuntu过程,这里只对其中需要注意的地方进行说明:

1、分区表参考

/swap 主分区。一般设置等于物理内存
/home 逻辑分区。用户目录,可以设置稍大
/ 逻辑分区。根目录,剩余所有空间

2、关于/boot分区

由于是UEFI启动,所以无需挂载这个分区

3、关于EFI分区

实际测试,以下三种方式,所得到的结果均为启动文件被放在和Windows同一个EFI分区中

  • 方式一:Ubuntu安装时选择兼容Windows分区模式
  • 方式二:分区时选择自定义方式,并创建EFI分区,并在引导文件安装位置选择创建的EFI分区
  • 方式三:分区时选择自定义方式,不创建EFI分区,引导文件安装位置选择Windows Boot Manager所在分区,即Windows的EFI分区

所以,既然所有方式结果都一样,我们应该选择方式三。因为方式二将创建一个毫无用处的EFI分区。方式一只会创建一个“/”根目录挂载点。

选择启动方式

安装完后重启系统,将默认进入Ubuntu的UEFI启动界面。如果想让Windows作为默认启动选项,只需在BIOS中将UEFI启动顺序中的Windows对应项提升到首位即可

Ubuntu18.04 Nvidia显卡驱动安装

首先删除旧的Nvidia驱动文件

sudo apt-get purge nvidia-*

加入PPA源

sudo add-apt-repository ppa:graphics-drivers/ppa

安装Nvidia驱动

sudo apt-get update
sudo apt-get upgrade
sudo apt-get search nvidia-
找到最新的一个版本后执行安装,比如当前最新版为nvidia-390
sudo apt-get install nvidia-390

安装完重启,即可在系统信息中看见被识别出型号的Nvidia显卡

系统日志DistributedCOM 10016错误解决办法

错误日志:

应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户PC\Henry SID (S-1-5-21-2839826810-1363819373-3356516658-1001)授予针对 CLSID 为 {D63B10C5-BB46-4990-A94F-E40B9D520160}、APPID 为 {9CA88EE3-ACB7-47C8-AFC4-AB702511C276}的 COM 服务器应用程序的 本地 激活 权限。此安全权限可以使用组件服务管理工具进行修改。

解决办法:

Regedit Take Ownership

You will need to take ownership then set rights against two different keys.  The keys are:

HKEY_CLASSES_ROOT\AppID\{9CA88EE3-ACB7-47c8-AFC4-AB702511C276}
HKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}
  1. Open Regedit with Administrators privileges and navigate to the keys above (remember you have to do this twice)
    1. WinKey + X >> Command Prompt (Admin) >> Type in Regedit
  2. Right click the key >> permissions
  3. Click advanced
  4. At the top change the Owner to COMPUTERNAME\Administrators
    1. Please note if you are domain joined you’ll have to change where you are searching from to your local computer
  5. Look in the Permission Entries field
    1. If the local system administrators group is listed ensure it has full control
    2. if the administrators group is not listed add it and give it full control.  (note you can only do this if you are a member of the administrators group and it is now the owner)
  6. Click okay a lot >> Ensure you apply permissions to all child objects

Change DCOM Permissions

Need to ensure DCOM permissions are setup

  1. Open DCOMCNFG as an Administrator
    1. WinKey + X >> Command Prompt (Admin) >> Type in DCOMCNFG
  2. Navigate to Component Services >> Computers >> My Computer >> DCOM Config
  3. Find the RunTimeBroker  >> Right Click >> Properties >> SecurityTab
  4. Launch and Activation Permissions >> Edit >> Add System and give it full control
    1. I also added the Administrators group just for testing

While changing permissions I was prompted several times to remove bad account references.  I did this as the computer knows which accounts have been removed.

翻译:

第一步:先在注册表编辑器中找到报错的两个键,修改权限,给用户完全控制权限。

第二步:以管理员身份运行“组件服务”,找到对应的DCOM,修改权限,给用户完全控制权限。

参考:

MariaDB创建用户、数据库

目标:

用户名:sampleuser
数据库名:sampledb
密码:samplepass

命令:

# Step1: Install MariaDB

yum install mariadb
systemctl start mariadb
systemctl enable mariadb


# Step2: Initialize MariaDB

mysql_secure_installation
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y


# Step3: Create user and database

mysql -u root -p
MariaDB [(none)]>CREATE DATABASE sampledb;
MariaDB [(none)]>CREATE USER 'sampleuser'@'%' IDENTIFIED BY 'samplepass';
MariaDB [(none)]>GRANT ALL on sampledb.* to 'sampleuser'@'%';
MariaDB [(none)]>FLUSH PRIVILEGES;
MariaDB [(none)]>exit

 

编译安装python3

从官网下载源码包

wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz

解压

tar xvzf Python-3.6.4.tgz

准备编译需要的依赖

yum install -y gcc zlib zlib-devel openssl openssl-devel

配置并编译

./configure --prefix=/usr/local/python3.6    # 设置安装位置
make
make install

添加环境变量。在/etc/profile文件末尾追加

PATH=$PATH:/usr/local/python3.6/bin
export PATH

使环境变量生效

source /etc/profile

测试,执行python3命令,查看输出