使用bash中的ec2命令行工具获取ec2实例的公共DNS名称

时间:2014-04-02 14:46:18

标签: amazon-web-services amazon-ec2 dns

我有一个ec2实例的名称,并希望对它进行ssh。如何使用ec2实例名称找出ec2实例的“公共DNS”。

我想用bash来做。

5 个答案:

答案 0 :(得分:13)

aws ec2 describe-instances --instance-ids i-12abc34 --query 'Reservations[].Instances[].PublicDnsName'

其中i-12abc34是您的实例ID

答案 1 :(得分:7)

使用EC2 API工具:

# Region is only needed if not in us-east-1
$ ec2-describe-instances --region <region> <instance id> 

使用统一的AWS CLI tool

$ aws --region <region> ec2 describe-instances --instance-ids <instance id≥

我更喜欢统一工具,因为它提供了全面而一致的数据。

答案 2 :(得分:2)

如果按照本答案的说明安装cloud-utils工具,那就更直接了 前进。

https://stackoverflow.com/a/10600619/28672

ec2-metadata --public-ipv4
> public-ipv4: 54.200.4.52

答案 3 :(得分:1)

这取决于你的意思&#34;弄清楚&#34;。如果你的意思是搞清楚自己,你就不能。公共DNS名称与ec2实例名称无关。公共DNS名称由公共IP地址,区域/可用区域,服务类型,aws域名等组成。例如,ec2-xx-xxx-x-xx.us-west-2.compute.amazonaws.com 。由于每次停止和启动实例时都会更改公共IP地址,除非使用弹性IP地址,否则将更改公用DNS名称。

如果您的意思是使用AWS API或CLI工具搞清楚,您可以。使用EC2 CLI,您应该使用命令 ec2-describe-instances instance_id 。同样,实例必须运行,并且公共DNS在停止/启动后确实发生了变化。

答案 4 :(得分:1)

您可以查询instance metadata服务。

使用卷曲:

export class AppComponent  {
  PepPartner : "";
  PepBlacklisted : "";
  Blacklist : "";
  public formGroup: FormGroup;
  constructor(private fb: FormBuilder) {}

   screenofAML() {
    let self = this;
    this.formGroup = this.fb.group({

       PepPartner :['',Validators.required],
      PepBlacklisted :['',Validators.required],
      Blacklist :['',Validators.required],

    });
  }


  validateForm() {
    if (this.formGroup.invalid) {
      this.formGroup.get('PepPartner').markAsTouched();
      this.formGroup.get('PepBlacklisted').markAsTouched();
      this.formGroup.get('Blacklist').markAsTouched();
           return;
    }
    else {
      const dataObj = {
       PepPartner:this.formGroup.get('PepPartner').value,
        PepBlacklisted:this.formGroup.get('PepBlacklisted').value,
        Blacklist :this.formGroup.get('Blacklist').value,

      }

    }

}

 onResetClick() {
    this.PepPartner = "";
   this. PepBlacklisted = "";
   this.Blacklist ="";
  }

}



<div class ="space">
<mat-form-field>
     <mat-label>Is this partner a PEP?</mat-label>
     <mat-error *ngIf="formGroup.get('PepPartner').hasError('required')">
        PEP Partner  is required
      </mat-error>
  <mat-select disableRipple  [(ngModel)]="PepPartner" formControlName="PepPartner">
      <mat-option ></mat-option>
    <mat-option value="1">Yes</mat-option>
    <mat-option value="2">No</mat-option>
  </mat-select>
</mat-form-field>

<mat-form-field>
  <mat-label>Does this partner blacklisted</mat-label>
  <mat-error *ngIf="formGroup.get('PepBlacklisted').hasError('required')">
      Partner blacklisted is required
    </mat-error>
  <mat-select disableRipple  [(ngModel)]="PepBlacklisted" formControlName="PepBlacklisted" >
    <mat-option ></mat-option>
    <mat-option value="1">Yes</mat-option>
    <mat-option value="2">No</mat-option>
  </mat-select>
</mat-form-field>

<mat-form-field >
       <mat-error *ngIf="formGroup.get('Blacklist').hasError('required')">
      Blacklisted is required
      </mat-error>

    <input matInput  placeholder="Blacklist(s)"  [(ngModel)]="Blacklist" formControlName="Blacklist" >

  </mat-form-field>

  <div class="button-position">
      <div class="text-right pr-0 pb-2">
        <div class="btn-group">
          &nbsp;&nbsp;&nbsp;
          <button type="button" id="button1" mat-raised-button class="text-uppercase app-btn app-btn-

  primary-border app-color-primary"
         (click)="validateForm()" >Save</button>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <button type="button" id="button2" mat-raised-button class="text-uppercase app-btn app-btn-

  primary-border app-color-primary"
            (click)="onResetClick()">Clear</button>
        </div>
      </div>
    </div>

使用wget:

curl -s http://169.254.169.254/latest/meta-data/public-hostname

如果勇敢,actual bash

wget -qO - http://169.254.169.254/latest/meta-data/public-hostname

(最后一个为我打开了连接,所以exec 3<> /dev/tcp/169.254.169.254/80 echo -e "GET /latest/meta-data/public-hostname HTTP/1.0\r\n\r\n" >&3 cat <&3 被卡住了。标头也出现在输出中)

(这是来自实例本身,需要访问实例-它不是与实例名称相关的版本。这里有足够的答案)