diff --git a/5ed8bb34-a0d2-44e6-91c4-9505f99306c1.devvv b/.scalingTrash/5ed8bb34-a0d2-44e6-91c4-9505f99306c1.devvv similarity index 100% rename from 5ed8bb34-a0d2-44e6-91c4-9505f99306c1.devvv rename to .scalingTrash/5ed8bb34-a0d2-44e6-91c4-9505f99306c1.devvv diff --git a/.scalingTrash/backupshit b/.scalingTrash/backupshit new file mode 100644 index 0000000..83746ca --- /dev/null +++ b/.scalingTrash/backupshit @@ -0,0 +1,58 @@ + log_file = "/var/log/yankee-downloader.log" + script_path = "/yankee-gnome-fire-consumer/consumer.py" + + return "@@@" + + + + + +import datetime +import subprocess +import socket +import os + +def getMinutes(): + + if current_time is None: + current_time = datetime.datetime.now() + + new_minute = (current_time.minute + 5) % 60 # The % operator performs the wrap-around + new_hour = current_time.hour + (current_time.minute + 5) // 60 # Integer division for hour increment + + # Create a new datetime object with the updated minute and handle hour rollover + try: + new_time = current_time.replace(minute=new_minute, hour=new_hour) + except ValueError: # handles cases where the hour rollover causes day change + new_time = current_time + datetime.timedelta(minutes=5) + + return new_time + + + +def generate_cron_entry(): + + """Generates a cron entry that runs 5 minutes from now and logs server info.""" + + now = datetime.datetime.now() + five_minutes_from_now = now + datetime.timedelta(minutes=5) + + minute = five_minutes_from_now.minute + hour = five_minutes_from_now.hour + day = five_minutes_from_now.day + month = five_minutes_from_now.month + weekday = "*" # Weekday is left as * to run every day of the week. If you need specific weekdays, change this. + + # Get server IP and hostname + try: + server_ip = socket.gethostbyname(socket.gethostname()) + server_hostname = socket.gethostname() + except socket.gaierror: + server_ip = "Unknown IP" + server_hostname = "Unknown Hostname" + + + log_file = "/var/log/yankee-downloader.log" + script_path = "/yankee-gnome-fire-consumer/consumer.py" + +print("getMinutes / ",getMinutes()) diff --git a/compose (copy 1).template b/.scalingTrash/compose (copy 1).template similarity index 100% rename from compose (copy 1).template rename to .scalingTrash/compose (copy 1).template diff --git a/compose.yaml b/.scalingTrash/compose.yaml similarity index 100% rename from compose.yaml rename to .scalingTrash/compose.yaml diff --git a/.scalingTrash/cronExtras2.bash b/.scalingTrash/cronExtras2.bash new file mode 100644 index 0000000..12266e3 --- /dev/null +++ b/.scalingTrash/cronExtras2.bash @@ -0,0 +1,38 @@ + +function recycle{ +start_hour=$(date +%H) + +if (( current_minute + 5 >= 60 )); then + + start_hour=$(( (start_hour + 1) % 24 )) # handle wrap-around at 24 hours + +fi + +start_day=$(date +%d) +start_month=$(date +%m) +start_weekday=$(date +%w) + + +# Get external IP and hostname (using a reliable method) + +external_ip=$(curl -s ifconfig.me) # Or use dig +short myip.opendns.com + +hostname=$(hostname -f) + + +# Construct the cron command with the calculated time and logging +cron_command="$start_minute $start_hour $start_day $start_month $start_weekday python3 /yankee-gnome-fire-consumer/consumer.py >> /var/log/yankee-downloader.log 2>&1" + +# Add IP and hostname to log message *before* the python script runs +log_message="Starting consumer at $(date) from $hostname ($external_ip): " + +# Add the log message to the log file, then run the python script and redirect stderr +# This is done using a subshell to ensure the log message comes before the python script's output. +cron_command_with_log="echo \"$log_message\" >> /var/log/yankee-downloader.log 2>&1; $cron_command" + + +# Add the cron job (using crontab -l to get existing entries, adding the new one, and then setting the crontab) +(crontab -l; echo "$cron_command_with_log") | crontab - + + +echo "Cron job added: $cron_command_with_log" \ No newline at end of file diff --git a/touch b/.scalingTrash/touch similarity index 100% rename from touch rename to .scalingTrash/touch diff --git a/composeScaling.bash b/compose.bash similarity index 100% rename from composeScaling.bash rename to compose.bash diff --git a/cronfile b/cronfile index 8b371dc..7d28491 100644 --- a/cronfile +++ b/cronfile @@ -1,5 +1,6 @@ SHELL=/bin/bash 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 diff --git a/crontabX b/crontabX new file mode 100644 index 0000000..b720184 --- /dev/null +++ b/crontabX @@ -0,0 +1,8 @@ +SHELL=/bin/bash + +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +57 11 * * * python3 /yankee-gnome-fire-consumer/consumer.py >> /tmp/root/Downloads/.logs/yankee-node-96.255.165.82-veneno.log 2>&1 + +* * * * * /tmp/ping2.bash >> /var/log/cron.log 2>&1 + diff --git a/smart-cron-builder.bash b/smart-cron-builder.bash new file mode 100755 index 0000000..2c7761f --- /dev/null +++ b/smart-cron-builder.bash @@ -0,0 +1,5 @@ +reset + +clear + +python3 smart-cron-builder.py \ No newline at end of file diff --git a/smart-cron-builder.py b/smart-cron-builder.py new file mode 100755 index 0000000..f0c8126 --- /dev/null +++ b/smart-cron-builder.py @@ -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() \ No newline at end of file