分类 技术 下的文章

基于 DNSPod API 的 DDNS 脚本,长期自用稳定,在此简单记录一下;

本脚本来自https://github.com/yzeng1995/fast_set_centos
  1. 购买域名,例如:yourdomain.com;
  2. DNS服务器修改为DNSPod;
  3. 设置二级域名解析,例如将xxx.yourdomain.com解析到 8.8.8.8;
  4. 管理控制台中创建认证信息,获取ID和token;
  5. 修改下方Shell脚本中的idtokenDOMAINSUB_DOMAIN

    #!/bin/bash
    
    # This program establish ddns service
    # to modify the public ip address of dns server.
    # The dns server is dnspod.
    # /etc/crontab # if centos etc.
    # */10 * * * * root /usr/local/sbin/dnspod_ddns.sh 1>&2> /dev/null
    # /etc/crontabs/root # if openwrt etc.
    # */10 * * * * /usr/sbin/dnspod_ddns.sh
    
    #TOKEN=id,token
    TOKEN="112233,67fa231667a33de0f5255f62d33161eb"
    #full domain name
    DOMAIN="yourdomain.com"
    #sub domain first name
    SUB_DOMAIN="xxx"
    
    # TOKEN=`cat dnspod_ddns.conf|grep TOKEN|awk -F'=' '{print $2}'`
    # DOMAIN=`cat dnspod_ddns.conf|grep -e '^DOMAIN'|awk -F'=' '{print $2}'`
    # SUB_DOMAIN=`cat dnspod_ddns.conf|grep SUB_DOMAIN|awk -F'=' '{print $2}'`
    
    
    DATA="login_token=$TOKEN&format=json&domain=$DOMAIN&sub_domain=$SUB_DOMAIN&record_type=A&offset=0&length=3"
    JOSN_RECORDS=`curl -4 -s -X POST https://dnsapi.cn/Record.List -d $DATA`
    
    RECORD_ID=`echo $JOSN_RECORDS|sed '/id/ s/.*id":"\(.*\)","ttl.*/\1/'`
    LINE_ID=`echo $JOSN_RECORDS|sed '/line_id/ s/.*line_id":"\(.*\)","type.*/\1/'`
    #=================get record ip
    IP_RESOLVED=`echo $JOSN_RECORDS|sed '/value/ s/.*value":"\(.*\)","enabled.*/\1/'`
    
    #================get real ip
    #REAL_IP=`cat</dev/tcp/ns1.dnspod.net/6666`
    REAL_IP=`curl -4 -s  myip.ipip.net|awk -F' |:' '{print $3}'`
    
    #REAL_IP="2.2.3.2"
    if [ $REAL_IP != $IP_RESOLVED ]; then
            #================modify record
            DATA="login_token=$TOKEN&format=json&domain=$DOMAIN&record_id=$RECORD_ID&sub_domain=$SUB_DOMAIN&value=$REAL_IP&record_type=A&record_line_id=$LINE_ID"
            # echo $DATA
            JSON_RESULT=`curl -4 -s -X POST https://dnsapi.cn/Record.Modify -d $DATA`
            echo $JSON_RESULT >> /var/log/dnspod_ddns.log
            IP_RESOLVED=$REAL_IP
    fi
  6. 将程序添加到系统的定时任务中;

    # crontab -e
    # 每十分钟执行 /root/ddns.sh 脚本
    */10 *  *  *  * root /root/ddns.sh 1>&2> /dev/null
  7. 重启cron服务或直接重启生效;

每次重启电脑后,默认浏览器就自动变回Edge!
(新版本 Edge 内核基于Chromium,原汁原味,真香真香🤣)
较新版本 Windows 大幅改善文件关联,基本不会再出现类似情况了。

解决办法:修改注册表

此方式比较暴力,但效果很好;
由于更改注册表有一定的风险,修改前请备份注册表
Windows+R输入regedit,打开注册表编辑器, 找到

HKEY_CLASSES_ROOT\http\shell\open\command

在右边的窗口中双击默认,将要用的浏览器可执行文件的完整路径输入到这里;
例如我本机的Chrome程序位置是:

C:\Program Files\Google\Chrome\Application\chrome.exe

修改完注册表后,重启电脑进行验证,最终解决!

目前同时使用Gitlab、Github、腾讯Coding,所以我的笔记本需要配置多个git用户。

基本环境

  1. Windows 10 操作系统
  2. 已安装Git

配置多个Git账号

1. 移除Git全局配置

如果之前没有配置过git账户,可直接跳至 【2. 配置 Git 多用户】

  1. 右键【Git Bash Here】打开Git命令行
  2. 输入命令:git config --list查看全局配置
  3. 使用以下命令移除name、email、password等全局配置

    # 移除全局配置账户
    git config --global --unset user.name
    #查看全局用户名
    git config --global user.name
    # 移除全局配置邮箱
    git config --global --unset user.email
    # 查看全局邮箱
    git config --global user.email
    # 移除全局密码
    git config --global --unset user.password
    # 查看全局密码
    git config --global user.password
    

    2.配置 Git 多用户

    各Git平台、user 、邮箱和主机名

    Git平台username 用户名email邮箱hostname 主机名
    公司私有Gityournameyourname@git.company.comgit.company.com
    Githubnicknamenickname@github.comgithub.com
    腾讯Coding123123123@qq.com123123123@qq.come.coding.net
    Giteegiteename@163.comgiteename@163.comgitee.com
    阿里 Gitalname@163.comalname@163.comcodeup.aliyun.com

打开【Git Bash】,输入:

  1. 生成公司 Gitlab 公钥

    ssh-keygen -t rsa -C "yourname@git.company.com"

    Gitlab的公钥名称输入:id_rsa_gitlab

  2. 生成 Github 公钥

    ssh-keygen -t rsa -C "nickname@github.com"

    Gitlab的公钥名称输入:id_rsa_github

  3. 生成 Coding 公钥

    ssh-keygen -t rsa -C "123123123@qq.com"

    Gitlab的公钥名称输入:id_rsa_coding

  4. 生成 Gitee 公钥

    ssh-keygen -t rsa -C "giteename@163.com"

    Gitlab的公钥名称输入:id_rsa_gitee

  5. 生成 Aliyun 公钥

    ssh-keygen -t rsa -C "alname@163.com"

    Gitlab的公钥名称输入:id_rsa_aliyun

  6. 将各枚公钥添加到各个平台
    登录各个 gitlab 平台,将生成的公钥提交到平台当中。
  7. 添加私钥
    将公钥添加到服务器上后,还需要将私钥添加到本地中,不然无法使用

    # 启用代理模式
    ssh-agent bash
    
    # 将 Gitlab 私钥添加到本地
    ssh-add ~/.ssh/id_rsa_gitlab
    
    # 将 Github 私钥添加到本地
    ssh-add ~/.ssh/id_rsa_github
    
    # 将 Coding 私钥添加到本地
    ssh-add ~/.ssh/id_rsa_coding
    
    # 将 Gitee 私钥添加到本地
    ssh-add ~/.ssh/id_rsa_gitee
    
    # 将 Aliyun 私钥添加到本地
    ssh-add ~/.ssh/id_rsa_aliyun
    
    # 验证用户
    ssh -T git@git.company.com
    ssh -T git@github.com
    ssh -T git@e.coding.net
    ssh -T git@gitee.com
    ssh -T git@codeup.aliyun.com

    添加完毕后,可以通过执行 ssh-add -l 进行验证。

3. 配置config文件

config文件目录在 ~/.ssh ,~ 符号代表用户根目录。
例如,完整目录为:C:\Users\username\.ssh
创建文件,完整名为:config

# 公司gitlab
Host gitlab
    HostName git.company.com
    User yourname
    IdentityFile ~/.ssh/id_rsa_gitlab

# GitHub
Host github
    HostName github.com
    User nickname
    IdentityFile ~/.ssh/id_rsa_github

# 腾讯Coding
Host coding
    HostName e.coding.net
    User 123123123@qq.com
    IdentityFile ~/.ssh/id_rsa_coding

# Gitee
Host gitee
    HostName gitee.com
    User giteename@163.com
    IdentityFile ~/.ssh/id_rsa_gitee

# Aliyun
Host aliyun
    HostName codeup.aliyun.com
    User alname@163.com
    IdentityFile ~/.ssh/id_rsa_aliyun

该文件分为多个用户配置,每个用户配置包含以下几个配置项:

  • Host:Git 平台的别名,clone仓库时,可以替代 HostName 来使用
  • HostName:Git 平台的域名(PS:IP 地址应该也可以)
  • User:邮箱或用户名
  • IdentityFile:私钥路径

4. 配置仓库

配置了Git多用户,每次克隆仓库后,需要给每个仓库配置用户名与邮箱,这样仓库在提交代码的时候,程序才知道提交的服务器是哪个,也就知道了该使用哪个用户的密钥。

git clone xxxxxxx(git仓库地址)

# 配置用户名
git config user.name "nickname"
# 配置邮箱
git config user.email "nickname@github.com"

此记录仅为我的安装思路和简要步骤,涉及到的一些细节不在此赘述。

基本环境

  1. Windows 10 操作系统
  2. 使用Hugo程序生成静态网站
  3. Hugo主题:精简而又美丽的 MemE
  4. 使用 腾讯云Coding + OSS对象存储 ,保存和部署我的静态博客

安装Git

  1. 安装git程序
  2. 配置git用户
  3. 创建git密钥及上传密钥至服务器

安装Hugo

  1. 从Github下载hugo_extended程序,注意是extended版本!
    下载地址: https://github.com/gohugoio/hugo/releases
  2. 解压到指定目录,并将hugo.exe所在目录添加至环境变量PATH中;
  3. 打开CMD,键入 hugo version ,输出hugo版本信息则为安装成功;

创建博客,指定主题

自己指定博客目录,在此目录下打开CMD,键入:

hugo new site blog
cd blog
git init
git submodule add --depth 1 https://github.com/reuixiy/hugo-theme-meme.git themes/meme

更新主题键入以下代码

git submodule update --rebase --remote

对于简体中文用户,将 Hugo 默认的 config.toml 删除,再进入 themes/meme/config-examples/zh-cn/ 目录,将 MemE 主题的 config.toml 复制到站点根目录下。
由于 Hugo 并不会提供默认的示例文章,所以如果你想在安装和配置完后立即体验 MemE 的话,还需新建一篇文章和一个关于页面:

hugo new "posts/hello-world.md"
hugo new "about/_index.md"

最后,启动hugo服务:

hugo server -D

打开 http://localhost:1313 ,在本地访问hugo博客;
生成博客静态文件(位置在 public 文件夹中)

hugo -D

surge 可以将你上传的静态页面免费保存,且可以在线访问、还可以自定义域名。上传使仅需在命令行简单的输入就可快速的上传文件,极为便捷。

官网:https://surge.sh

  • 只能使用 CLI 上传代码
  • 支持自定义域名,但开启 SSL 是收费功能且需要自行上传证书
  • 支持 200.html —— 适用于使用 History API 的 SPA

一、安装surge

你需要使用 npm 进行全局安装 surge (全局安装是为了可以更方便的使用)

npm install -global surge

二、使用surge

之后你仅需在当前项目文件夹下使用命令行输入命令即可,电脑第一次运行需要设置个人账户。之后的使用就不用了。

surge

这里若不进行修改(输入email、password 可选)surge会将项目上传到提供域名下 xxx.surge.sh。上传成功后即可访问。

页面默认会使用 index.html 作为首页(默认都是这)。也可以设置 404.html,会默认作为未找到页面。