From 517cc1e422ff7ac9f17f3052f59ea2c6f340d0d0 Mon Sep 17 00:00:00 2001 From: Ryan Campbell Date: Thu, 13 Oct 2022 13:54:49 -0300 Subject: [PATCH] Adding argument to allow forcing use of EC2 private IP --- ec2instanceconnectcli/EC2InstanceConnectCLI.py | 6 +++++- ec2instanceconnectcli/input_parser.py | 3 ++- ec2instanceconnectcli/mops.py | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ec2instanceconnectcli/EC2InstanceConnectCLI.py b/ec2instanceconnectcli/EC2InstanceConnectCLI.py index 7d7d9f3..907038d 100644 --- a/ec2instanceconnectcli/EC2InstanceConnectCLI.py +++ b/ec2instanceconnectcli/EC2InstanceConnectCLI.py @@ -66,7 +66,11 @@ def call_ec2(self): bundle['zone'] = instance_info.availability_zone #If host_info is not available, fallback to using public ipaddress and then private ipaddress. if not bundle['host_info']: - bundle['host_info'] = instance_info.public_ip if instance_info.public_ip else instance_info.private_ip + if bundle['private']: + bundle['host_info'] = instance_info.private_ip + else: + bundle['host_info'] = instance_info.public_ip if instance_info.public_ip else instance_info.private_ip + self.logger.debug('Successfully got instance information from EC2 API for {0}'.format(bundle['instance_id'])) def handle_keys(self): diff --git a/ec2instanceconnectcli/input_parser.py b/ec2instanceconnectcli/input_parser.py index 705d214..3f58817 100644 --- a/ec2instanceconnectcli/input_parser.py +++ b/ec2instanceconnectcli/input_parser.py @@ -64,7 +64,8 @@ def parseargs(args, mode='ssh'): 'profile': args[0].profile, 'instance_id': args[0].instance_id, 'region': args[0].region, - 'zone': args[0].zone + 'zone': args[0].zone, + 'private': args[0].private } ] # We do this as an array to support future commands that may need multiple instances (eg, scp) diff --git a/ec2instanceconnectcli/mops.py b/ec2instanceconnectcli/mops.py index 4f8cb4e..ffd17bd 100644 --- a/ec2instanceconnectcli/mops.py +++ b/ec2instanceconnectcli/mops.py @@ -57,6 +57,7 @@ def main(program, mode): parser.add_argument('-u', '--profile', action='store', help='AWS Config Profile', type=str, default=DEFAULT_PROFILE, metavar='') parser.add_argument('-t', '--instance_id', action='store', help='EC2 Instance ID. Required if target is hostname', type=str, default=DEFAULT_INSTANCE, metavar='') parser.add_argument('-d', '--debug', action="store_true", help='Turn on debug logging') + parser.add_argument('-p', '--private', action="store_true", help='Force usage of private IP') args = parser.parse_known_args()