test / TomWalker-ScriptAI.py
ablamahfadi's picture
Upload folder using huggingface_hub
09afd55
raw
history blame contribute delete
No virus
5.42 kB
import boto3
import paramiko
import time
#ssh -i "my_kayname_01.pem" root@ec2-54-90-175-47.compute-1.amazonaws.com
# Replace these values with your actual values
access_key = "AKIAYIBNUHKTYGACURPX"
secret_key = "q8uXKrUQZx50zyIrPCUrnH/zvXNqv6QaR20O3Gaz"
region = "us-east-1"
image_id = "ami-088f3457fef51ee50"
instance_type = "r5.large" # Instance type with 32GB RAM
key_name = "my_kayname_01" # Replace with your key pair name
security_group_ids = ["sg-0452fd39f8266308d"]
def create_instance():
global access_key
global secret_key
global region
global image_id
global key_name
global security_group_ids
# Create a Boto3 EC2 client
ec2 = boto3.client("ec2", aws_access_key_id=access_key, aws_secret_access_key=secret_key, region_name=region)
# Launch an EC2 instance
response = ec2.run_instances(
ImageId=image_id,
InstanceType=instance_type,
KeyName=key_name,
MinCount=1,
MaxCount=1,
SecurityGroupIds=security_group_ids # Set the security group IDs here
)
instance = response["Instances"][0]
instance_id = response["Instances"][0]["InstanceId"]
print("Instance created:", instance_id)
response = ec2.describe_instances(InstanceIds=[instance_id])
# Extract the public IP address from the response
instance = response["Reservations"][0]["Instances"][0]
public_ip = instance.get("PublicIpAddress")
print(f"Instance created with IP: {public_ip}")
while True:
# Describe the status of the EC2 instance
response = ec2.describe_instance_status(InstanceIds=[instance_id])
# Extract system status and instance status details if available
if "InstanceStatuses" in response and len(response["InstanceStatuses"]) > 0:
instance_status = response["InstanceStatuses"][0]
system_status = response["InstanceStatuses"][0].get("SystemStatus", {})
instance_status_value = instance_status['InstanceStatus']['Status']
system_status_value = system_status.get('Status', 'N/A')
print(f"Instance Status: {instance_status_value}")
print(f"System Status: {system_status_value}")
if instance_status_value == "ok" and system_status_value == "ok":
break
time.sleep(10)
else:
print("Status checks not available for the instance.")
return instance_id, public_ip
def delete_instance(instance_id):
global access_key
global secret_key
global region
# Create a Boto3 EC2 client
ec2 = boto3.client("ec2", aws_access_key_id=access_key, aws_secret_access_key=secret_key, region_name=region)
# Terminate the EC2 instance
response = ec2.terminate_instances(InstanceIds=[instance_id])
# Print the response
print("Instance termination response:", response)
def ssh_connect(hostname):
#paramiko.util.log_to_file('paramiko.log')
#paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)
# Replace these values with your actual ones
port = 22
username = "ec2-user"
#username = "ubuntu"
#username = "root"
key_filename = "my_kayname_01.pem" # Path to your private key file
# Create an SSH client instance
ssh_client = paramiko.SSHClient()
# Automatically add the server's host key (this is insecure and not recommended for production)
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
# Connect to the EC2 instance
ssh_client.connect(hostname, port, username, key_filename=key_filename)
# Execute a command on the remote instance (e.g., list directory contents)
stdin, stdout, stderr = ssh_client.exec_command("ls -l")
# Print the output of the command
print(stdout.read().decode("utf-8"))
# Install Jupyter Notebook using pip
install_command = "pip install jupyter"
stdin, stdout, stderr = ssh_client.exec_command(install_command)
print(stdout.read().decode("utf-8"))
# Start the Jupyter Notebook server (you can specify your desired options)
jupyter_command = "jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser"
ssh_client.exec_command(jupyter_command)
print("Jupyter Notebook installed and server started.")
# Start the Jupyter Notebook server (you can specify your desired options)
jupyter_command = "jupyter server list"
while True:
stdin, stdout, stderr = ssh_client.exec_command(jupyter_command)
stdout_value = stdout.read().decode("utf-8")
if stdout_value.find("http:") != -1:
break
time.sleep(3)
print(stdout_value)
p = stdout_value.find("http:")
if p != -1:
temp = stdout_value[p:]
p = temp.find("?token")
if p != -1:
temp = temp[p + 7:]
p = temp.find(" :: ")
token_value = temp[: p]
print("token=", token_value)
# Close the SSH connection
ssh_client.close()
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
instance_id, public_ip = create_instance()
ssh_connect(public_ip)
#ssh_connect("44.210.108.226")
#delete_instance(instance_id)