混乱的时区设置

环境配置:

(1)树莓派:raspbian系统,设置为读取硬件时钟作为UTC时间,时区为上海时区

(2)笔记本:debian系统,设置为读取硬件时钟作为Local时间,时区为上海时区

今天尝试hwclock命令查看树莓派硬件时钟的时间,接着引出一堆东西。

首先,问题出在执行

sudo hwclock --utc

得出的是上海时间,而执行

sudo hwclock --localtime

得出的是UTC时间。

刚开始以为是时间问题,在笔记本上测试,额,

sudo hwclock --localtime

倒是给出正确的上海时间,但是这个

sudo hwclock --utc

却给了我一个比localtime少16个小时的时间!

—————————————————————————–

后记:freenode中#linuxba频道中,某人的DebCmdBot机器人也这样

—————————————————————————–

接着,我推测是否是时区的问题,开始进坑。

执行

sudo dpkg-reconfigure tzdata

切成GMT+8,然后发觉,咦?怎么比UTC少8个小时?说好的GMT+8呢?

反复确认硬件时间、UTC时间,最后还是不行。。。

找到命令

date -R

执行得

Sat, 19 Dec 2015 04:02:53 -0800

额,怎么是负的0800?

如果不是搜到这两个网站,我会很肯定地认为是系统错了的。

GMT+8. Time Zone Greenwich Mean Time + 8 hours | Greenwich Mean Time

GMT 8 - Time Zone Information - Daylight Saving Time (DST) Information

都是GMT+8,前者是UTC加了八个小时,后者是UTC减八个小时。

期间找到一个命令zdump,查资料发现它跟tzdata用的同一个目录文件/usr/share/zoneinfo,于是尝试

zdump UTC

zdump GMT+8

恩,怎么改,都是比UTC少八个小时…

什么鬼?!到底是哪边错了?还是说有两个不一样的GMT+8?好吧,先把时区调回上海时区压压惊…

———–暂时记到这,我还会回来的———-

树莓派2使用DS3231实时时钟

终于要启用很久之前买回来的DS3231实时时钟了,上网寻找使用方法,找到好几个都是先去/etc/modprob.d/去掉I2C的黑名单驱动,然后载入,然后往/sys/class/i2c-adapter/i2c-1/new_device写入ds3231 0x68等等,还要写入rc.local便于每次开机使用。

先是发觉I2C驱动并没有被禁用,而且树莓派2芯片不一样等,没往下尝试。

之后翻出文章

Using a DS3231 Real Time Clock with the Raspberry Pi 2

大致意思就是,在/boot/config.txt中,加入选项

dtoverlay=i2c-rtc,ds3231

然后每次重启都会自动载入这个模块,暂未试会不会在启动时自动同步时间。

minicom命令下使用FT232进行ttl通信

今天尝试用新买回来的FT232RL与树莓派进行通信,相比先前用的PL2302HX,这个可以调输出的VCC电压,调试ESP8266-01再也不用借助arduino啦~

咳咳,回到正题,GND对GND,RT对TX,TX对RX,插电脑,开终端,执行

1
minicon -b 115200 -o -D /dev/ttyUSB1

进入后,按了下回车,并没有像往常一样收到登陆界面,对掉RT、TX接口,无果。

各种尝试后,嗯,又把芯片的GND接到树莓派的5V了(前两条PL2302HX就是这么烧的),发觉后摸了下芯片,烫到了。。。

还好机智的我当时买了两个FT232RL,于是换一个继续。

接好线后,我尝试用arduino提供的IDE,里面有个串口监视器,进去后发现,嗯,可以了,而且在旁边的minicom终端也收到消息了。继续测试发现,minicom需要借用arduino IDE的串口监视器“激活”一下,然后就能通信的,故判断问题出在minicom身上。

谷歌到这篇,其中的7楼给出了解决办法,终端执行

1
sudo minicom -s

后在Serial port setup中,将Hardware Flow Control关闭,将Software Flow Control打开,保存退出后再执行先前的命令(设备不一定是ttyUSB1,视自己情况而定)即可连上树莓派,并接收到登陆界面。

实测两个Flow Control关掉也可以连接。

最后给出串口连接树莓派教程页面:

RPi Serial Connection

使用Disconnect Search在墙内谷歌搜索(已不支持谷歌,且被DNS污染)

国内谷歌被墙,而百度搜索却那么废。

每次搜索都面临选择:开代理用谷歌呢?还是忍着用百度?

要么麻烦,要么得不到想要的结果。

今天用Tor Browser发现,默认搜索引擎从Not Evil换到了Disconnect Search。而后者非Tor网络的域名,能够选择想要的搜索引擎的结果,默认谷歌。

嗯,想了一下,或许这个没有被墙。实测,成功!

——————————添加于2月20日———————–

最近使用该引擎时发现上不去,开代理却能上,疑似被墙。

——————————添加于4月20日———————–

测试发现,该域名遭到dns污染,随机指向错误域名,翻出去查得该域名CNAME指向

disconnect-search-629157811.us-east-1.elb.amazonaws.com

此域名又解析得三个ip

54.174.246.17

54.173.232.10

52.0.35.231

实测https访问亚马逊的那个域名或解析的ip地址可行,不过会报网站证书不符的警告。

注:现在Disconnect已不再支持谷歌

阿里大鱼折腾记录

前段时间搜短信接口,搜出一个阿里大鱼,心想毕竟是大公司,服务应该会好一些,而且入驻还送60块钱,于是便选这个来玩玩。

主页有个验证码的“了解更多”选项,于是点进去看了一下,看了一下,点了下方的“短信发送API”看看,由于之前玩过极光推送,觉得调用API对我来说应该是不难的。遂将文档页面收藏,按照大鱼主页的指示进去,一步步创建借口。

好了,借口倒是创建完了,接下来是调用,很郁闷地发现,接口的sign参数不太会整,用curl发来发去都返回参数不正确。

再一看,恩,有SDK,不用算sign,于是下了个python的SDK,按照注释改好后发觉各种找不到函数,数次修改无果后放弃。

反复查看那个文档,发现有个“API测试工具”链接,进去发现只要填好参数后它会自动生成请求并发送。恩,可以松一口气了。

填参数,发送,返回错误“应用没有权限访问当当前API”。第一时间判断,估计送的60需要“激活”,于是充了5块钱,再试,没有权限。

——以上,第一次折腾失败——

时间就这么过去了,不服,再来。

“阿里开放平台”—“控制台”—“应用管理”—“概览”—“权限能力”—“阿里大鱼通信能力包”—“查看详情”,短信发送对应的alibaba.aliqin.fc.sms.num.send,点击进对应API的文档中心,底部“API测试工具”,进去填好参数,提交,发送成功。额,发送成功?

恩,最后发现,之前调用的是阿里通信分类的

alibaba.aliqin.ta.sms.num.send

后来调用的是阿里大鱼的

alibaba.aliqin.fc.sms.num.send

原因是阿里大鱼的验证码“了解更多”里,那个“短信发送API”指向了阿里通信“短信发送”的API文档,而实际上应该指向阿里大鱼“短信发送”的API文档。

恩,总的来说,能用接口了,还有60块送,还是能接受的。

将arduino用作ttl串口转USB通信模块

前几天买来一个esp8266模块玩,查文档得知调需用ttl串口通信,vcc接3.3V,无奈手头只有一根5V的ttl转usb。刚开始想用手头的arduino uno r3的3.3V供电,5V的ttl转usb接三根(RX、TX、GND)通信,不知是不是接线问题还是啥,电脑开minicom没有收到信息。为了确认RX、TX口,接树莓派测试,发现没反应时已经迟了,GND接到树莓派的5V去了,拔下来后串口芯片是火辣辣地烫,不敢再用。

于是着手搜用arduino当ttl转usb的方法:

(1)(实测失败)先是搜到这篇,具体是向arduino写入如下代码

1
2
3
4
5
6
7
void setup() {
pinMode(0,INPUT_PULLUP);
pinMode(1,INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
}

然后RX接RX(pin0),TX接TX(pin1),arduino插电脑,开ide,串口监视器即可。

用这方法失败了,原因暂不明。

(2)谷歌到的,很简单,用一根杜邦线将RESET跟GND连起来,RX接RX,TX接TX,arduino插电脑,开ide,串口监视器即可。

(3)方法改自这篇,向arduino写入代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <SoftwareSerial.h>
SoftwareSerial WIFISerial(8, 9); // RX, TX
void setup() {
Serial.begin(115200); //跟电脑通信的速率115200
WIFISerial.begin(115200); //跟esp8266通信速率,根据自己情况修改
}
void loop() {
if (WIFISerial.available()) {
Serial.write(WIFISerial.read());
}
if (Serial.available()) {
WIFISerial.write(Serial.read());
}
}

接着,TX接RX(pin8),RX接TX(pin9),arduino插电脑,开ide,串口监视器,成功。

可以理解为,开启一个软串口跟模块相连,硬串口跟电脑相连,arduino起到一个信息中转的作用。

Thunderbird开启远程DNS

今天打开thunderbird收邮件,发觉代理日志里,链接请求都是ip地址,意识到它没有开远程dns。进“首选项”–“高级”–“网络”中设置,发觉与firefox相比,没有了“远程DNS”选项。

遂上网搜索方法,找到

《Thunderbird Proxy Set Up for the MxTunnel》

大致意思就是,进“首选项”–“高级”–“常规”–“配置编辑器”,在里面找到network.proxy.socks_remote_dns,设置为true,重启即可。

实测方法可行。

Debian8 不明流量指向133.242.99.74 似自动更新

今早联网后,出现不明数据下载,开wireshark分析后发现大量数据(TCP)指向133.242.99.74的80端口,用dig -x查得域名为setoguchi.debian.org,浏览器进,出现一个“Welcome to setoguchi!”页面,没看懂。。。

使用命令

1
netstat -tnp

显示使用该端口的程序/PID竟然为空。

就这么下了一段时间后,系统提示有更新,点开后是那个“软件包更新程序”,安装更新时没有产生流量,估计刚才那股流量就是更新的下载。

奇怪的是我一般都是通过终端apt-get手动更新的,以往好像没出现过类似这样自动下载更新的情况。先记录下,以后在查。

使用短信验证码代替简单推送

之前自己编了个监控系统,国外的推送app由于google被封导致推送没反应,而国内的也只能郁闷地用demo并调用网络api接口(水平不够…)。总之就是两个字,麻烦…

受“短信轰炸机”启发,其实可以直接调用网络命令模拟整个“获取短信验证码”过程,这样的话,手机就可以不用安装额外的app,也在一定程度上实现了跨平台。具体实现代码周末再去尝试。