Hatena::ブログ(Diary)

lambda {|diary| lambda { diary.succ! } }.call(hatena) このページをアンテナに追加 RSSフィード

引っ越しました
 | 

2012-05-03

[] Security GroupGraphvizで可視化する

とりあえず非VPCだけ。

ec2-describe-group | awk -F'\t' 'BEGIN{print "digraph G {"} /^GROUP/{vpc = $6 ? 1 : 0} $9~/CIDR/{src=$10} $9~/USER/{gsub(/NAME /,"",$11); src=$11} !vpc && /^PERMISSION/{dst=$3; pair=sprintf("\"%s\" -> \"%s\"",src,dst); label=$5":"$6":"$7; if (grants[pair]) {grants[pair]=grants[pair]" "label} else {grants[pair]=label}} END{for (pair in grants) {label=grants[pair]; printf("\t%s [label = \"%s\"]\n",pair,label)} print "}"}' | dot -Tpng > foo.png

f:id:winebarrel:20120503171946p:image


Awkスクリプトはこんな感じ。


BEGIN {
  print "digraph G {"
}

/^GROUP/ {
  vpc = $6 ? 1 : 0
} 

$9 ~ /CIDR/ {
  src = $10
}

$9 ~ /USER/ {
  gsub(/NAME /, "", $11)
  src = $11
}

!vpc && /^PERMISSION/ {
  dst = $3
  pair = sprintf("\"%s\" -> \"%s\"", src, dst)
  label = $5":"$6":"$7

  if (grants[pair]) {
    grants[pair] = grants[pair]" "label
  } else {
    grants[pair] = label
  }
}

END{
  for (pair in grants) {
    label = grants[pair]
    printf("\t%s [label = \"%s\"]\n", pair, label)
  }

  print "}"
}

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元
 |