Skip to content

Linux

スクリプト中で実行しているコマンドを表示する

普通にシェルスクリプトを書くと実行結果のみが表示され、『実行しているコマンドそのもの』は表示されません。「試験結果のエビデンスとして、結果と共にコマンドも残したい」「スクリプトをデバッグしたい」といった場合は実行結果だけでなく、実行したコマンドも表示されると便利です。今回は「スクリプト中で実行しているコマンドも表示する方法」をメモします。

RADIUS をテストするには

RADIUS サーバの構築後にテストを実施する際、「実際に RADIUS クライアントとして設定したネットワーク機器やサーバへ SSH ログインし、RADIUS サーバで上手く認証されるか?を確認する」ことは、もちろん可能です。しかし、他にも(実際のログイン処理では無く)『テストコマンドで RADIUS 認証の挙動を確認する』方法があります。まずはテストコマンドで動作を確認し、上手くいったら実際のログインテストを試す… というのが最もスマートだと思います。メジャーなところでは以下のような方法があります。

  1. FreeRADIUS 付属の radtest を使う
  2. Cisco IOS の test aaa を使う

今回はこれらの RADIUS のテスト方法について記載してみます。RADIUS サーバには MikroTik の RouterOS を使いました。

sudo でリダイレクトするには

sudo の実行結果をリダイレクトしようとするとエラーになります。

1
2
$ sudo echo "TEST" > /root/test.txt
-bash: /root/test.txt: Permission denied

このような場合は sudo sh -c の引数として一連のコマンドを実行します。

1
$ sudo /bin/sh -c 'echo "TEST" > /root/test.txt'

参考までに、「-c」オプションは man によると以下のように書かれています。

-c Read commands from the command_string operand instead of from the standard input. Special parameter 0 will be set from the command_name operand and the positional parameters ($1, $2, etc.) set from the remaining argument operands.

CoreLinux 6.3 を VIRL に登録する

Tiny Core Linux はフットプリントが非常に小さい Linux ディストリビューションで、Cisco VIRL のような仮想化された検証環境内で複数インスタンスを立ち上げても軽快に動作する、という特徴があります。用途に応じて幾つかの種類があります。参考として記載したサイズは 6.3 用 ISO イメージのサイズです。

  1. Core
    • 9MB 程度。CLI だけの、最小環境での利用を想定。
  2. TinyCore
    • 15MB 程度。GUI(X)を含む。
  3. CorePlus
    • 84MB 程度。TinyCore に様々なパッケージを追加している。

追加パッケージも数多く提供されているので Core をベースにパッケージを追加し、カスタマイズしていくのも簡単です。今回は Core を VIRL に登録してみます。

JSON や XML を整形して表示する

JSON や XML を整形して表示出来るツールをまとめます。

  • JSON の整形
    1. Python の標準ライブラリを使う
    2. 軽量 JSON パーサー「jq」を使う
  • XML の整形
    1. xmllint を使う
    2. tidy を使う
    3. xmlstarlet を使う

ユーザ名の入力だけでコンソール / SSH ログイン出来るようにする

頻繁にログイン・ログアウトを繰り返す検証環境ではログインの手間を省く為に以下のような工夫が出来ると思います。

  1. 鍵交換方式にしてパスワード不要でログイン出来るようにする
  2. expect や TeraTerm マクロ等で、自動ログインスクリプトを作成する
  3. sshpass を使って対話的なパスワード入力を省略する
  4. (パスワードを入力せずに)ユーザ名だけでコンソールや SSH ログイン出来るようにする

今回は 4 の「ユーザ名だけでコンソールや SSH ログイン出来るように」設定してみます。セキュリティの観点からは極めて脆弱になりますので、よく危険性を理解した上で、利用する必要があります。