1、我的方法比较笨拙,思路是:公司内部的DVR接入内网,然后在网关(linux 服务器)
配置PPTP VPN服务器,让外部主机通过VPN接入公司内部网,由于公司为电信ADSL
拨号上网。所以关键就是要取得网关的公网IP,我没有使用像花生壳那样的动态域名
解析服务,我让linux服务器通过邮件发送它的IP(只要IP变更就发送邮件否则不发)。
这样IP的问题就解决了。
2、发邮件功能我用的是mailx这个工具。之前在网上查找了一下在linux shell下发送邮件
的方法有说mutt+msmtp实现的,还有说修改mail、sendmail实现。实验了都没成功
不知道错在哪里了。我想只是发送一个邮件一个邮件用户代理软件就行了应该不用这么
复杂吧,所以后来找到了mailx软件,RHEL 5下/bin/mailx为/bin/mail的链接所以使用
mail和mailx都是执行同一个mail指令。但是这个mail工具无法调用外部SMTP服务器
发邮件的功能,解决方法升级mailx新版本下载安装mailx-12.4.tar.bz2。
# tar -jxvf mailx-12.4.tar.bz2
# cd mailx-12.4
# make
# make install UCBINSTALL=/usr/bin/install
安装后的mailx使用的是 /etc/nail.rc 配置,不是 /etc/mail.rc 这个需要注意下。(网上找的)
# vi /etc/nail.rc (看出亮点了吗?)
2 set from=123456@qq.com
3 set smtp=smtp.qq.com
4 set smtp-auth-user=123456
5 set smtp-auth-password=sbsbsbsb
6 set smtp-auth=login
3、编辑shell脚本实时获得ADSL公网IP(脚本放在/etc/rc.local下,脚本编的比较笨拙)
#!/bin/bash
function get_internet_ip(){
Internetip=`ifconfig|grep -C 1 ppp0|grep "inet addr"|cut -d : -f 2|cut -d ' ' -f 1`
echo "$Internetip">/root/myshell/internet_ip_start
sleep 300
Internetip=`ifconfig|grep -C 1 ppp0|grep "inet addr"|cut -d : -f 2|cut -d ' ' -f 1`
echo "$Internetip">/root/myshell/internet_ip_end
/usr/bin/diff /root/myshell/internet_ip_start /root/myshell/internet_ip_end
if [[ `echo "$?"` != 0 ]]
then
echo " `date` $Internetip"|/usr/local/bin/mailx -s "Linux Server IP" 123456@qq.com
fi
get_internet_ip
}
while [ true ]
do
get_internet_ip
done
4,、VPN实现在前面有写
5、在公司外面如果想查看监控就要先通过邮件取得IP然后建立VPN连接,最后在浏览器输入DVR地址就能看到了。