Initial commit: CloudOps infrastructure platform
This commit is contained in:
38
platform/modules/commands.py
Normal file
38
platform/modules/commands.py
Normal file
@@ -0,0 +1,38 @@
|
||||
import subprocess
|
||||
from config import RUNNING_ON_MAIN_SERVER, MAIN_SERVER_IP
|
||||
|
||||
def run_command(command):
|
||||
"""Run command on main server (directly or via SSH)"""
|
||||
if RUNNING_ON_MAIN_SERVER:
|
||||
try:
|
||||
result = subprocess.run(command, shell=True, capture_output=True, text=True, timeout=30)
|
||||
return result.stdout, result.stderr
|
||||
except subprocess.TimeoutExpired:
|
||||
return "", "Command timeout"
|
||||
except Exception as e:
|
||||
return "", str(e)
|
||||
else:
|
||||
ssh_cmd = [
|
||||
"ssh",
|
||||
"-o", "StrictHostKeyChecking=no",
|
||||
"-o", "ConnectTimeout=10",
|
||||
"-o", "BatchMode=yes",
|
||||
f"root@{MAIN_SERVER_IP}",
|
||||
command
|
||||
]
|
||||
try:
|
||||
result = subprocess.run(ssh_cmd, capture_output=True, text=True, timeout=30)
|
||||
return result.stdout, result.stderr
|
||||
except subprocess.TimeoutExpired:
|
||||
return "", "Connection timeout"
|
||||
except Exception as e:
|
||||
return "", str(e)
|
||||
|
||||
def run_ssh_to_vm(command):
|
||||
"""Run command on VM via reverse tunnel"""
|
||||
from config import VM_PASSWORD
|
||||
import os
|
||||
|
||||
cmd = f"sshpass -p '{VM_PASSWORD}' ssh -p 2223 -o StrictHostKeyChecking=no -o ConnectTimeout=5 root@localhost '{command}'"
|
||||
result = os.popen(cmd).read()
|
||||
return result
|
||||
Reference in New Issue
Block a user