मैं एक तरह का स्टेटस पेज बनाने के लिए काम कर रहा हूं। अनिवार्य रूप से, यह एक छोटा सीएसएस वाला एक मूल HTML पृष्ठ होगा जो सर्वरों की सूची और ऑनलाइन के लिए एक हरा बुलबुला, ऑफ़लाइन के लिए लाल प्रदर्शित करता है। मेरे पास पेज है जिस तरह से मैं चाहता हूं और मेरी स्क्रिप्ट सभी सर्वरों को पिंग करने के लिए काम करती है। मैंने एक बहुत ही सरल स्पैन टैग का उपयोग करके बुलबुले हासिल किए, फिर पृष्ठभूमि-रंग को लाइमग्रीन में सेट किया।

पायथन लिपि सर्वरों की सूची के माध्यम से पुनरावृत्त होती है और हर एक को चार बार पिंग करती है। बाद में, यह परिणाम की जांच करता है और यह दिखाने के लिए एक संदेश प्रिंट करता है कि सर्वर ऑनलाइन है या नहीं।

मेरी समस्या यह है कि मैं दोनों को एक साथ काम करने के लिए नहीं कह सकता। मैं अपनी HTML फ़ाइल में जाने और पिंग के परिणाम के आधार पर किसी तत्व की शैली को संशोधित करने के लिए पायथन और ब्यूटीफुल सूप का उपयोग कैसे कर सकता हूं?

उदाहरण: सर्वर 1 ऑनलाइन है और वृत्त हरा है। सर्वर 2 नीचे चला जाता है, स्क्रिप्ट खराब पिंग को नोटिस करती है। स्क्रिप्ट तब HTML पर नेविगेट करती है और सर्वर 2 के लिए स्पैन बैकग्राउंड-कलर को लाल में बदल देती है।

पायथन लिपि के लिए कोड यहां दिया गया है:

# import dependencies
import os
import pandas
from bs4 import BeautifulSoup
import re
soup = BeautifulSoup(open('index.html'), 'html.parser')

# import servernames from csv, convert to list
colnames = ['SERVERNAME']
data = pandas.read_csv('Server_List.csv', names=colnames)
hostnames = data.SERVERNAME[1:].tolist()

# ping each server
for hostname in hostnames:
    # pings each server four times
    response = os.system("ping -n 4 " + hostname)
    head, sep, tail = hostname.partition('.')
    # check the response
    if response == 0:
        print('\n', flush=True)
        print(head.upper(), 'is up!\n', flush=True)
    else:
        print('\n', flush=True)
        print(head.upper(), 'is down!\n', flush=True)

यहाँ मेरी अवधि में से एक है:

<span class="status" style="background-color: limegreen;">

और यहाँ मेरी कक्षा है:

.status {
    padding: 2px 11px;
    border-radius: 100%;
}
0
NTWorthy 30 अक्टूबर 2019, 21:37

1 उत्तर

सबसे बढ़िया उत्तर

आपको गतिशील रूप से HTML उत्पन्न करने की आवश्यकता होगी।

यह एक टेम्पलेट इंजन का उपयोग करके किया जा सकता है, लेकिन आप इसे "मैन्युअल रूप से" भी कर सकते हैं।

यह कैसे काम कर सकता है इसका एक उदाहरण है:

import os
import pandas
import re

import html

# Define the template string. Could also be loaded from a file
template = """<html>
<head>
</head>
<body>
Server Status:

$$replace_this$$

</body>
</html>"""

# import servernames from csv, convert to list
colnames = ['SERVERNAME']
data = pandas.read_csv('Server_List.csv', names=colnames)
hostnames = data.SERVERNAME[1:].tolist()


html_input = ""

# ping each server
for hostname in hostnames:
    # ping server four times
    response = os.system("ping -n 4 " + hostname)
    head, sep, tail = hostname.partition('.')

    # Append server name, escape server name to prevent injection attacks (in case data contains malicious content)
    html_input += "<p>" + html.escape(hostname)

    # check the response
    if response == 0:
        html_input += "Server is <b>up</b>"
    else:
        html_input += "Server is <b>down</b>"

    html_input += "</p>\n"

html_result = template.replace("$$replace_this$$", html_input)

# Now you can use html_result for anything, such as writing it to a file.

ध्यान दें कि यह सबसे कुशल या पेशेवर तरीका नहीं है, लेकिन यह शायद काफी अच्छी तरह से काम करता है।

0
xarantolus 30 अक्टूबर 2019, 20:28