Problem: Users may encounter difficulties when attempting to execute Python scripts using the Linux crontab, particularly when aiming to run them every 10 minutes. Various solutions, such as modifying the anacron file or utilizing crontab -e, may prove ineffective, leaving users questioning the need for specific service restarts or the file that should be edited for configuration.
Answer:
To resolve this issue, refer to the following guide:
*/10 * * * * /usr/bin/python /home/souza/Documents/Listener/listener.py
File Configuration:
The file that requires editing is the crontab file, which can be accessed and modified using the crontab -e command.
Script:
Your Python script must be correctly configured to execute the desired actions. For reference, here is the provided script, adapted to execute every 10 minutes:
<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>
The above is the detailed content of How to Execute Python Scripts Via Crontab to Monitor Server Status and Create New Instances?. For more information, please follow other related articles on the PHP Chinese website!