远程连接家里台式机的零成本解决方案

我有一台算力很强的台式机用来跑训练模型

但是我希望能够远程监控它的运行状态和做一些操作,ssh足够。但是由于实际上自己的IP都是局域网(天朝的大局域网),所以需要做一番操作。当然teamview也越来越不良心了,花生壳之类的要多搞个软件或硬件实在不舒服,虽然我的路由器是梅林。。而且还要花钱,白嫖怪怎么会花钱呢?于是我拨打了电信小姐姐的电话给我换成了公网IP。有了后来的操作:

1. 获得公网IP

“喎?电信小姐姐吗?给我换一下公网IP”
“好的,亲”
于是我有了公网IP

2. 打开测网速的或者查IP的网站

发现我的IP不是10打头的局域网IP了。

3. 添加端口映射

虽然我有了公网IP,但是这个IP是挂在电信猫上的,不是我的实际机器,所以有人说桥接、破解电信猫、DMZ。。。。不用这么麻烦,直接在天翼网关设置下端口转发就可以:
使用光猫后面贴着的useradmin登录192.168.1.1的傻瓜界面:
端口映射
在端口映射填一下就可以,外部端口是公网IP用的端口,内部端口对应着局域网IP的机器的端口,所以你内网可以连很多个机器。这样,可以使用手机开个热点然后用笔记本连热点试一下远程ssh,公网ip:端口-》局域网的某台机器。
搞定。

4. 公网IP隔一段时间也会变怎么办?

首先公网IP会变好不好呢?直观上好像挺不好的,因为你的网络地址一直变就要时不时注意你的IP,要不然就又不能远程了。但是从安全的角度想,又是个好事,假如你作为一个个人用户,IP固定,万一被别人盯上拿下你的机器做肉鸡、挖矿。。就太不好了。而且我还写爬虫玩,别人封了我IP我岂不是就等于爬不了了。
有人说用DDNS。。。
作为白嫖怪怎么可能买DDNS,免费的又不敢用,我选择自己机器上监控我IP。

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 20 22:58:04 2021
@author: fq
"""

import time
import requests
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email import encoders
from email.mime.base import MIMEBase
from email.utils import parseaddr, formataddr


mailserver = "smtp.126.com"
username_send = 'wode126jiqiren@126.com'
password = 'bushimima shi 126 shouquanma'
username_recv = 'wozijideyouxiang@qq.com'              # receive the email
sleep_for = 60 * 60 #   one hour check
ip = ''                                                             # 
def SendEmail(ip):  
    mail = MIMEMultipart()
    mail['Subject'] = 'IP_change'
    mail['From'] = username_send
    mail['To'] = username_recv
    mail.attach(MIMEText(ip))
    try:
        print('1')
        smtp = smtplib.SMTP()
        print('2')
        smtp = smtp.connect(mailserver,port=25)
        print('3')
        smtp.login(username_send,password)
        print('4')
        smtp.sendmail(username_send,username_recv,mail.as_string())
        smtp.quit()
    except:
        print('error send email')
        smtp = smtplib.SMTP(mailserver,port=25)
        smtp.login(username_send,password)
        smtp.sendmail(username_send,username_recv,mail.as_string())
        smtp.quit()

while True:
    r = requests.get('http://api.ipify.org')
    time.sleep(3)
    if(r.status_code == 200):
        if (ip == r.text):
            print 'no change in IP'
        else:
            ip = r.text
            print ip + ' is the new IP'
            SendEmail(ip) 
    else:
        print 'error getting ip'
    time.sleep(sleep_for)

这样就实现了在机器上一小时检查一次公网IP,如果变化了就给自己发一个邮件,微信绑着qq邮箱,变了自己就能及时知道。

其实最好有个家庭小主机专门挂这些小软件,甚至树莓派也可以,但是我没有,就一直用台式机挂着吧,反正也不关机。

然后我就可以摆脱teamview,随时都能监控我的tensorboard,随时都能ssh进来看看了。

另外,当机器在开动训练任务时候,机器比较卡,apscheduler的定时任务和爬虫任务总是挂掉,盲猜apscheduler也是隔一段时间检查自己的时间对不对,但是因为机器优先调度了正在疯狂运算的任务,这种定时检查的小工作就被挤压了,导致时间一不小心就超了,所以爬虫和定时任务老是完犊子,所以啊,还是挂一个树莓派比较香。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值