awk

ルーティングテーブルをMarkdown形式で表示するスクリプトを作成

  • POST
ルーティングテーブルをMarkdown形式で表示するスクリプトを作成 ipコマンドのrouteオプション表示されるルーティングテーブルをMarkdown形式で表示するスクリプトを作成したので、下記に記載する。 ファイル内容 シェルスクリプトとawkの2ファイルで構成される。 make_markdown_route.sh #!/bin/bash # # ipコマンドで表示したルーティングテーブル情報をMarkdown形式に変換して表示するスクリプト #--------------------------------------------------------------------------------------- current_directory_path="$( dirname "$(readlink -f $0)" )" ip route show table all | awk -f "${current_directory_path}/make_markdown_route.awk" make_markdown_route.awk #!/usr/bin/awk # # ipコマンドで表示したルーティングテーブル情報をMarkdown形式に変換して表示するスクリプト # # Note: # * Destination : 宛先アドレス # * Scope : 送信先 # - scope link: 直接unicast/broadcastにて通信する経路。自身が属するネットワーク等が該当。 # - scope host: 自分自身への経路 # - scope global: (他ネットワークへの)ゲートウェイを経由したunicast通信による経路。 # * Protocol : # - proto kernel:カーネルが自動生成した経路。 #----------------------------------------------------------------------- #----------------------------------------------------------------------- # 事前処理 #----------------------------------------------------------------------- BEGIN { # ヘッダー部分の出力 printf("| %-17s | ", "Destination"); printf("%-15s | ", "Gateway"); printf("%-15s | ", "Source"); printf("%-8s | ", "Protocol"); printf("%-8s | ", "Scope"); printf("%-6s | ", "Metric"); printf("%-4s | ", "Dev"); printf("%-9s | ", "Table"); printf("\n"); printf("| %-17s | ", "---"); printf("%-15s | ", "---"); printf("%-15s | ", "---"); printf("%-8s | ", "---"); printf("%-8s | ", "---"); printf("%-6s | ", "---"); printf("%-4s | ", "---"); printf("%-9s | ", "---"); printf("\n"); } #----------------------------------------------------------------------- # 配下を初期化する関数 #----------------------------------------------------------------------- function initialize_array(array){ array["route"] = ""; array["dest"] = ""; array["mask"] = ""; array["via"] = ""; array["dev"] = ""; array["proto"] = ""; array["scope"] = ""; array["src"] = ""; array["metric"] = ""; return 0; } #----------------------------------------------------------------------- # 配列の内容を出力 #----------------------------------------------------------------------- function print_array(array){ printf("| %-17s | ", array["dest"]); printf("%-15s | ", array["via"]); printf("%-15s | ", array["src"]); printf("%-8s | ", array["proto"]); printf("%-8s | ", array["scope"]); printf("%-6s | ", array["metric"]); printf("%-4s | ", array["dev"]); printf("%-9s | ", array["table"]); printf("\n"); return 0; } #----------------------------------------------------------------------- # メイン処理 #----------------------------------------------------------------------- { initialize_array(array) begin_number=2 # テーブル情報が含まれる場合 = 項目数が偶数の場合 # Exsample: # broadcast 127.