Bagaimana untuk Melaksanakan Skrip Python Melalui Crontab untuk Memantau Status Pelayan dan Mencipta Kejadian Baharu?

Linda Hamilton
Lepaskan: 2024-10-22 07:30:31
asal
463 orang telah melayarinya

How to Execute Python Scripts Via Crontab to Monitor Server Status and Create New Instances?

Melaksanakan Skrip Python melalui Crontab

Masalah: Pengguna mungkin menghadapi kesukaran apabila cuba melaksanakan skrip Python menggunakan crontab Linux, terutamanya apabila bertujuan untuk jalankan mereka setiap 10 minit. Pelbagai penyelesaian, seperti mengubah suai fail anacron atau menggunakan crontab -e, mungkin terbukti tidak berkesan, menyebabkan pengguna mempersoalkan keperluan untuk perkhidmatan tertentu dimulakan semula atau fail yang perlu diedit untuk konfigurasi.

Jawapan:

Untuk menyelesaikan isu ini, rujuk panduan berikut:

  1. Edit fail crontab: Masukkan crontab -e ke dalam terminal anda untuk mengakses crontab .
  2. Tambah skrip: Tambahkan perintah yang dikehendaki pada fail crontab, seperti yang ditunjukkan di bawah untuk melaksanakan skrip setiap 10 minit:
*/10 * * * * /usr/bin/python /home/souza/Documents/Listener/listener.py
Salin selepas log masuk
  1. Simpan fail crontab: Tekan Ctrl X untuk keluar, kemudian Y untuk menyimpan perubahan.

Konfigurasi Fail:

Fail yang memerlukan pengeditan ialah fail crontab, yang boleh diakses dan diubah suai menggunakan arahan crontab -e.

Skrip:

Skrip Python anda mesti dikonfigurasikan dengan betul untuk melaksanakan tindakan yang dikehendaki. Sebagai rujukan, berikut ialah skrip yang disediakan, disesuaikan untuk dilaksanakan setiap 10 minit:

<code class="python">#!/usr/bin/python
# -*- coding: iso-8859-15 -*-

import json
import os
import pycurl
import sys
import cStringIO

if __name__ == "__main__":

    name_server_standart = "Server created by script %d"
    json_file_standart = """{ "server" : {  "name" : "%s", "imageRef" : "%s", "flavorRef" : "%s" } }"""

    curl_auth_token = pycurl.Curl()

    gettoken = cStringIO.StringIO()

    curl_auth_token.setopt(pycurl.URL, "http://192.168.100.241:8774/v1.1")
    curl_auth_token.setopt(pycurl.POST, 1)
    curl_auth_token.setopt(
        pycurl.HTTPHEADER,
        ["X-Auth-User: cpca", "X-Auth-Key: 438ac2d9-689f-4c50-9d00-c2883cfd38d0"],
    )

    curl_auth_token.setopt(pycurl.HEADERFUNCTION, gettoken.write)
    curl_auth_token.perform()
    chg = gettoken.getvalue()

    auth_token = chg[
        chg.find("X-Auth-Token: ") + len("X-Auth-Token: ") : chg.find("X-Server-Management-Url:") - 1
    ]

    token = "X-Auth-Token: {0}".format(auth_token)
    curl_auth_token.close()

    # ----------------------------

    getter = cStringIO.StringIO()
    curl_hab_image = pycurl.Curl()
    curl_hab_image.setopt(pycurl.URL, "http://192.168.100.241:8774/v1.1/nuvemcpca/images/7")
    curl_hab_image.setopt(pycurl.HTTPGET, 1)  # Removing this line allows the script to run.
    curl_hab_image.setopt(pycurl.HTTPHEADER, [token])

    curl_hab_image.setopt(pycurl.WRITEFUNCTION, getter.write)
    # curl_list.setopt(pycurl.VERBOSE, 1)
    curl_hab_image.perform()
    curl_hab_image.close()

    getter = cStringIO.StringIO()

    curl_list = pycurl.Curl()
    curl_list.setopt(pycurl.URL, "http://192.168.100.241:8774/v1.1/nuvemcpca/servers/detail")
    curl_list.setopt(pycurl.HTTPGET, 1)  # Removing this line allows the script to run.
    curl_list.setopt(pycurl.HTTPHEADER, [token])

    curl_list.setopt(pycurl.WRITEFUNCTION, getter.write)
    # curl_list.setopt(pycurl.VERBOSE, 1)
    curl_list.perform()
    curl_list.close()

    # ----------------------------

    resp = getter.getvalue()

    con = int(resp.count("status"))

    s = json.loads(resp)

    lst = []

    for i in range(con):
        lst.append(s["servers"][i]["status"])

    for j in range(len(lst)):
        actual = lst.pop()
        print actual

        if actual != "ACTIVE" and actual != "BUILD" and actual != "REBOOT" and actual != "RESIZE":

            print "Enters the if block."

            f = file("counter", "r+w")

            num = 0
            for line in f:
                num = line

            content = int(num) + 1

            ins = str(content)

            f.seek(0)
            f.write(ins)
            f.truncate()
            f.close()

            print "Increments the counter."

            json_file = file("json_file_create_server.json", "r+w")

            name_server_final = name_server_standart % content
            path_to_image = "http://192.168.100.241:8774/v1.1/nuvemcpca/images/7"
            path_to_flavor = "http://192.168.100.241:8774/v1.1/nuvemcpca/flavors/1"

            new_json_file_content = json_file_standart % (
                name_server_final,
                path_to_image,
                path_to_flavor,
            )

            json_file.seek(0)
            json_file.write(new_json_file_content)
            json_file.truncate()
            json_file.close()

            print "Updates the JSON file."

            fil = file("json_file_create_server.json")
            siz = os.path.getsize("json_file_create_server.json")

            cont_size = "Content-Length: %d" % siz
            cont_type = "Content-Type: application/json"
            accept = "Accept: application/json"

            c_create_servers = pycurl.Curl()

            logger = cStringIO.StringIO()

            c_create_servers.setopt(pycurl.URL, "http://192.168.100.241:8774/v1.1/nuvemcpca/servers")

            c_create_servers.setopt(pycurl.HTTPHEADER, [token, cont_type, accept, cont_size])

            c_create_servers.setopt(pycurl.POST, 1)

            c_create_servers.setopt(pycurl.INFILE, fil)

            c_create_servers.setopt(pycurl.INFILESIZE, siz)

            c_create_servers.setopt(pycurl.WRITEFUNCTION, logger.write)

            print "Executes the curl command."

            c_create_servers.perform()

            print logger.getvalue()

            c_create_servers.close()</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Skrip Python Melalui Crontab untuk Memantau Status Pelayan dan Mencipta Kejadian Baharu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!