标签 ubuntu 下的文章

阿里云云解析ddns的自动更新shell脚本

今天需要用到阿里云云解析做ddns,网上搜到到都是基于阿里云python sdk的脚本,这么一个简单功能没必要用python,找到一个openwrt的shell脚本,拿来改了一下运行环境,和环境变量,在x86下ubuntu 16.04测试通过。

原脚本地址https://github.com/h46incon/AliDDNSBash ,在此感谢

我修改过的脚本地址https://github.com/trepwq/aliyunddns

使用方法
安装依赖
首先需要一个shell

然后安装 bind-dig,curl,openssl-util。

修改脚本的setting代码段
其中DomainRecordId不清楚的话暂时不用修改,DNSServer修改为你在万网上使用的DNS服务器。 如:

AccessKeyId="MyID"
AccessKeySec="MySecret"
DomainRecordId="00000"
DomainRR="www"
DomainName="example.com"
DomainType="A"
DNSServer="dns9.hichina.com"

如果不清楚DomainRecordId的话,修改main函数,在里面调用describe_record,如:

main()
    {
    describe_record
    #update_record
    }

然后执行这个脚本。如果没问题的话,就能获取到域名的所有解析记录的列表了:

{"PageNumber":1,"TotalCount":1,"PageSize":1,"RequestId":"0000","DomainRecords":{"Record":[{"RR":"www","Status":"ENABLE","Value":"8.8.8.8","RecordId":"21332133","Type":"A","DomainName":"example.com","Locked":false,"Line":"default","TTL":"600"},]}}HttpCode:200

上面的结果中,RecordId为21332133。得到结果后再修改DomainRecordId为正确的值。

修改main函数:

main()
{
    #describe_record
    update_record
}

执行脚本即可。脚本会在本机IP地址和当前域名解析设置不同的时候调用API更新设置。

最后,在crontab里添加每分钟执行一次即可

crontab -e
* * * * * /root/ddns.sh >>/dev/null 2>&1

ubuntu 16.04 查看cpu,硬盘温度

ubuntu server 16.04.2

安装lm-sensors和hddtemp

apt install lm-sensors hddtemp

配置lm-sensors

sensors-detect

配置好后运行

sensors

查看硬盘温度

hddtemp /dev/sda
hddtemp /dev/sdb

自动刷新脚本

#!/bin/sh
watch -d -n 1 'echo free;mpstat;echo;free -m;echo temp; hddtemp /dev/sd? ;echo; sensors'

debian系interfaces中auto与allow-hotplug的区别

/etc/network/interfaces文件中一般用auto或者allow-hotplug来定义接口的启动行为。

auto

语法:
auto <interface_name>
含义:
在系统启动的时候启动网络接口,无论网络接口有无连接(插入网线),如果该接口配置了DHCP,则无论有无网线,系统都会去执行DHCP,如果没有插入网线,则等该接口超时后才会继续。

allow-hotplug

语法:
allow-hotplug <interface_name>

含义:
只有当内核从该接口检测到热插拔事件后才启动该接口。如果系统开机时该接口没有插入网线,则系统不会启动该接口,系统启动后,如果插入网线,系统会自动启动该接口。也就是将网络接口设置为热插拔模式。

手动重新启动网络

一般修改了网络配置文件后,会用以下命令重新启动网络

/etc/init.d/networking restart

但从squeeze开始,此命令会有如下提示:

Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces … (warning).
Reconfiguring network interfaces…done.

如果设置接口为auto,虽然会有如此提示,但接口仍然会正确的启动。
如果接口设置为allow-hotplug则没有这么走运了,网络接口不会正确启动。这种情况下必须使用如下命令启动网络接口:

ifup <interface_name>

而命令

ifconfig <interface_name> up

也无法正确启动接口

所以allow-hotplug设置的接口最好如下方式重新启动网络接口,当然auto方式的接口也没问题:

ifdown <interface_name> && ifup <interface_name>

特别是在ssh登录远程主机的情况下,一定要像上面这样在一条命令里执行ifdown和ifup,否则,如果先执行ifdown,则再也没有机会执行ifup了。

看来大多数情形下,网络接口还是用auto方式比较省心。

阿里云坑啊!记dnsmasq安装配置

需要在阿里云vpc里配置一台dns服务器,使用dnsmasq,安装一切妥当,按照文章配置内网服务器域名,一切看起来都挺顺。
就在dig baidu.com的时候出了问题。居然没有answer section,而内网服务器一切正常。
谷歌,百度各种文章,发工单问是不是阿里云做了什么限制,均无果。
最后在某篇文章启发下去找日志,默认是不开日志的,日志的位置也很诡异,在syslog里。
通过日志发现,dnsmasq没有使用我配置的源dns服务器,通过ps -ef | grep dns看到dnsmasq默认使用文件/var/run/dnsmasq/resolv.conf作为上游名字服务列表文件,然而这个文件是空的,dnsmasq在没有源dns时返回refuse
即dig里没有answer section。
其实也是我没自习看dig的返回信息,看到status:refuse解决这个问题就会少走很多弯路。
知道问题所在就好办了,直接修改这个/var/run/dnsmasq/resolv.conf可以,修改默认环境变量屏蔽这个文件也可以。
在这说说我猜这个坑的由来,其实我在其他vps上试是没有问题的,同样的ubuntu14.04,同样的版本,同样的大小,效果就不同
/var/run/dnsmasq/resolv.conf这个文件其实是桌面版ubuntu的network-manager使用的,可是阿里云都应该是服务器版啊
是阿里云镜像有问题,还是偷懒把桌面源给了服务器,不得而知,可以预计同样的坑还会有不少,以后多加小心。