QNAP(威联通)每天自动通过邮件上报外网IP

写一篇和视频无关的文章。

这个月初从京东购买了一台QNAP 威联通 TS-453Bmini NAS主机,同时配了希捷酷狼NAS硬盘。因为是第一次用NAS,买回来的周末没干别的,就鼓捣NAS了。功能上面倒是还好,最主要的问题是我家是北京联通200M光纤,没有固定的外网IP。打电话找客服、还安排了上门师傅,都没能解决我从外网直接访问NAS的问题。

买NAS之前,我家里是光猫上只连接一个NETGEAR R8500路由器(已刷梅林固件)。NAS一开始是接到路由器上的,然后配置了端口转发,发现从外网连不进来。然后又登录光猫,看到光猫上竟然可以直接做虚拟主机端口转发,重启光猫后,看到光猫显示WLAN是一个外网IP,跟我在网上搜索到的IP地址相同,高兴坏了。之后,我想NAS接路由再配转发也没什么必要,随后干脆直接把NAS接到光猫上了,在光猫上做了虚拟主机端口转发直接到NAS。最终,终于可以从外网直接访问我的NAS了。

但是,过了一周有一天突然发现NAS从之前的外网地址连不上了,晚上回家一查,原来是外网IP地址变了。我当时以为联通是每周变一次IP,然而并不是,这次变IP后,过了3天又变了一次。貌似没有规律啊,这麻烦的。有没有办法让NAS自己把家里的外网地址上报出来呢?当然,我想了个最简单的办法,就是每天让NAS自动发一个邮件到我的邮箱,这样,即便是联通把我家外网IP变了,我也能在当天(最迟隔天)拿到新的外网地址。

下面记录一下步骤:

NAS上打开SSH
在这里插入图片描述
使用ssh工具登录到NAS
我机器上有putty,就顺手用这个了。
然后转到:

[/share/homes/admin]

当然你也可以转到其他位置,但我是建议在home下,避免被系统自动清理掉。
然后vim进入编辑模式,将以下脚本粘贴进去:

#!/bin/sh
#
# nasnotify.sh - aka /share/homes/admin/bin/nasnotify.sh
# 
#  This script e-mails a report on the NAS / Drive Status to the designated recipient
#  See QNAP Forum article: http://forum.qnap.com/viewtopic.php?f=24&t=99093
# 
SendTo="receive@receive.com"
SendFrom="sender@sender.com"
Subject="MY-NAS Daily Report"
#
#
rm -f /tmp/nasreport.email
touch /tmp/nasreport.email
echo "From: ${SendFrom}"     >>/tmp/nasreport.email
echo "To: ${SendTo}"         >>/tmp/nasreport.email
echo "Subject: ${Subject}"   >>/tmp/nasreport.email
echo " "           >>/tmp/nasreport.email


rm -f /tmp/nasreport
touch /tmp/nasreport
chmod +x /tmp/nasreport
cat <<EOF >>/tmp/nasreport
#!/bin/sh
#
# NAS Report by Patrick Wilson
# see: http://forum.qnap.com/viewtopic.php?f=185&t=82260#p366188
#
# 
echo "*********************"
echo "** QNAP NAS Report **"
echo "*********************"
echo " "
echo "NAS Model:      \$(getsysinfo model)"
echo "Firmware:       \$(getcfg system version) Build \$(getcfg system 'Build Number')"
echo "System Name:    \$(/bin/hostname)"
echo "Workgroup:      \$(getcfg system workgroup)"
echo "Base Directory: \$(dirname \$(getcfg -f /etc/config/smb.conf Public path))"
echo "NAS IP address: \$(ifconfig \$(getcfg network 'Default GW Device') | grep addr: | awk '{ print \$2 }' | cut -d: -f2)"
echo "NAS WLAN IP address:" \$(curl http://members.3322.org/dyndns/getip)
echo " " 
echo "Default Gateway Device: \$(getcfg network 'Default GW Device')" 
echo " "
ifconfig \$(getcfg network 'Default GW Device') | grep -v HWaddr
echo " "
echo -n "DNS Nameserver(s):" 
cat /etc/resolv.conf | grep nameserver | cut -d' ' -f2
echo " "
echo " "
echo "HDD Information:"
echo " "
if [ -x /sbin/hdparm ]; then
   for i in {a..d}; do echo -n /dev/sd\$i ; hdparm -i /dev/sd\$i | grep "Model"; done
else 
   echo "   /sbin/hdparm is not present" 
fi
echo " "
echo "Disk Space:"
echo " "
df -h | grep -v qpkg | grep -v grep
echo " "
echo "Mount Status:" 
echo " "
mount | grep -v qpkg
echo " " 
echo "RAID Status:" 
echo " " 
cat /proc/mdstat
echo " " 
#echo "QNAP Media Scanner / Transcoder processes running: "
#echo " " 
#/bin/ps | grep medialibrary | grep -v grep
#echo " " 
#echo -n "MediaLibrary Configuration file: " 
#ls -alF /etc/config/medialibrary.conf
#echo " " 
#echo "/etc/config/medialibrary.conf:"
#cat /etc/config/medialibrary.conf
echo " "
echo "Memory Information:" 
echo " "
cat /proc/meminfo | grep Mem
echo " "
echo "NASReport completed on \$(date +'%Y-%m-%d %T') ($0)" 
EOF
/tmp/nasreport >>/tmp/nasreport.email
cat /tmp/nasreport.email | sendmail -t 
#rm -f /tmp/nasreport.email
echo "Done." 
#done

上面这段脚本来自:http://forum.qnap.com/viewtopic.php?f=24&t=99093
我在脚本中加了一条:

echo “NAS WLAN IP address:” $(curl http://members.3322.org/dyndns/getip)

这句就是打印NAS外网地址,其实它上方的一句(echo "NAS IP address:)也是包含外网地址的。所以脚本可选修改吧。

然后保存脚本,例如叫nasreport.sh,并使用 chmod +x nasreport.sh 赋予执行权限。
此时nasreport.sh的完整路径就是:

/share/homes/admin/nasreport.sh

最后,添加定时任务。大家知道Linux的定时任务是在crontab里添加。

vi /etc/config/crontab

通过以上命令打开crontab,然后添加一句定时任务语句,如下:
在这里插入图片描述
即:

0 7 * * * /share/homes/admin/nasreport.sh

这句表示在每天早上7点,自动执行nasreport.sh这个脚本。而nasreport.sh的作用就是把带有WLAN IP的邮件发到你指定的邮箱。

OK,最后,应用并重启crontab:
在这里插入图片描述
下面是收到的上报邮件:
在这里插入图片描述
OK,通过这种方式,我就可以不用担心外网IP变化了。

当然,上面的脚本可以做一点优化,就是记录当前外网IP,脚本从每天改为每小时或者更短时间执行一次,当发现当前外网IP和上次记录的IP不同时,才发送通知邮件。后续有空的时候再实践吧。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值