簡體   English   中英

試圖將數據從 python 中的一個腳本發送到另一個腳本

[英]trying to send data from one script in python to another script

我正在嘗試編寫一個腳本,因此當無法看到 IP 地址時,會通過電報發送一條消息,讓我知道哪台計算機處於離線狀態

我已經能夠讓電報端工作,但我無法從測試 ip 地址的主腳本傳遞數據,目前我在那里有測試數據,但我希望它發送錯誤與計算機名稱

主程序

import socket
import ssl
from datetime import datetime
import pickle

import subprocess
import platform

class Server:
    def __init__(self, name, port, connection, priority):
        self.name = name
        self.port = port
        self.connection = connection.lower()
        self.priority = priority.lower()

        self.history = []
        self.alert = False

    def check_connection(self):
        msg = ""
        success = False

        now = datetime.now().strftime("%d-%m-%Y %H:%M")

        try:
            if self.connection == "plain":
                socket.create_connection((self.name, self.port), timeout=10)
                msg = f"{self.name} is up. On port {self.port} with {self.connection}"
                success = True
                self.alert = False
            elif self.connection == "ssl":
                ssl.wrap_socket(socket.create_connection((self.name, self.port), timeout=10))
                msg = f"{self.name} is up. On port {self.port} with {self.connection}"
                success = True
                self.alert = False
            else:
                if self.ping():
                    msg = f"{self.name} is up. On port {self.port} with {self.connection}"
                    success = True
                    self.alert = False
        except socket.timeout:
            msg = f"server: {self.name} timeout. On port {self.port}"
        except (ConnectionRefusedError, ConnectionResetError) as e:
            msg = f"server: {self.name} {e}"
        except Exception as e:
            msg = f"No Clue??: {e}"

        if success == False and self.alert == False:
            # Send Alert
            self.alert = True
            import tg_start
            tg_start.send_message("Happy days")

        self.create_history(msg, success, now)

    def create_history(self, msg, success, now):
        history_max = 100
        self.history.append((msg, success, now))

        while len(self.history) > history_max:
            self.history.pop(0)

    def ping(self):
        try:
            output = subprocess.check_output("ping -{} 1 {}".format('n' if platform.system().lower(
            ) == "windows" else 'c', self.name), shell=True, universal_newlines=True)
            if 'unreachable' in output:
                return False
            else:
                return True
        except Exception:
            return False


if __name__ == "__main__":
    try:
        servers = pickle.load(open("servers.pickle", "rb"))
    except:
        servers = [
            # Server("ifmc-repserver", 80, "plain", "high"),
            # Server("ifmc-repserver", 80, "plain", "high"),
            # Server("ifmc-repserver", 465, "ssl", "high"),
            # Server("ifmc-repserver", 80, "ping", "high"),
            Server("ifmc-repserver", 80, "ping", "high")
        ]

    for server in servers:
        server.check_connection()
        print(len(server.history))
        print(server.history[-1])

    pickle.dump(servers, open("servers.pickle", "wb"))

和 tg_start.py

import requests

message = "global"
alert = ""

def send_message(text):
    global alert
    global message
    print ("this is text messsage" + " " + text)
    #text = "Superman"
    alert = text
    print("Sending ALERT ...")
    token = "token"
    chat_id = "chat_id"
    print("test message" + " " + alert)

    url_req = "https://api.telegram.org/bot" + token + "/sendMessage" + "?chat_id=" + chat_id + "&text=" + alert

    print(url_req)
    #results = requests.get(url_req)
    results = requests.post(url_req) # this request is a post, not a get

    print(results.json())
    # text = "my name" + text


send_message(alert)

您的代碼稍作更改,sendMessage 需要 POST 請求,而不是 GET 請求。

def send_message(text):
    global alert
    global message
    print ("this is text messsage" + " " + text)
    alert = text
    print("Sending ALERT ...")
    token = "token"
    chat_id = "chat_id"
    print("test message" + " " + alert)

    url_req = f"https://api.telegram.org/bot{token}/sendMessage?chat_id={chat_id}&text={alert}"

    print(url_req)
    results = requests.post(url_req) # this request is a post, not a get
    print(results.json())
    # text = "my name" + text

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM