123456789101112131415161718192021222324252627282930313233343536373839 |
- import logging
- from typing import List
- from alibabacloud_ecs20140526.client import Client as Ecs20140526Client
- from alibabacloud_ecs20140526 import models as ecs_20140526_models
- from alibabacloud_tea_util import models as util_models
- from alibabacloud_tea_util.client import Client as UtilClient
- import config
- def send_file_to_ecs(client: Ecs20140526Client, instance_id_list: List[str], target_dir: str, name: str, content: str) -> None:
- for instance_id in instance_id_list:
- describe_instance_attribute_request = ecs_20140526_models.DescribeInstanceAttributeRequest(
- instance_id=instance_id
- )
- runtime = util_models.RuntimeOptions()
- response = client.describe_instance_attribute_with_options(describe_instance_attribute_request, runtime)
- vpc_attributes = response.body.vpc_attributes
- vpc_id = vpc_attributes.vpc_id
- inner_ip_address = response.body.inner_ip_address
- ssh_client = UtilClient(vpc_id, inner_ip_address, 'root', config.ALIBABA_CLOUD_ACCESS_KEY_ID, config.ALIBABA_CLOUD_ACCESS_KEY_SECRET)
- ssh_client.upload_file(target_dir, name, content)
- logging.info(f"File {name} sent to instance {instance_id}")
- def run_command(client: Ecs20140526Client, instance_ids: List[str], command: str) -> None:
- for instance_id in instance_ids:
- describe_instance_attribute_request = ecs_20140526_models.DescribeInstanceAttributeRequest(
- instance_id=instance_id
- )
- runtime = util_models.RuntimeOptions()
- response = client.describe_instance_attribute_with_options(describe_instance_attribute_request, runtime)
- vpc_attributes = response.body.vpc_attributes
- vpc_id = vpc_attributes.vpc_id
- inner_ip_address = response.body.inner_ip_address
- ssh_client = UtilClient(vpc_id, inner_ip_address, 'root', config.ALIBABA_CLOUD_ACCESS_KEY_ID, config.ALIBABA_CLOUD_ACCESS_KEY_SECRET)
- ssh_client.run_command(command)
- logging.info(f"Command '{command}' executed on instance {instance_id}")
|