import datetime import subprocess import socket import os import requests def buildLogDirectory(): return "/tmp/root/Downloads/.logs/" def buildLogFileName(): logFileDir = buildLogDirectory() try: response = requests.get("https://api.ipify.org?format=json") # Or another similar service response.raise_for_status() # Check for HTTP errors (4xx or 5xx) ip_data = response.json() server_ip = ip_data['ip'] print("server_ip / ",ip_data['ip']) server_hostname = socket.gethostname() print("server_hostname / ",server_hostname) node_id= logFileDir + "yankee-node-" + server_ip + "-" + server_hostname + ".log" return node_id except socket.gaierror: return "!!error!!" def buildCronExecuteTime(): current_time = datetime.datetime.now() new_minute = (current_time.minute + 2) % 60 # The % operator performs the wrap-around print("new_minute / ",new_minute) new_hour = current_time.hour + (current_time.minute + 5) // 60 # Integer division for hour increment print("new_hour / ",new_hour) cron = str(new_minute) + " " + str(new_hour) + " " + "* * *" return cron def buildCronSituation(): return buildCronExecuteTime() +" python3 /yankee-gnome-fire-consumer/consumer.py >> " + buildLogFileName() + " 2>&1" #### cronTiming = buildCronExecuteTime() print("cronTiming / ",cronTiming) ## logger = buildLogFileName(); print("logger / ",logger) ## cronFile = buildCronSituation(); print() print(cronFile) print() def createLogDir(): log_dir = buildLogDirectory() print("creating log dir",log_dir) try: if not os.path.exists(log_dir): # Check if the directory exists os.makedirs(log_dir) # Create the directory (and any necessary parent directories) print(f"Directory '{log_dir}' created successfully.") else: print(f"Directory '{log_dir}' already exists.") return True # Directory exists or was created successfully except OSError as e: print(f"Error creating directory '{log_dir}': {e}") return False ## def writeCrontabSituation(): file_path ="crontabX" crontab_text = """ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin * * * * * python3 /yankee-gnome-fire-consumer/consumer.py >> /var/log/yankee-downloader.log 2>&1 * * * * * /tmp/ping2.bash >> /var/log/cron.log 2>&1""" try: # Check if the file exists and delete if it does if os.path.exists(file_path): os.remove(file_path) with open(file_path, "w") as f: sep="\n" f.write("SHELL=/bin/bash") f.write(sep) f.write(sep) f.write("PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin") f.write(sep) f.write(sep) f.write(buildCronSituation()) f.write(sep) f.write(sep) f.write("* * * * * /tmp/ping2.bash >> /var/log/cron.log 2>&1") f.write(sep) f.write(sep) print(f"Crontab written to '{file_path}' successfully.") return True except OSError as e: print(f"Error writing to file '{file_path}': {e}") return False #################### createLogDir() writeCrontabSituation()