debian设置笔记

1、设置IP地址、网关
nano /etc/network/interfaces /etc/network/interfacesbak #备份原有配置文件
nano /etc/network/interfaces #编辑网网卡配置文件
auto lo
auto eth0 #开机自动连接网络
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static #static表示使用固定ip,dhcp表述使用动态ip
address 192.168.21.166 #设置ip地址
netmask 255.255.255.0 #设置子网掩码
gateway192.168.21.2 #设置网关
ctrl+o #保存配置
ctrl+x #退出
2、设置dns
cp /etc/resolv.conf /etc/resolv.confbak #备份原有dns配置文件
nano /etc/resolv.conf #编辑配置文件
nameserver 8.8.8.8 #设置首选dns
nameserver 8.8.4.4 #设置备用dns
ctrl+o #保存配置
ctrl+x #退出

可自升级物联网设计略谈

我没参考圈内人士怎么设计的,完全依照自己的想法,所以只能叫略谈,等我有时间参照别人设计方案时,再做比较。

物联网即把物连接到网络,故物品和网络之间必须有交换信息的控制设备,这种设备可以是微型电脑(例如:Raspberry pi)也可以是单片机(arm c51系列),但必须能接入网络。

接入网络方式有:局域网 、移动网、电信/联通 等骨干网络。局域网需要铺设线路、控制距离有限,小范围尚可,大范围就不行了,但是可以让局域网接入互联网,这就靠自己的本事了。

移动网不受地域限制,但是传输数据成本高、速度慢,根据应用场景去选择。

控制设备直接接GPS或继电器等控制设备运行状态。

下面谈整个系统设计:

把每个控制设备看成子节点,在外网或局域网建立控制服务器,子节点与控制服务器通信,读取或下达命令。

如果不好获取子节点设备IP可采取从属模式,即子节点读取控制服务器命令库,从而进行相应控制,这样消耗流量时效稍差。

采取主动模式,控制服务器直接与子节点进行socket通信,下达命令。

命令格式采取json模式,里面包括软件版本号,这样子节点可与自身软件版本号比较,进行升级。所以只要把环境搭建好,其它的就不用管了,想修改程序只要在控制服务器修改版本号就行,子节点自动下载最新程序进行更新。

具体实现过程不详述,有兴趣联系我。

 

 

exim配置

服务器是debian,用apt-get安装exim4,exim4-config,exim4-daemon-light
之后配置/etc/exim4/update-exim4.conf.conf,配置文件如下:

dc_eximconfig_configtype=’smarthost’ #用smarthost发信;通过SMTP或fetchmail接收信件
dc_other_hostnames=”
dc_local_interfaces=’127.0.0.1′ #只接收本机的SMTP请求,只在本机使用Exim4
dc_readhost=”
dc_relay_domains=”
dc_minimaldns=’false’
dc_relay_nets=”
dc_smarthost=’smtp.gmail.com’ #gmail的smtp主机
CFILEMODE=’644′
dc_use_split_config=’false’ #不使用分散方式的配置文件
dc_hide_mailname=’false’
dc_mailname_in_oh=’true’
dc_localdelivery=’mail_spool

然后编辑/etc/mailname

修改/etc/exim4/passwd.client,按照举例添加smtp地址和用户名密码,google的smtp真实地址为:gmail-smtp-msa.l.google.com。
修改/etc/exim4/email-addresses,添加用户对应的外部地址。

utf-8编码时统计字数

写该程序的目的是因为utf-8编码时,中文和数字、英文字母所占字节数不同,在进行截取时不方便处理。

[php]
function utf8_array($msg){
$result=array();
$strlen = strlen($msg);
for($i=0; $i<$strlen; $i++) {
$str=substr($msg, $i, 1);
if(ord($str)>0xA0 ){
$result[]=substr($msg, $i, 3);
$i =$i+2;
}else{
$result[]=substr($msg, $i,1);
}
}
return $result;

}
//下面为示例
function sendSms($tele_num,$msg){
header("Content-type:text/html;charset=utf-8");
$sms=D("sms");
$msg_data=utf8_array($msg);
$msg_count=count($msg_data);//字数
$msg_num=1;//短信条数
if($msg_count>65){
$msg_num=ceil($msg_count/62);
}

if($msg_num==1){
$insert_data=array("is_sent"=>0,"tele_num"=>$tele_num,"add_time"=>time(),"send_time"=>0,"send_content"=>$msg);
$sms->add($insert_data);
}else{
for($i=0;$i<$msg_num;$i++){
$msg_send="";
for($j=$i*62;$j<($i+1)*62;$j++){
if($j<$msg_count)
$msg_send.=$msg_data[$j];

}
$msg_send.="(".($i+1).")";
$insert_data=array("is_sent"=>0,"tele_num"=>$tele_num,"add_time"=>time(),"send_time"=>0,"send_content"=>$msg_send);
$sms->add($insert_data);
}
}

}
[/php]