waterfis 发表于 2022-12-5 11:44

简便的定时发送远程电脑IP到钉钉

本帖最后由 waterfis 于 2022-12-8 10:01 编辑

由于公司拉专线,但没资源给固定IP,IP经常两三天一变,因此弄了个每天自动发IP到钉钉群,方便大家远程或者其他用途,欢迎大家讨论或补充

感谢坛友提点,已优化成当IP变动,才发送ip,每半小时检测一次IP变动

#! /usr/bin/env python  
# -*- coding: utf-8 -*-
import sys
import requests
import json
from urllib.request import urlopen
from json import load
import time


def msg(text):
    token ="钉钉群的token"
    headers = {'Content-Type': 'application/json;charset=utf-8'}# 请求头
    api_url = "https://oapi.dingtalk.com/robot/send?access_token=" + token
    json_text = {
      "msgtype": "text",# 信息格式
      "text": {
            "content": text
      }
    }
    print(json_text)
    # 发送并打印信息
    r = requests.post(api_url, json.dumps(json_text), headers=headers).content
    print(r)


#获取IP
def get_ip():
        my_ip = resp = urlopen('http://httpbin.org/ip')
        #http://ip.42.pl/raw
        #https://api.ipify.org/?format=json
        #http://jsonip.com

        return str(my_ip.read(),"utf-8")

def start():
    currIP = "0.0.0.0"
    while True:
      ip_result = get_ip()
      ip_json = json.loads(ip_result)   #格式化返回结果
      
      ip = ip_json["origin"]

      if(ip != currIP):
            currIP = ip   #判断ip是不是一致,不一致就发送最新ip信息
            msg(ip_result)
      
      time.sleep(1800)


if __name__ == "__main__":
        start()

hipda987 发表于 2022-12-16 10:27

我一般用邮箱 的方式
import time
import socket

# 之前记录的IP地址
last_ip = "114.201.138.22"

# 每隔5秒检测一次IP地址
while True:
    # 获取当前的IP地址
    ip = socket.gethostbyname(socket.gethostname())
    if ip != last_ip:
      # 发送邮件
      sendmessage(ip)
      # 记录新的IP地址
      last_ip = ip
    time.sleep(5)




def sendmessage(change_ip)
    import smtplib
    from email.message import EmailMessage

    smtp_server = "smtp.example.com"
    smtp_port = 587

    # 设置发件人邮箱地址、密码和收件人邮箱地址
    sender_email = "sender@example.com"
    password = "password"
    receiver_email = "receiver@example.com"

    server = smtplib.SMTP(smtp_server, smtp_port)

    server.starttls()

    server.login(sender_email, password)

    message = EmailMessage()

    message["Subject"] = "IP Change Alert"
    message["From"] = sender_email
    message["To"] = receiver_email

    # 设置邮件正文
    message.set_content(change_ip)

    server.send_message(message)

    server.quit()

ly765893958 发表于 2022-12-16 09:14

不用这么麻烦有个东西叫动态域名路由器上面设置一下就行了   
http://www.pubyun.com/accounts/signin/?next=/user/dyndns/rrs/
我家里也是动态的公网ip   每天变动就用的这个方法解决的

晓晓520 发表于 2022-12-6 08:18

谢谢楼主分享

kover 发表于 2022-12-6 08:50

应该弄成变动了再发,这样就不重复了

waterfis 发表于 2022-12-6 09:38

kover 发表于 2022-12-6 08:50
应该弄成变动了再发,这样就不重复了

有道理,可以再优化,哈哈

cnqv 发表于 2022-12-6 12:30

支持原创

fdsuf4 发表于 2022-12-7 17:38

这倒是一个好思路,家庭宽带做外网穿透的时候是不是也可以这样考虑

netxboy 发表于 2022-12-7 19:19

钉钉群的token从哪弄, 钉钉个人号的token也可以吗?

waterfis 发表于 2022-12-8 09:56

netxboy 发表于 2022-12-7 19:19
钉钉群的token从哪弄, 钉钉个人号的token也可以吗?

在群设置,智能群助手,添加机器人,那个Webhook就是了

leipf 发表于 2022-12-8 14:36

这个办法不错,可以修改成可以自由发送到邮箱等
页: [1] 2
查看完整版本: 简便的定时发送远程电脑IP到钉钉