ec2-cli 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/bin/aws-tail +13 -0
- data/bin/ec2 +1 -1
- data/bin/r53 +109 -0
- data/lib/ec2/version.rb +1 -1
- data/main.go +61 -0
- data/readme.md +16 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6643c6ddd2d54d0943b2e835ad28ae9fafe26339
|
4
|
+
data.tar.gz: 40f9e928961f7f03f5a067873d5cc5345bff7a4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7eaf7ec5178727ad5fcda3591c7ba08719154bde085e7f3492061061d6cc0bb4c4a8f6cb4e91c6fcb630a5a710e789d1e3aa086d410f13751a5c96ed01747f0
|
7
|
+
data.tar.gz: ffe67a76bd09612674bc28a9c7a284c936c0e90fe81026bb35882aab421c6f427b87838dd0b70fb17a7cf41c720be1c71eaec5e43041e88d4626c7a46c66ebea
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
pkg/
|
data/bin/aws-tail
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
end_time=$(($(date +"%s") * 1000))
|
4
|
+
aws logs get-log-events --log-group-name ${1:-groupName} --log-stream-name ${2:-streamName} --end-time $end_time
|
5
|
+
|
6
|
+
while :
|
7
|
+
do
|
8
|
+
start_time=$end_time
|
9
|
+
end_time=$(($(date +"%s") * 1000))
|
10
|
+
aws logs get-log-events --log-group-name ${1:-groupName} --log-stream-name ${2:-streamName} --start-time $start_time --end-time $end_time
|
11
|
+
sleep 1
|
12
|
+
done
|
13
|
+
|
data/bin/ec2
CHANGED
data/bin/r53
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "http"
|
3
|
+
require "thor"
|
4
|
+
require "json"
|
5
|
+
require "tablelize"
|
6
|
+
|
7
|
+
module R53
|
8
|
+
class Cli < Thor
|
9
|
+
desc "version", "Show this tool version"
|
10
|
+
def version
|
11
|
+
puts "v#{VERSION}"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "zones", "Lists all hosted zones"
|
15
|
+
def zones
|
16
|
+
_get_zones
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "ls [ZONE]", "Lists all records optionally filtered by ZONE"
|
20
|
+
def ls(zone=nil)
|
21
|
+
list_records(zone)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def _get_zones
|
26
|
+
json = `aws route53 list-hosted-zones`
|
27
|
+
data = JSON.load(json)
|
28
|
+
|
29
|
+
rows = []
|
30
|
+
# rows << ["ID", "TYPE", "HOSTED ZONE", "COMMENT"]
|
31
|
+
rows << ["ID", "TYPE", "HOSTED ZONE"]
|
32
|
+
data.fetch("HostedZones", {}).each do |v|
|
33
|
+
# type = v["Config"]["PrivateZone"] === true ? "\e[38;5;246mprivate\e[0m" : "\e[38;5;221mpublic\e[0m"
|
34
|
+
type = v["Config"]["PrivateZone"] === true ? "private" : "public"
|
35
|
+
comment = v["Config"].fetch("Comment", "")
|
36
|
+
hosted_id = v["Id"].gsub("/hostedzone/", "")
|
37
|
+
# rows << [hosted_id, type, v["Name"], comment]
|
38
|
+
rows << [hosted_id, type, v["Name"]]
|
39
|
+
end
|
40
|
+
|
41
|
+
Tablelize::table rows
|
42
|
+
end
|
43
|
+
|
44
|
+
def get_zones(filter=nil)
|
45
|
+
json = `aws route53 list-hosted-zones --query 'HostedZones[].[Id,Name]'`
|
46
|
+
data = JSON.load(json)
|
47
|
+
|
48
|
+
zones = []
|
49
|
+
data.each do |id, name|
|
50
|
+
if filter and not name.match(filter)
|
51
|
+
# puts "==> Skipping #{id} :: #{name} because of #{filter}"
|
52
|
+
next
|
53
|
+
end
|
54
|
+
|
55
|
+
# puts "==> Adding #{id} :: #{name} because of #{filter}"
|
56
|
+
zones << id
|
57
|
+
end
|
58
|
+
|
59
|
+
zones
|
60
|
+
end
|
61
|
+
|
62
|
+
def list_records(zone)
|
63
|
+
rows = []
|
64
|
+
rows << ["TYPE", "TTL", "NAME", "TARGETS"]
|
65
|
+
zones = get_zones(zone)
|
66
|
+
zones.each do |id|
|
67
|
+
rows += list_zone(id)
|
68
|
+
end
|
69
|
+
|
70
|
+
# puts rows.to_json
|
71
|
+
# exit 1
|
72
|
+
|
73
|
+
Tablelize::table rows
|
74
|
+
end
|
75
|
+
|
76
|
+
def list_zone(zone_id)
|
77
|
+
json = `aws route53 list-resource-record-sets --hosted-zone-id #{zone_id}`
|
78
|
+
data = JSON.load(json)
|
79
|
+
|
80
|
+
rows = []
|
81
|
+
data.fetch("ResourceRecordSets", {}).each do |v|
|
82
|
+
if v["ResourceRecords"]
|
83
|
+
first_added = false
|
84
|
+
v["ResourceRecords"].each do |vv|
|
85
|
+
target = vv["Value"]
|
86
|
+
# rows << [".", ".", ".", target]
|
87
|
+
if first_added
|
88
|
+
rows << ["-", "-", "-", target]
|
89
|
+
else
|
90
|
+
rows << [v["Type"], v["Type"], v["Name"], target]
|
91
|
+
first_added = true
|
92
|
+
end
|
93
|
+
end
|
94
|
+
elsif v["AliasTarget"]
|
95
|
+
target = v["AliasTarget"]["DNSName"]
|
96
|
+
rows << [v["Type"], "", v["Name"], target]
|
97
|
+
else
|
98
|
+
p v
|
99
|
+
exit 1
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
rows
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
R53::Cli.start ARGV
|
data/lib/ec2/version.rb
CHANGED
data/main.go
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
package main
|
2
|
+
|
3
|
+
import (
|
4
|
+
"fmt"
|
5
|
+
"time"
|
6
|
+
|
7
|
+
"github.com/aws/aws-sdk-go/aws/session"
|
8
|
+
"github.com/aws/aws-sdk-go/service/ec2"
|
9
|
+
)
|
10
|
+
|
11
|
+
func main() {
|
12
|
+
sess := session.Must(session.NewSessionWithOptions(session.Options{
|
13
|
+
SharedConfigState: session.SharedConfigEnable,
|
14
|
+
}))
|
15
|
+
|
16
|
+
ec2Svc := ec2.New(sess)
|
17
|
+
res, err := ec2Svc.DescribeInstances(nil)
|
18
|
+
if err != nil {
|
19
|
+
fmt.Println(err)
|
20
|
+
}
|
21
|
+
|
22
|
+
format := "%-14s %-14s %-19s %-20s %-13s %s\n"
|
23
|
+
fmt.Printf(format, "PRIVATE IP", "PUBLIC IP", "INSTANCE ID", "LAUNCH TIME", "STATE", "NAME")
|
24
|
+
|
25
|
+
for i := range(res.Reservations) {
|
26
|
+
inst := res.Reservations[i].Instances[0]
|
27
|
+
|
28
|
+
publicIp := ""
|
29
|
+
if inst.PublicIpAddress != nil {
|
30
|
+
publicIp = *inst.PublicIpAddress
|
31
|
+
}
|
32
|
+
|
33
|
+
privateIp := ""
|
34
|
+
if inst.PrivateIpAddress != nil {
|
35
|
+
privateIp = *inst.PrivateIpAddress
|
36
|
+
}
|
37
|
+
|
38
|
+
name := ""
|
39
|
+
for j := range(inst.Tags) {
|
40
|
+
if *inst.Tags[j].Key == "Name" {
|
41
|
+
name = *inst.Tags[j].Value
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
// launchTime := inst.LaunchTime.Format(time.Stamp)
|
46
|
+
// launchTime := inst.LaunchTime.Format("2006-01-02 08:28:32.000Z")
|
47
|
+
launchTime := inst.LaunchTime.Format(time.RFC3339)
|
48
|
+
stateName := *inst.State.Name
|
49
|
+
instanceId := *inst.InstanceId
|
50
|
+
|
51
|
+
// if stateName == "terminated" && name == "" {
|
52
|
+
// continue
|
53
|
+
// }
|
54
|
+
|
55
|
+
if name == "" {
|
56
|
+
continue
|
57
|
+
}
|
58
|
+
|
59
|
+
fmt.Printf(format, privateIp, publicIp, instanceId, launchTime, stateName, name)
|
60
|
+
}
|
61
|
+
}
|
data/readme.md
ADDED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ec2-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ptdorf
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -42,16 +42,23 @@ description: List your Ec2 instances.
|
|
42
42
|
email:
|
43
43
|
- ptdorf@gmail.com
|
44
44
|
executables:
|
45
|
+
- aws-tail
|
45
46
|
- ec2
|
47
|
+
- r53
|
46
48
|
extensions: []
|
47
49
|
extra_rdoc_files: []
|
48
50
|
files:
|
51
|
+
- ".gitignore"
|
49
52
|
- Gemfile
|
50
53
|
- Gemfile.lock
|
51
54
|
- Rakefile
|
55
|
+
- bin/aws-tail
|
52
56
|
- bin/ec2
|
57
|
+
- bin/r53
|
53
58
|
- ec2-cli.gemspec
|
54
59
|
- lib/ec2/version.rb
|
60
|
+
- main.go
|
61
|
+
- readme.md
|
55
62
|
homepage: https://github.com/ptdorf/ec2-cli
|
56
63
|
licenses:
|
57
64
|
- MIT
|