automated terminal push
This commit is contained in:
149
smart-cron-builder.py
Executable file
149
smart-cron-builder.py
Executable file
@@ -0,0 +1,149 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user