网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月19日漏签0天
linux吧 关注:545,693贴子:2,578,262
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 11回复贴,共1页
<<返回linux吧
>0< 加载中...

关于一个伪DDNS的想法,麻烦大神评估下难度。大概的情况是这

  • 取消只看楼主
  • 收藏

  • 回复
  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
关于一个伪DDNS的想法,麻烦大神评估下难度。
大概的情况是这样,我已经申请了动态的公网IP,做了端口映射,开了FTP,可以远程登录我的N1盒子挂的硬盘管理文件,但公网IP一天一变,我又不想购买DDNS服务或者装其它软件,毕竟只是个电视盒子,系统安全问题有限。
于是有了以下想法:
1、写个代码,定时执行curl ip.sb获取光猫公网IP地址;
2、将得到的IP地址写入getnote.cf这个免费的网络笔记本网页中(getnote.cf/***,尾号随机生成,个人专属笔记);
3、我在外面用电脑或手机访问getnote.cf/***就能得知最新的家庭宽带公网IP。
这样在我根据最新IP地址更改我的FTP服务器设置就可以远程访问了。
请教:这个想法涉及哪些命令或插件?本人linux零基础,只是最近折腾斐讯N1大概看了些常用命令而已。


  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
盒子系统空间有限,楼上打错字。我装了安卓与coreelec双系统,存储空间相当紧张。


2026-06-19 06:34:13
广告
不感兴趣
开通SVIP免广告
  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个网络笔记本相当简单,其中textarea就是网页文本内容,我就是想用最简单的命令去输入新内容替换原内容,实时更新我家里的公网IP。


  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
现在只能出门前先获取最新IP,记下来,人肉DDNS。


  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
自顶一下


  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
############################################### CoreELEC ## https://coreelec.org ###############################################
CoreELEC (joyo1): 9.2.3 (Amlogic.arm)
CoreELEC:~ # /var/media/sda1-usb-Mass_Storage_Dev/ddns/ddns-go
-sh: /var/media/sda1-usb-Mass_Storage_Dev/ddns/ddns-go: Permission denied
CoreELEC:~ #


  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
CoreELEC:~ # chmod 777 /var/media/sda1-usb-Mass_Storage_Dev/ddns/ddns-go
CoreELEC:~ # ls -l /var/media/sda1-usb-Mass_Storage_Dev/ddns/ddns-go
-rw-r--r-- 1 root root 7274496 May 19 09:07 /var/media/sda1-usb-Mass_Storage_Dev/ddns/ddns-go
CoreELEC:~ #


  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
先写好py文件:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
import urllib2
import re
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
url = urllib2.urlopen("http://txt.go.sohu.com/ip/soip")
text = url.read()
ip = re.findall(r'\d+.\d+.\d+.\d+',text)
print ip[0]
ip1=str(ip)
sender_mail = 'XXXXXXXXX@126.com'
sender_pass = 'XXXXXXXXXXXXXXX'#邮箱客户端授权码,可以从邮箱网页版设置处重启服务获取
to = 'XXXXXXXXX@126.com'
# 设置总的邮件体对象,对象类型为mixed
msg_root = MIMEMultipart('mixed')
# 邮件添加的头尾信息等
msg_root['From'] = 'XXXXXXXX@126.com<XXXXXXXX@126.com>'
msg_root['To'] = to
# 邮件的主题,显示在接收邮件的预览页面
subject = '最新COREELEC公网IP地址'
msg_root['subject'] = Header(subject, 'utf-8')
# 构造文本内容
text_info = ip1
text_sub = MIMEText(text_info, 'plain', 'utf-8')
msg_root.attach(text_sub)
sftp_obj =smtplib.SMTP('smtp.126.com', 25)
sftp_obj.login(sender_mail, sender_pass)
sftp_obj.sendmail(sender_mail, to, msg_root.as_string())
sftp_obj.quit()
print('sendemail successful!')
上面这段代码已经成功获取IP并发送到我的邮箱
下面用linux的crontab命令定时执行这个py文件:
crontab -e
*/2 * * * * python /var/media/sda1-usb-Mass_Storage_Dev/e1.py
奇怪的是并没有实现每隔两分钟执行一次的效果,还得再研究研究。


2026-06-19 06:28:13
广告
不感兴趣
开通SVIP免广告
  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
更优的方案应该是py脚本定时执行IP地址对比循环,与上一次值不一致则发送,不然邮箱垃圾邮件太多了。但我用python的timer老是提示语法错误,干脆用更简单粗暴的linux命令crontab。欢迎大神帮提点意见。


  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
已实现用python进行IP对比并将更新结果发送邮箱的功能,用两个def函数分别给两个变量赋值,用sleep使两个函数隔一段时间分别执行,再用if判断这两个变量是否相等,不相等则输出最新那个IP到邮箱。


  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
以下脚本适用于python2.7,可以实现每30秒获取一次IP地址,并与上一次获取的地址进行比对,若有变化则发送邮件通知。
另存为test.py文件后,在coreelec的ssh远程终端中使用linux命令:
python /var/media……/test.py & #命令后加&字符,不至于终端关闭后即停止运行,可转入后台一直运行。
test.py下载链接:https://pan.baidu.com/s/1i4IcfkWKkuGdRaq9Ws3Iqg 提取码:ujwg
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
import urllib2
import threading
import re
import time
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
def ipvs1():
url = urllib2.urlopen("http://txt.go.sohu.com/ip/soip")
text = url.read()
global ip
ip = re.findall(r'\d+.\d+.\d+.\d+',text)
global ips1
ips1=ip
def ipvs2():
url = urllib2.urlopen("http://txt.go.sohu.com/ip/soip")
text = url.read()
global ip
ip = re.findall(r'\d+.\d+.\d+.\d+',text)
global ips2
ips2=ip
a=1
while a>0:
ipvs1()#给ips1赋值为当前ip
time.sleep(30.0)#等待30秒
ipvs2()#给ips2赋值为30秒后的Ip
if ips1!=ips2:#比对两个时间下IP地址的值,如不相同则执行以下发送邮件的脚本。
ipn=str(ips2)#将最新Ip地址转化为字符串,以便后面做为邮件正文
sender_mail = 'zxxxxxxxxx@126.com'
sender_pass = 'JULVNFGMTLUKAKBF'#126邮箱客户端授权码,在网页版邮箱设置-更多设置-POP3/SMTP……中获取
to = 'zxxxxxxxxx@126.com'
# 设置总的邮件体对象,对象类型为mixed
msg_root = MIMEMultipart('mixed')
# 邮件添加的头尾信息等
msg_root['From'] = 'zxxxxxxxxx@126.com<zxxxxxxxxx@126.com>'
msg_root['To'] = to
# 邮件的主题,显示在接收邮件的预览页面
subject = '最新COREELEC公网IP地址'
msg_root['subject'] = Header(subject, 'utf-8')
# 构造文本内容
text_info = ipn
text_sub = MIMEText(text_info, 'plain', 'utf-8')
msg_root.attach(text_sub)
sftp_obj =smtplib.SMTP('smtp.126.com', 25)
sftp_obj.login(sender_mail, sender_pass)
sftp_obj.sendmail(sender_mail, to, msg_root.as_string())
sftp_obj.quit()
print('sendemail successful!')
else:
#print("next while loop")
continue
下一步研究一下如何做成系统服务,开机自启动。


  • 暗红色的披风
  • -----rw-
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
CoreELEC (joyo1): 9.2.3 (Amlogic.arm)
CoreELEC:~ # /dev/ipsend.sh
/dev/ipsend.sh: line 6: syntax error: unexpected "done" (expecting "do")
CoreELEC:~ #
在终端输入以下代码却可以执行:
a=1
while [ a>0 ]
do
python /var/media/sda1-usb-Mass_Storage_Dev/cip.py
sleep 30
done


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 11回复贴,共1页
<<返回linux吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示