Python пинг между двумя серверами с внешнего сервера - PullRequest
0 голосов
/ 04 мая 2018

возможно ли пинговать между двумя серверами / компьютерами с внешнего сервера?

пример:

у нас есть три сервера A, B и C, которые запускают скрипт из A, я хочу проверить пинг между B и C.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Я бы выбрал такой подход (другое жизнеспособное решение со скриптом Python могло бы сделать этот SSH-туннель от A до B и C). Я немного опущен ниже, но код должен быть довольно точным по сравнению с комментариями ...

Создать функцию REST API /api/ping, например, с колбой в B и C

from flask import json, request
import subprocess

def callPing(ip):
   # this returns True|False, but other `subprocess` methods can return more info from called Linux command
   if subprocess.check_output(["ping", "-c", "1", ip]):
       return "OK"
   else:
       return "Fail"

@app.route('/ping', methods = ['POST'])
def ping():

    ip = str(request.data) # if in POST body, plain
    ip = request.json["ip"] # body (f.ex.) {"ip":"127.0.0.1"} and headers has Content-Type: application/json

    txt = callPing(ip)
    request.headers['Content-Type'] == 'text/plain':
        return txt

Отправить запрос POST от A до B и / или C

import requests
from json import dumps

targetIP = '8.8.8.8'
serverIP = '127.0.0.1'

data = {'user_name': targetIP }
headers = {'Content-Type': 'application/json', 'Accept': 'application/json'}
url = "http://"+serverIP+"/api/ping"
r = requests.post(url, headers=headers, data=dumps(data))

Установка API REST Flask на существующем сервере Linux занимает 1-3 человеко-часа, если порт 80 в порядке для API.

0 голосов
/ 04 мая 2018

Вы можете попробовать это

импорт ОС

live = os.system ("ping -c 1" + "B or C ip")

если жив == 0:
печать "up!"
еще:
печать "вниз!"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...