0.主设备与树莓派不再一个子网,需要发送自己的IP给主设备,才可以在外网连接到树莓派
那么就需要写一个可以发送树莓派IP的脚本了
(1)如何得知自己的IP
访问网站:http://members.3322.org/dyndns/getip
(2)如何写一个可以发送邮件的脚本
使用python,需要使用库 smtplib和email。这两个是python官方库,不需要pip。
(题外话:小编在看到这两个库的时候习惯性的就去pip了,结果报错说找不到一个适合当前版本python的smtplib包。。。后来在stackoverflow上才发现是因为我用的是Anaconda自带的python所以在阿里云上找不到那些包,stackoverflow上还说直接import就有,不需要pip)
以下是代码
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
import requests as r
#qq邮箱smtp服务器
host_server = 'smtp.qq.com'
#sender_qq为发件人的qq号码
sender_qq = '14798**084'
#pwd为qq邮箱的授权码
pwd = 'h**kkesqfs****fg'
#发件人的邮箱
sender_qq_mail = '14798****4@qq.com'
#收件人邮箱
receiver = '1479****84@qq.com'
#邮件的正文内容
IP = r.get('http://members.3322.org/dyndns/getip')
IP = IP.text
print(IP)
mail_content = IP
#邮件标题
mail_title = '树莓派IP地址'
#ssl登录
smtp = SMTP_SSL(host_server)
#set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式
smtp.set_debuglevel(0)
smtp.ehlo(host_server)
smtp.login(sender_qq, pwd)
msg = MIMEText(mail_content, "plain", 'utf-8')
msg["Subject"] = Header(mail_title, 'utf-8')
msg["From"] = sender_qq_mail
msg["To"] = receiver
smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
smtp.quit()
接下来使用ngrok连接
访问ngrok官网,https://ngrok.com/product,按着里面的步骤慢慢来就好。
免费用户每次的外网域名是随机的,所以需要把域名通过邮件发给主机。
步骤3之后我的配置文件存在了/root/.ngrok2/ngrok.yml
之后使用
./ngrok http 80 开启http服务
./ngrok tcp 22 开启ssh连接
但是速度回很慢、、、
我的尝试是http可以使用,但是tcp完全连不上
1.局域网SSH连接
用Putty就好。
至于如何设置树莓派无需账户名密码直接登录请看
https://blog.csdn.net/xiaochou1994/article/details/81416653
2.互联网SSH
用REMOT3.IT
3.screen
强推一波screen这款神器。一般而言,ssh连接断开之后,你用这个ssh执行的所以进程都会被杀死。如果你希望有一些程序即使在SSH连接断开之后仍然工作,就需要创建一个screen,并且在这个screen中运行那个程序。
安装 apt-get install screen
创建 screen -S screen名字
查看 screen -ls
连接 screen -r screen名字
关闭 screen -d screen名字
快捷键
Control + d 关闭当前screen
Control + a 在最近两个screen之间切换