automated terminal push
This commit is contained in:
58
.scalingTrash/backupshit
Normal file
58
.scalingTrash/backupshit
Normal file
@@ -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())
|
||||||
38
.scalingTrash/cronExtras2.bash
Normal file
38
.scalingTrash/cronExtras2.bash
Normal file
@@ -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"
|
||||||
1
cronfile
1
cronfile
@@ -1,5 +1,6 @@
|
|||||||
SHELL=/bin/bash
|
SHELL=/bin/bash
|
||||||
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
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
|
* * * * * python3 /yankee-gnome-fire-consumer/consumer.py >> /var/log/yankee-downloader.log 2>&1
|
||||||
|
|
||||||
* * * * * /tmp/ping2.bash >> /var/log/cron.log 2>&1
|
* * * * * /tmp/ping2.bash >> /var/log/cron.log 2>&1
|
||||||
|
|||||||
8
crontabX
Normal file
8
crontabX
Normal file
@@ -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
|
||||||
|
|
||||||
5
smart-cron-builder.bash
Executable file
5
smart-cron-builder.bash
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
reset
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
python3 smart-cron-builder.py
|
||||||
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